diff options
| author | Adam Soltys <[email protected]> | 2023-12-06 20:33:45 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-12-06 20:33:45 -0800 |
| commit | 6b3ff247e4125941a611369ed9bb74a2ffca57d8 (patch) | |
| tree | 91da939350398188834e5e002bc78011a2a8e5bf /static | |
| parent | bb59ac3e4e7fcbf7f8a48820eab0ee21558183fc (diff) | |
| parent | d69c34cf389639eac82d24d1f1b02f038ef42399 (diff) | |
| download | coinos-ui-6b3ff247e4125941a611369ed9bb74a2ffca57d8.tar.gz coinos-ui-6b3ff247e4125941a611369ed9bb74a2ffca57d8.zip | |
Merge branch 'master' into swapee
Diffstat (limited to 'static')
31 files changed, 3083 insertions, 2786 deletions
diff --git a/static/icons/about.svg b/static/icons/about.svg new file mode 100644 index 00000000..3222097f --- /dev/null +++ b/static/icons/about.svg @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <title>about</title> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="about-white" fill="#000000" transform="translate(42.666667, 42.666667)"> + <path d="M213.333333,3.55271368e-14 C95.51296,3.55271368e-14 3.55271368e-14,95.51168 3.55271368e-14,213.333333 C3.55271368e-14,331.153707 95.51296,426.666667 213.333333,426.666667 C331.154987,426.666667 426.666667,331.153707 426.666667,213.333333 C426.666667,95.51168 331.154987,3.55271368e-14 213.333333,3.55271368e-14 Z M213.333333,384 C119.227947,384 42.6666667,307.43872 42.6666667,213.333333 C42.6666667,119.227947 119.227947,42.6666667 213.333333,42.6666667 C307.44,42.6666667 384,119.227947 384,213.333333 C384,307.43872 307.44,384 213.333333,384 Z M240.04672,128 C240.04672,143.46752 228.785067,154.666667 213.55008,154.666667 C197.698773,154.666667 186.713387,143.46752 186.713387,127.704107 C186.713387,112.5536 197.99616,101.333333 213.55008,101.333333 C228.785067,101.333333 240.04672,112.5536 240.04672,128 Z M192.04672,192 L234.713387,192 L234.713387,320 L192.04672,320 L192.04672,192 Z" id="Shape"> + +</path> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/static/icons/book.svg b/static/icons/book.svg new file mode 100644 index 00000000..4d7b091d --- /dev/null +++ b/static/icons/book.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M12 10.4V20M12 10.4C12 8.15979 12 7.03969 11.564 6.18404C11.1805 5.43139 10.5686 4.81947 9.81596 4.43597C8.96031 4 7.84021 4 5.6 4H4.6C4.03995 4 3.75992 4 3.54601 4.10899C3.35785 4.20487 3.20487 4.35785 3.10899 4.54601C3 4.75992 3 5.03995 3 5.6V16.4C3 16.9601 3 17.2401 3.10899 17.454C3.20487 17.6422 3.35785 17.7951 3.54601 17.891C3.75992 18 4.03995 18 4.6 18H7.54668C8.08687 18 8.35696 18 8.61814 18.0466C8.84995 18.0879 9.0761 18.1563 9.29191 18.2506C9.53504 18.3567 9.75977 18.5065 10.2092 18.8062L12 20M12 10.4C12 8.15979 12 7.03969 12.436 6.18404C12.8195 5.43139 13.4314 4.81947 14.184 4.43597C15.0397 4 16.1598 4 18.4 4H19.4C19.9601 4 20.2401 4 20.454 4.10899C20.6422 4.20487 20.7951 4.35785 20.891 4.54601C21 4.75992 21 5.03995 21 5.6V16.4C21 16.9601 21 17.2401 20.891 17.454C20.7951 17.6422 20.6422 17.7951 20.454 17.891C20.2401 18 19.9601 18 19.4 18H16.4533C15.9131 18 15.643 18 15.3819 18.0466C15.15 18.0879 14.9239 18.1563 14.7081 18.2506C14.465 18.3567 14.2402 18.5065 13.7908 18.8062L12 20" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</svg>
\ No newline at end of file diff --git a/static/icons/camera.svg b/static/icons/camera.svg index b615c7b5..3568ed14 100644 --- a/static/icons/camera.svg +++ b/static/icons/camera.svg @@ -1,49 +1,5 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 490 490" style="enable-background:new 0 0 490 490;" xml:space="preserve"> -<g> - <g> - <g> - <path d="M295,160c-74.439,0-135,60.561-135,135s60.561,135,135,135s135-60.561,135-135S369.439,160,295,160z M295,400 - c-57.897,0-105-47.103-105-105c0-57.897,47.103-105,105-105c57.897,0,105,47.103,105,105C400,352.897,352.897,400,295,400z"/> - <path d="M295,235c-33.084,0-60,26.916-60,60s26.916,60,60,60s60-26.916,60-60S328.084,235,295,235z M295,325 - c-16.542,0-30-13.458-30-30s13.458-30,30-30s30,13.458,30,30S311.542,325,295,325z"/> - <path d="M425,100h-0.076l-42.5-100H207.577l-42.5,100H65c-35.841,0-65,29.159-65,65v260c0,35.841,29.159,65,65,65h360 - c35.841,0,65-29.159,65-65V165C490,129.159,460.841,100,425,100z M227.423,30h135.153l29.75,70H197.674L227.423,30z M100,460H65 - c-19.299,0-35-15.701-35-35V190h70V460z M100,160H30.363c2.434-16.938,17.036-30,34.637-30h35V160z M460,425 - c0,19.299-15.701,35-35,35H130V130h295c19.299,0,35,15.701,35,35V425z"/> - </g> - </g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M12 16C13.6569 16 15 14.6569 15 13C15 11.3431 13.6569 10 12 10C10.3431 10 9 11.3431 9 13C9 14.6569 10.3431 16 12 16Z" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M3 16.8V9.2C3 8.0799 3 7.51984 3.21799 7.09202C3.40973 6.71569 3.71569 6.40973 4.09202 6.21799C4.51984 6 5.0799 6 6.2 6H7.25464C7.37758 6 7.43905 6 7.49576 5.9935C7.79166 5.95961 8.05705 5.79559 8.21969 5.54609C8.25086 5.49827 8.27836 5.44328 8.33333 5.33333C8.44329 5.11342 8.49827 5.00346 8.56062 4.90782C8.8859 4.40882 9.41668 4.08078 10.0085 4.01299C10.1219 4 10.2448 4 10.4907 4H13.5093C13.7552 4 13.8781 4 13.9915 4.01299C14.5833 4.08078 15.1141 4.40882 15.4394 4.90782C15.5017 5.00345 15.5567 5.11345 15.6667 5.33333C15.7216 5.44329 15.7491 5.49827 15.7803 5.54609C15.943 5.79559 16.2083 5.95961 16.5042 5.9935C16.561 6 16.6224 6 16.7454 6H17.8C18.9201 6 19.4802 6 19.908 6.21799C20.2843 6.40973 20.5903 6.71569 20.782 7.09202C21 7.51984 21 8.0799 21 9.2V16.8C21 17.9201 21 18.4802 20.782 18.908C20.5903 19.2843 20.2843 19.5903 19.908 19.782C19.4802 20 18.9201 20 17.8 20H6.2C5.0799 20 4.51984 20 4.09202 19.782C3.71569 19.5903 3.40973 19.2843 3.21799 18.908C3 18.4802 3 17.9201 3 16.8Z" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</svg>
\ No newline at end of file diff --git a/static/icons/clock.svg b/static/icons/clock.svg index 9ea9d1f3..c91ef3dd 100644 --- a/static/icons/clock.svg +++ b/static/icons/clock.svg @@ -1,3 +1,4 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M12 8V12L15 15M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M12 7V12L14.5 10.5M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> </svg> diff --git a/static/icons/full.svg b/static/icons/full.svg new file mode 100644 index 00000000..db8c33e9 --- /dev/null +++ b/static/icons/full.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M23 4C23 2.34315 21.6569 1 20 1H16C15.4477 1 15 1.44772 15 2C15 2.55228 15.4477 3 16 3H20C20.5523 3 21 3.44772 21 4V8C21 8.55228 21.4477 9 22 9C22.5523 9 23 8.55228 23 8V4Z" fill="#0F0F0F"/> +<path d="M23 16C23 15.4477 22.5523 15 22 15C21.4477 15 21 15.4477 21 16V20C21 20.5523 20.5523 21 20 21H16C15.4477 21 15 21.4477 15 22C15 22.5523 15.4477 23 16 23H20C21.6569 23 23 21.6569 23 20V16Z" fill="#0F0F0F"/> +<path d="M4 21H8C8.55228 21 9 21.4477 9 22C9 22.5523 8.55228 23 8 23H4C2.34315 23 1 21.6569 1 20V16C1 15.4477 1.44772 15 2 15C2.55228 15 3 15.4477 3 16V20C3 20.5523 3.44772 21 4 21Z" fill="#0F0F0F"/> +<path d="M1 8C1 8.55228 1.44772 9 2 9C2.55228 9 3 8.55228 3 8L3 4C3 3.44772 3.44772 3 4 3H8C8.55228 3 9 2.55228 9 2C9 1.44772 8.55228 1 8 1H4C2.34315 1 1 2.34315 1 4V8Z" fill="#0F0F0F"/> +</svg>
\ No newline at end of file diff --git a/static/icons/fund.svg b/static/icons/fund.svg new file mode 100644 index 00000000..0ffd17cd --- /dev/null +++ b/static/icons/fund.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M4.99993 13C4.99993 9.68629 7.68622 7 10.9999 7M4.99993 13C4.99993 14.6484 5.66466 16.1415 6.74067 17.226C6.84445 17.3305 6.89633 17.3828 6.92696 17.4331C6.95619 17.4811 6.9732 17.5224 6.98625 17.5771C6.99993 17.6343 6.99993 17.6995 6.99993 17.8298V20.2C6.99993 20.48 6.99993 20.62 7.05443 20.727C7.10236 20.8211 7.17885 20.8976 7.27293 20.9455C7.37989 21 7.5199 21 7.79993 21H9.69993C9.97996 21 10.12 21 10.2269 20.9455C10.321 20.8976 10.3975 20.8211 10.4454 20.727C10.4999 20.62 10.4999 20.48 10.4999 20.2V19.8C10.4999 19.52 10.4999 19.38 10.5544 19.273C10.6024 19.1789 10.6789 19.1024 10.7729 19.0545C10.8799 19 11.0199 19 11.2999 19H12.6999C12.98 19 13.12 19 13.2269 19.0545C13.321 19.1024 13.3975 19.1789 13.4454 19.273C13.4999 19.38 13.4999 19.52 13.4999 19.8V20.2C13.4999 20.48 13.4999 20.62 13.5544 20.727C13.6024 20.8211 13.6789 20.8976 13.7729 20.9455C13.8799 21 14.0199 21 14.2999 21H16.2C16.48 21 16.62 21 16.727 20.9455C16.8211 20.8976 16.8976 20.8211 16.9455 20.727C17 20.62 17 20.48 17 20.2V19.2243C17 19.0223 17 18.9212 17.0288 18.8401C17.0563 18.7624 17.0911 18.708 17.15 18.6502C17.2114 18.59 17.3155 18.5417 17.5237 18.445C18.5059 17.989 19.344 17.2751 19.9511 16.3902C20.0579 16.2346 20.1112 16.1568 20.1683 16.1108C20.2228 16.0668 20.2717 16.0411 20.3387 16.021C20.4089 16 20.4922 16 20.6587 16H21.2C21.48 16 21.62 16 21.727 15.9455C21.8211 15.8976 21.8976 15.8211 21.9455 15.727C22 15.62 22 15.48 22 15.2V11.7857C22 11.5192 22 11.3859 21.9505 11.283C21.9013 11.181 21.819 11.0987 21.717 11.0495C21.6141 11 21.4808 11 21.2143 11C21.0213 11 20.9248 11 20.8471 10.9738C20.7633 10.9456 20.7045 10.908 20.6437 10.8438C20.5874 10.7842 20.5413 10.6846 20.4493 10.4855C20.1538 9.84622 19.7492 9.26777 19.2593 8.77404C19.1555 8.66945 19.1036 8.61716 19.073 8.56687C19.0437 8.51889 19.0267 8.47759 19.0137 8.42294C19 8.36567 19 8.30051 19 8.17018V7.06058C19 6.70053 19 6.52051 18.925 6.39951C18.8593 6.29351 18.7564 6.21588 18.6365 6.18184C18.4995 6.14299 18.3264 6.19245 17.9802 6.29136L15.6077 6.96922C15.5673 6.98074 15.5472 6.9865 15.5267 6.99054C15.5085 6.99414 15.4901 6.99671 15.4716 6.99826C15.4508 7 15.4297 7 15.3874 7H10.9999M4.99993 13H4C2.89543 13 2 12.1046 2 11C2 10.2597 2.4022 9.61337 3 9.26756M10.9999 7H14.9646C14.9879 6.8367 15 6.66976 15 6.5C15 4.567 13.433 3 11.5 3C9.567 3 8 4.567 8 6.5C8 6.9172 8.073 7.31736 8.20692 7.68839C9.04114 7.24881 9.99144 7 10.9999 7Z" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</svg>
\ No newline at end of file diff --git a/static/icons/funds.svg b/static/icons/funds.svg new file mode 100644 index 00000000..f3d0c5a0 --- /dev/null +++ b/static/icons/funds.svg @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg version="1.1" id="_x32_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" + width="800px" height="800px" viewBox="0 0 512 512" xml:space="preserve"> +<style type="text/css"> +<![CDATA[ + .st0{fill:#000000;} +]]> +</style> +<g> + <path class="st0" d="M274.179,250.036c-1.563-1.188-3.563-2.109-6.016-2.75s-5.422-0.953-8.891-0.953h-16.297v28.969h16.375 + c3.656,0,6.75-0.422,9.219-1.234s4.453-1.906,5.953-3.281c1.5-1.359,2.563-2.953,3.234-4.781c0.656-1.813,0.984-3.75,0.984-5.813 + c0-2.125-0.359-4.063-1.094-5.781C276.913,252.739,275.772,251.27,274.179,250.036z"/> + <path class="st0" d="M269.241,217.77c3.484-2.281,5.219-5.906,5.219-10.859c0-5.156-1.563-8.828-4.703-11 + c-3.141-2.188-8.031-3.297-14.688-3.297h-12.656v28.578h11.531C260.663,221.192,265.757,220.051,269.241,217.77z"/> + <path class="st0" d="M485.304,184.395c-28.297-5.25-48.703-18.906-72.391-36.531c5.156-31.578,29.156-53.203,12.359-69.984 + c-13.781-13.781-63.375-3.781-76.578,25.031c-7.5-4.516-15.484-9.078-24.141-13.609C235.6,42.708,129.631,72.551,83.6,146.895 + c-9.844-3.141-19.188-7.813-25.906-13.375c-0.266-0.219-0.516-0.453-0.781-0.672c4.375-1.063,8.469-2.781,12.141-5.016 + c6.313-3.844,11.469-9.109,14.781-15.344c2.172-4.156,3.531-8.797,3.531-13.656c0-1.531-0.141-3.063-0.406-4.594 + c-0.609-3.313-1.859-6.375-3.594-9.031c-1.719-2.641-3.906-4.875-6.344-6.688c-4.891-3.609-10.844-5.516-16.969-5.531 + c-5.594,0-11.406,1.656-16.422,5.281s-9.047,9.172-11.313,16.156c-1.531,4.688-2.328,9.984-2.344,15.969 + c0,0.219,0.016,0.453,0.016,0.688c-2.375-2.109-4.766-4.781-7.063-8.203c-2.656-3.922-5.188-8.813-7.438-14.797 + c-1.563-4.141-6.172-6.234-10.313-4.672c-4.125,1.563-6.219,6.172-4.656,10.297c3.953,10.484,8.875,18.781,14.547,25.078 + c5.672,6.313,12.141,10.609,18.797,12.969c0.563,0.203,1.141,0.344,1.703,0.516c0.328,0.547,0.656,1.109,1.016,1.641 + c3.547,5.406,8.234,10.031,13.531,14c7.578,5.641,16.438,9.984,25.656,13.219c-2.75,5.703-5.172,11.641-7.219,17.781 + c-14.984,44.703-10.75,96.719,13.859,139.531l59.734,119.062c2.297,4.609,7.016,7.5,12.156,7.5H190.1 + c7.516,0,13.609-6.094,13.609-13.609V385.02h113.594v46.375c0,7.516,6.094,13.609,13.609,13.609h34.25 + c5.938,0,11.172-3.828,12.984-9.469l22.969-72.062c22.844-12.844,50.391-42.875,63.875-50.344 + c9.484-5.25,36.281-20.734,36.281-20.734l9.5-75.172C515.101,194.77,508.257,188.676,485.304,184.395z M47.209,118.051 + c-0.156,0-0.313-0.016-0.469-0.016c-0.313-1.203-0.516-2.438-0.609-3.703c-0.094-1.375-0.141-2.703-0.141-3.938 + c0-5.109,0.766-9.047,1.891-11.984c1.125-2.953,2.563-4.938,4.094-6.328c1.031-0.922,2.125-1.609,3.25-2.109 + c1.516-0.656,3.156-0.984,4.828-0.984c2.031,0,4.109,0.516,5.844,1.406c1.75,0.891,3.141,2.141,4.063,3.547 + c0.609,0.938,1.031,1.969,1.25,3.172c0.094,0.547,0.156,1.125,0.156,1.719c0,1.406-0.297,2.938-0.938,4.563 + s-1.641,3.328-2.953,4.938c-2.609,3.266-6.516,6.188-10.938,7.906C53.584,117.411,50.428,118.051,47.209,118.051z M147.069,151.02 + c-7.641,6.344-16.563,17.594-23.531,31.281c-7.016,13.719-12.188,29.891-13.375,46.281c-0.438,6.016-5.672,10.547-11.688,10.094 + c-6.031-0.438-10.547-5.672-10.125-11.688c1.469-19.875,7.563-38.641,15.719-54.625c8.203-16,18.375-29.203,28.984-38.125 + c4.641-3.859,11.531-3.25,15.406,1.391C152.319,140.27,151.709,147.161,147.069,151.02z M188.928,118.629 + c-3.797,1.859-7.234,4.078-9.688,6.094c-4.672,3.828-11.547,3.156-15.391-1.5s-3.172-11.547,1.484-15.375 + c4.078-3.359,8.797-6.297,13.906-8.813c5.406-2.688,11.969-0.469,14.641,4.953S194.334,115.958,188.928,118.629z M312.054,275.645 + c-2.234,4.609-5.469,8.609-9.75,11.953c-4.25,3.344-7.891,5.953-14.141,7.859c-4.938,1.484-11.109,2.391-16.891,2.688v17.438 + h-15.594v-17.281h-14.125v17.281h-15.594v-17.281h-12.375h-16v-15.813c0-3.078-0.234-4.938,2.953-5.578 + c0.297-0.031,0.688-0.109,1.203-0.203c0.531-0.078,6.766-0.453,8.156-0.453c2.516,0,3.688-2.391,3.688-4.766v-76.891 + c0-2.906-1.547-4.016-3.688-4.328c-1.375-0.188-7.625-0.391-8.156-0.469c-0.516-0.094-0.922-0.156-1.203-0.203 + c-3.188-0.641-2.953-2.5-2.953-5.563v-14.156h16h12.375v-17.734h15.594v17.766l14.125,0.031v-17.797h15.594v18.063 + c8.422,0.703,18.813,3.359,25.969,8.906c4,3.094,7.109,6.531,9.031,10.734c1.906,4.203,2.859,8.953,2.859,14.219 + c0,3.016-0.484,5.891-1.438,8.656c-0.953,2.75-2.438,5.313-4.438,7.719s-8.703,9.172-14.719,11.516 + c18.313,3.172,26.859,13.484,26.859,28.594C315.397,265.989,314.288,271.036,312.054,275.645z M393.351,233.52 + c-9.391,0-17-7.625-17-17.016s7.609-17.016,17-17.016c9.406,0,17.016,7.625,17.016,17.016S402.757,233.52,393.351,233.52z"/> +</g> +</svg>
\ No newline at end of file diff --git a/static/icons/home.svg b/static/icons/home.svg index 2aa2cbed..c3482cdd 100644 --- a/static/icons/home.svg +++ b/static/icons/home.svg @@ -1,42 +1,4 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 489.075 489.075" style="enable-background:new 0 0 489.075 489.075;" xml:space="preserve"> -<g> - <path d="M482.453,220.775l-115.5-111.2v-88.5c0-11.4-9.4-20.8-20.8-20.8s-20.8,9.4-20.8,20.8v48.5l-66.6-64.1 - c-7.3-7.3-19.8-7.3-28.1,0l-223.6,215.3c-8.3,8.3-9.4,20.8-1,29.1c8.4,8.3,20.8,9.4,29.1,1l3.1-3v220.4c0,11.4,9.4,20.8,20.8,20.8 - h372.4c11.4,0,19.8-9.4,20.8-19.8v-219.3l2.1,2c15.2,10.5,26,3.1,29.1-2.1C490.753,241.575,490.753,228.075,482.453,220.775z - M281.653,448.575h-72.8v-111.3h72.8V448.575z M410.653,448.575h-88.4v-132.1c0-11.4-9.4-20.8-20.8-20.8h-113.4 - c-11.4,0-20.8,9.4-20.8,20.8v132.1h-87.4v-203.9h330.8V448.575L410.653,448.575z M83.853,204.175l161.4-155l159.8,155H83.853z"/> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -<g> -</g> -</svg> +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M11.3103 1.77586C11.6966 1.40805 12.3034 1.40805 12.6897 1.77586L20.6897 9.39491L23.1897 11.7759C23.5896 12.1567 23.605 12.7897 23.2241 13.1897C22.8433 13.5896 22.2103 13.605 21.8103 13.2241L21 12.4524V20C21 21.1046 20.1046 22 19 22H14H10H5C3.89543 22 3 21.1046 3 20V12.4524L2.18966 13.2241C1.78972 13.605 1.15675 13.5896 0.775862 13.1897C0.394976 12.7897 0.410414 12.1567 0.810345 11.7759L3.31034 9.39491L11.3103 1.77586ZM5 10.5476V20H9V15C9 13.3431 10.3431 12 12 12C13.6569 12 15 13.3431 15 15V20H19V10.5476L12 3.88095L5 10.5476ZM13 20V15C13 14.4477 12.5523 14 12 14C11.4477 14 11 14.4477 11 15V20H13Z" fill="#000000"/> +</svg>
\ No newline at end of file diff --git a/static/icons/message.svg b/static/icons/message.svg new file mode 100644 index 00000000..47b935b5 --- /dev/null +++ b/static/icons/message.svg @@ -0,0 +1,3 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M7 8H17M7 12H11M12 20L8 16H5C3.89543 16 3 15.1046 3 14V6C3 4.89543 3.89543 4 5 4H19C20.1046 4 21 4.89543 21 6V14C21 15.1046 20.1046 16 19 16H16L12 20Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</svg> diff --git a/static/icons/orangeclock.svg b/static/icons/orangeclock.svg new file mode 100644 index 00000000..2b07c198 --- /dev/null +++ b/static/icons/orangeclock.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M12 7V12L14.5 10.5M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="#FF9900" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> +</svg> diff --git a/static/icons/pause.svg b/static/icons/pause.svg new file mode 100644 index 00000000..81f4ea44 --- /dev/null +++ b/static/icons/pause.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="M120.16 45A20.162 20.162 0 0 0 100 65.16v381.68A20.162 20.162 0 0 0 120.16 467h65.68A20.162 20.162 0 0 0 206 446.84V65.16A20.162 20.162 0 0 0 185.84 45h-65.68zm206 0A20.162 20.162 0 0 0 306 65.16v381.68A20.162 20.162 0 0 0 326.16 467h65.68A20.162 20.162 0 0 0 412 446.84V65.16A20.162 20.162 0 0 0 391.84 45h-65.68z"/></svg>
\ No newline at end of file diff --git a/static/icons/play.svg b/static/icons/play.svg new file mode 100644 index 00000000..144f8219 --- /dev/null +++ b/static/icons/play.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="-3 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> + + <title>play</title> + <desc>Created with Sketch Beta.</desc> + <defs> + +</defs> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> + <g id="Icon-Set-Filled" sketch:type="MSLayerGroup" transform="translate(-419.000000, -571.000000)" fill="#000000"> + <path d="M440.415,583.554 L421.418,571.311 C420.291,570.704 419,570.767 419,572.946 L419,597.054 C419,599.046 420.385,599.36 421.418,598.689 L440.415,586.446 C441.197,585.647 441.197,584.353 440.415,583.554" id="play" sketch:type="MSShapeGroup"> + +</path> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/static/icons/printer.svg b/static/icons/printer.svg new file mode 100644 index 00000000..1544a833 --- /dev/null +++ b/static/icons/printer.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg fill="#000000" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" + viewBox="0 0 512 512" xml:space="preserve"> +<g> + <g> + <path d="M457.246,228.442h-38.074V57.469c0-12.015-9.741-21.933-21.756-21.933H116.034c-12.015,0-21.756,9.918-21.756,21.933 + v170.973H56.204C25.613,228.442,0,253.507,0,284.098v170.434c0,12.015,10.466,21.933,22.482,21.933h468.487 + c12.015,0,21.031-9.918,21.031-21.933V284.098C512,253.507,487.837,228.442,457.246,228.442z M137.79,79.048h237.87v149.394 + H137.79V79.048z M468.487,432.952H43.513V284.098c0-6.598,6.093-12.143,12.691-12.143h401.042c6.598,0,11.241,5.545,11.241,12.143 + V432.952z"/> + </g> +</g> +<g> + <g> + <path d="M397.416,353.178H116.034c-12.015,0-21.756,9.741-21.756,21.756s9.741,21.756,21.756,21.756h281.382 + c12.015,0,21.756-9.741,21.756-21.756S409.432,353.178,397.416,353.178z"/> + </g> +</g> +<g> + <g> + <path d="M89.926,292.261H76.872c-12.015,0-21.756,9.741-21.756,21.756s9.741,21.756,21.756,21.756h13.054 + c12.015,0,21.756-9.741,21.756-21.756S101.942,292.261,89.926,292.261z"/> + </g> +</g> +<g> + <g> + <path d="M336.499,105.156H176.952c-12.015,0-21.756,9.741-21.756,21.756s9.741,21.756,21.756,21.756h159.547 + c12.015,0,21.756-9.741,21.756-21.756S348.514,105.156,336.499,105.156z"/> + </g> +</g> +<g> + <g> + <path d="M336.499,160.272H176.952c-12.015,0-21.756,9.741-21.756,21.756s9.741,21.756,21.756,21.756h159.547 + c12.015,0,21.756-9.741,21.756-21.756S348.514,160.272,336.499,160.272z"/> + </g> +</g> +</svg>
\ No newline at end of file diff --git a/static/icons/random.svg b/static/icons/random.svg new file mode 100644 index 00000000..f3e59233 --- /dev/null +++ b/static/icons/random.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg"> +<title>perspective-dice-random</title> +<path d="M15.676 17.312h0.048c-0.114-0.273-0.263-0.539-0.436-0.78l-11.114-6.346c-0.37 0.13-0.607 0.519-0.607 1.109v9.84c0 1.034 0.726 2.291 1.621 2.808l9.168 5.294c0.544 0.314 1.026 0.282 1.32-0.023v-11.902h-0zM10.049 24.234l-1.83-1.057v-1.918l1.83 1.057v1.918zM11.605 19.993c-0.132 0.2-0.357 0.369-0.674 0.505l-0.324 0.12c-0.23 0.090-0.38 0.183-0.451 0.278-0.071 0.092-0.106 0.219-0.106 0.38v0.242l-1.83-1.056v-0.264c0-0.294 0.056-0.523 0.167-0.685 0.111-0.165 0.346-0.321 0.705-0.466l0.324-0.125c0.193-0.076 0.333-0.171 0.421-0.285 0.091-0.113 0.137-0.251 0.137-0.417 0-0.251-0.081-0.494-0.243-0.728-0.162-0.237-0.389-0.44-0.679-0.608-0.274-0.158-0.569-0.268-0.887-0.329-0.318-0.065-0.649-0.078-0.994-0.040v-1.691c0.409 0.085 0.782 0.19 1.12 0.313s0.664 0.276 0.978 0.457c0.825 0.476 1.453 1.019 1.886 1.627 0.433 0.605 0.649 1.251 0.649 1.937 0 0.352-0.066 0.63-0.198 0.834zM27.111 8.247l-9.531-5.514c-0.895-0.518-2.346-0.518-3.241 0l-9.531 5.514c-0.763 0.442-0.875 1.117-0.336 1.628l10.578 6.040c0.583 0.146 1.25 0.145 1.832-0.003l10.589-6.060c0.512-0.508 0.392-1.17-0.36-1.605zM16.305 10.417l-0.23-0.129c-0.257-0.144-0.421-0.307-0.492-0.488-0.074-0.183-0.062-0.474 0.037-0.874l0.095-0.359c0.055-0.214 0.061-0.389 0.016-0.525-0.041-0.139-0.133-0.248-0.277-0.329-0.219-0.123-0.482-0.167-0.788-0.133-0.309 0.033-0.628 0.141-0.958 0.326-0.31 0.174-0.592 0.391-0.846 0.653-0.257 0.26-0.477 0.557-0.661 0.892l-1.476-0.827c0.332-0.333 0.658-0.625 0.978-0.875s0.659-0.474 1.015-0.674c0.934-0.524 1.803-0.835 2.607-0.934 0.8-0.101 1.5 0.016 2.098 0.352 0.307 0.172 0.508 0.368 0.603 0.589 0.092 0.219 0.097 0.507 0.016 0.865l-0.1 0.356c-0.066 0.255-0.080 0.438-0.041 0.55 0.035 0.11 0.124 0.205 0.265 0.284l0.212 0.118-2.074 1.162zM18.674 11.744l-1.673-0.937 2.074-1.162 1.673 0.937-2.074 1.162zM27.747 10.174l-11.060 6.329c-0.183 0.25-0.34 0.527-0.459 0.813v11.84c0.287 0.358 0.793 0.414 1.37 0.081l9.168-5.294c0.895-0.517 1.621-1.774 1.621-2.808v-9.84c0-0.608-0.251-1.003-0.641-1.121zM23.147 23.68l-1.83 1.056v-1.918l1.83-1.057v1.918zM24.703 17.643c-0.132 0.353-0.357 0.78-0.674 1.284l-0.324 0.494c-0.23 0.355-0.38 0.622-0.451 0.799-0.071 0.174-0.106 0.342-0.106 0.503v0.242l-1.83 1.056v-0.264c0-0.294 0.056-0.587 0.167-0.878 0.111-0.294 0.346-0.721 0.705-1.279l0.324-0.5c0.193-0.298 0.333-0.555 0.421-0.771 0.091-0.218 0.137-0.409 0.137-0.575 0-0.251-0.081-0.4-0.243-0.447-0.162-0.050-0.389 0.009-0.679 0.177-0.274 0.158-0.569 0.39-0.887 0.695-0.318 0.302-0.649 0.671-0.994 1.107v-1.692c0.409-0.387 0.782-0.714 1.12-0.981s0.664-0.491 0.978-0.673c0.825-0.476 1.453-0.659 1.886-0.55 0.433 0.106 0.649 0.502 0.649 1.188 0 0.352-0.066 0.706-0.198 1.062z"></path> +</svg>
\ No newline at end of file diff --git a/static/icons/receive.svg b/static/icons/receive.svg new file mode 100644 index 00000000..143ae144 --- /dev/null +++ b/static/icons/receive.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" > +
<path d="M0 0h48v48H0z" fill="none"/>
+<g id="Shopicon">
+ <path d="M25.662,19.651C26.402,19.877,27.187,20,28,20c4.418,0,8-3.582,8-8s-3.582-8-8-8c-2.212,0-4.214,0.898-5.662,2.349
+ C21.598,6.123,20.814,6,20,6c-4.418,0-8,3.582-8,8s3.582,8,8,8C22.212,22,24.214,21.102,25.662,19.651z M28,8c2.206,0,4,1.794,4,4
+ s-1.794,4-4,4c-2.206,0-4-1.794-4-4S25.795,8,28,8z M16,14c0-2.206,1.794-4,4-4c0.088,0,0.169,0.02,0.256,0.026
+ C20.095,10.658,20,11.317,20,12c0,2.079,0.8,3.967,2.1,5.389C21.488,17.77,20.773,18,20,18C17.795,18,16,16.206,16,14z"/>
+ <path d="M30,24c-5.952,0-10.813,1.913-12.9,4.777c-1.05-0.914-1.862-1.813-2.3-2.379c-1.986-2.643-5.754-3.181-8.4-1.198
+ c-2.646,1.984-3.185,5.753-1.199,8.4C5.519,34.025,13.131,44,24,44h20V32C44,27.439,37.981,24,30,24z M8.4,31.2
+ c-0.662-0.882-0.482-2.139,0.397-2.8c0.36-0.27,0.783-0.399,1.201-0.399c0.608,0,1.207,0.274,1.596,0.791
+ C11.647,28.864,17.026,36,24,36h8v-2l0,0v-2h-8c-1.229,0-2.46-0.385-3.61-0.962C21.518,29.573,25.025,28,30,28
+ c6.104,0,10,2.369,10,4v8h-2H24C15.107,40,8.669,31.559,8.4,31.2z"/>
+</g>
+</svg>
\ No newline at end of file diff --git a/static/icons/refresh.svg b/static/icons/refresh.svg new file mode 100644 index 00000000..061c5ab1 --- /dev/null +++ b/static/icons/refresh.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M21 12C21 16.9706 16.9706 21 12 21C9.69494 21 7.59227 20.1334 6 18.7083L3 16M3 12C3 7.02944 7.02944 3 12 3C14.3051 3 16.4077 3.86656 18 5.29168L21 8M3 21V16M3 16H8M21 3V8M21 8H16" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</svg>
\ No newline at end of file diff --git a/static/icons/shop.svg b/static/icons/shop.svg new file mode 100644 index 00000000..15b2918c --- /dev/null +++ b/static/icons/shop.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" ?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg fill="#000000" width="800px" height="800px" viewBox="0 0 200 200" data-name="Layer 1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"><title/><path d="M181.75,42.5c-3-13-15-22.5-29-22.5h-105a30.6,30.6,0,0,0-29.5,22.5l-10.5,40c-2,7,1,14,7,18l2,1.5c3,1.5,5.5,3,8.5,3.5V160a20.06,20.06,0,0,0,20,20h23.5a20.06,20.06,0,0,0,20-20V140h27.5v20a20.06,20.06,0,0,0,20,20h19a20.06,20.06,0,0,0,20-20V105.5a22.09,22.09,0,0,0,8-3l2-1.5a16.87,16.87,0,0,0,7-18.5ZM156.25,160h-20V140a20.06,20.06,0,0,0-20-20H88.75a20.06,20.06,0,0,0-20,20v20H45.25V100c6.5-2.5,13.5-1.5,19.5,2a21.07,21.07,0,0,0,24,0,21.07,21.07,0,0,1,24,0,21.07,21.07,0,0,0,24,0,20.87,20.87,0,0,1,19.5-2Zm14.5-74.5a40.69,40.69,0,0,0-46,0,.94.94,0,0,1-1.5,0,40.69,40.69,0,0,0-46,0,.94.94,0,0,1-1.5,0,40.69,40.69,0,0,0-46,0,.94.94,0,0,1-1.5,0l9.5-38c1-4.5,5-7.5,10-7.5h105.5a9.64,9.64,0,0,1,9.5,7.5l9.5,38S171.25,86,170.75,85.5Z"/></svg>
\ No newline at end of file diff --git a/static/icons/stats.svg b/static/icons/stats.svg new file mode 100644 index 00000000..4f1b709e --- /dev/null +++ b/static/icons/stats.svg @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <title>contact-details-filled</title> + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="icon" fill="#000000" transform="translate(42.666667, 85.333333)"> + <path d="M426.666667,1.42108547e-14 L426.666667,341.333333 L3.55271368e-14,341.333333 L3.55271368e-14,1.42108547e-14 L426.666667,1.42108547e-14 Z M362.666667,213.333333 L234.666667,213.333333 L234.666667,245.333333 L362.666667,245.333333 L362.666667,213.333333 Z M125.333333,155.733333 L109.333333,155.733333 C78.4053873,155.733333 53.3333333,181.333333 53.3333333,213.333333 L53.3333333,213.333333 L181.333333,213.333333 C181.333333,181.333333 156.16,155.733333 125.333333,155.733333 L125.333333,155.733333 Z M362.666667,149.333333 L234.666667,149.333333 L234.666667,181.333333 L362.666667,181.333333 L362.666667,149.333333 Z M117.333333,78.62624 C101.86936,78.62624 89.3333333,91.162267 89.3333333,106.62624 C89.3333333,122.090213 101.86936,134.62624 117.333333,134.62624 C132.797306,134.62624 145.333333,122.090213 145.333333,106.62624 C145.333333,91.162267 132.797306,78.62624 117.333333,78.62624 Z M362.666667,85.3333333 L234.666667,85.3333333 L234.666667,117.333333 L362.666667,117.333333 L362.666667,85.3333333 Z" id="Combined-Shape"> + +</path> + </g> + </g> +</svg>
\ No newline at end of file diff --git a/static/icons/support.svg b/static/icons/support.svg index 47b935b5..f9265ed8 100644 --- a/static/icons/support.svg +++ b/static/icons/support.svg @@ -1,3 +1,2 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path d="M7 8H17M7 12H11M12 20L8 16H5C3.89543 16 3 15.1046 3 14V6C3 4.89543 3.89543 4 5 4H19C20.1046 4 21 4.89543 21 6V14C21 15.1046 20.1046 16 19 16H16L12 20Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> -</svg> +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg"><path fill="#000000" d="m759.936 805.248-90.944-91.008A254.912 254.912 0 0 1 512 768a254.912 254.912 0 0 1-156.992-53.76l-90.944 91.008A382.464 382.464 0 0 0 512 896c94.528 0 181.12-34.176 247.936-90.752zm45.312-45.312A382.464 382.464 0 0 0 896 512c0-94.528-34.176-181.12-90.752-247.936l-91.008 90.944C747.904 398.4 768 452.864 768 512c0 59.136-20.096 113.6-53.76 156.992l91.008 90.944zm-45.312-541.184A382.464 382.464 0 0 0 512 128c-94.528 0-181.12 34.176-247.936 90.752l90.944 91.008A254.912 254.912 0 0 1 512 256c59.136 0 113.6 20.096 156.992 53.76l90.944-91.008zm-541.184 45.312A382.464 382.464 0 0 0 128 512c0 94.528 34.176 181.12 90.752 247.936l91.008-90.944A254.912 254.912 0 0 1 256 512c0-59.136 20.096-113.6 53.76-156.992l-91.008-90.944zm417.28 394.496a194.56 194.56 0 0 0 22.528-22.528C686.912 602.56 704 559.232 704 512a191.232 191.232 0 0 0-67.968-146.56A191.296 191.296 0 0 0 512 320a191.232 191.232 0 0 0-146.56 67.968C337.088 421.44 320 464.768 320 512a191.232 191.232 0 0 0 67.968 146.56C421.44 686.912 464.768 704 512 704c47.296 0 90.56-17.088 124.032-45.44zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"/></svg>
\ No newline at end of file diff --git a/static/icons/upload.svg b/static/icons/upload.svg new file mode 100644 index 00000000..b11b621a --- /dev/null +++ b/static/icons/upload.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M12 10V16M12 10L10 12M12 10L14 12M12.0627 6.06274L11.9373 5.93726C11.5914 5.59135 11.4184 5.4184 11.2166 5.29472C11.0376 5.18506 10.8425 5.10425 10.6385 5.05526C10.4083 5 10.1637 5 9.67452 5H6.2C5.0799 5 4.51984 5 4.09202 5.21799C3.71569 5.40973 3.40973 5.71569 3.21799 6.09202C3 6.51984 3 7.07989 3 8.2V15.8C3 16.9201 3 17.4802 3.21799 17.908C3.40973 18.2843 3.71569 18.5903 4.09202 18.782C4.51984 19 5.07989 19 6.2 19H17.8C18.9201 19 19.4802 19 19.908 18.782C20.2843 18.5903 20.5903 18.2843 20.782 17.908C21 17.4802 21 16.9201 21 15.8V10.2C21 9.0799 21 8.51984 20.782 8.09202C20.5903 7.71569 20.2843 7.40973 19.908 7.21799C19.4802 7 18.9201 7 17.8 7H14.3255C13.8363 7 13.5917 7 13.3615 6.94474C13.1575 6.89575 12.9624 6.81494 12.7834 6.70528C12.5816 6.5816 12.4086 6.40865 12.0627 6.06274Z" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</svg>
\ No newline at end of file diff --git a/static/icons/warning.svg b/static/icons/warning.svg new file mode 100644 index 00000000..d4729f32 --- /dev/null +++ b/static/icons/warning.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg fill="#000000" height="800px" width="800px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" + viewBox="0 0 486.463 486.463" xml:space="preserve"> +<g> + <g> + <path d="M243.225,333.382c-13.6,0-25,11.4-25,25s11.4,25,25,25c13.1,0,25-11.4,24.4-24.4 + C268.225,344.682,256.925,333.382,243.225,333.382z"/> + <path d="M474.625,421.982c15.7-27.1,15.8-59.4,0.2-86.4l-156.6-271.2c-15.5-27.3-43.5-43.5-74.9-43.5s-59.4,16.3-74.9,43.4 + l-156.8,271.5c-15.6,27.3-15.5,59.8,0.3,86.9c15.6,26.8,43.5,42.9,74.7,42.9h312.8 + C430.725,465.582,458.825,449.282,474.625,421.982z M440.625,402.382c-8.7,15-24.1,23.9-41.3,23.9h-312.8 + c-17,0-32.3-8.7-40.8-23.4c-8.6-14.9-8.7-32.7-0.1-47.7l156.8-271.4c8.5-14.9,23.7-23.7,40.9-23.7c17.1,0,32.4,8.9,40.9,23.8 + l156.7,271.4C449.325,369.882,449.225,387.482,440.625,402.382z"/> + <path d="M237.025,157.882c-11.9,3.4-19.3,14.2-19.3,27.3c0.6,7.9,1.1,15.9,1.7,23.8c1.7,30.1,3.4,59.6,5.1,89.7 + c0.6,10.2,8.5,17.6,18.7,17.6c10.2,0,18.2-7.9,18.7-18.2c0-6.2,0-11.9,0.6-18.2c1.1-19.3,2.3-38.6,3.4-57.9 + c0.6-12.5,1.7-25,2.3-37.5c0-4.5-0.6-8.5-2.3-12.5C260.825,160.782,248.925,155.082,237.025,157.882z"/> + </g> +</g> +</svg>
\ No newline at end of file diff --git a/static/images/customize.webp b/static/images/customize.webp Binary files differindex 9d558683..a5c9a37f 100644 --- a/static/images/customize.webp +++ b/static/images/customize.webp diff --git a/static/images/hero-image.webp b/static/images/hero-image.webp Binary files differindex 794e764b..c4dd22bd 100644 --- a/static/images/hero-image.webp +++ b/static/images/hero-image.webp diff --git a/static/images/lightning-qr.webp b/static/images/lightning-qr.webp Binary files differindex 9d4eb3c2..0462e28f 100644 --- a/static/images/lightning-qr.webp +++ b/static/images/lightning-qr.webp diff --git a/static/images/logo.jpg b/static/images/logo.jpg Binary files differnew file mode 100644 index 00000000..b41a06b0 --- /dev/null +++ b/static/images/logo.jpg diff --git a/static/images/phone-checkout.webp b/static/images/phone-checkout.webp Binary files differindex a6d81ded..0d075c63 100644 --- a/static/images/phone-checkout.webp +++ b/static/images/phone-checkout.webp diff --git a/static/images/test.webp b/static/images/test.webp Binary files differdeleted file mode 100644 index cbe25d5a..00000000 --- a/static/images/test.webp +++ /dev/null diff --git a/static/lottie/success.json b/static/lottie/success.json index 6b01e066..adef99b9 100644 --- a/static/lottie/success.json +++ b/static/lottie/success.json @@ -1,1313 +1,1351 @@ { - "v": "5.7.1", - "fr": 30, - "ip": 0, - "op": 60, - "w": 300, - "h": 300, - "nm": "Comp 1", - "ddd": 0, - "assets": [], - "layers": [ - { - "ddd": 0, - "ind": 1, - "ty": 4, - "nm": "4", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [151, 151, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [-22.5, -7.5], - [0, 0] - ], - "o": [ - [0, 0], - [22.5, 7.5], - [0, 0] - ], - "v": [ - [61, 78.5], - [78, 100.5], - [94, 115.5] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { - "a": 0, - "k": [0.12941176470588237, 0.19607843137254902, 0.3843137254901961, 1], - "ix": 3 - }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 5, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [0, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "tm", - "s": { - "a": 1, - "k": [ - { - "i": { "x": [0.667], "y": [1] }, - "o": { "x": [0.333], "y": [0] }, - "t": 28.254, - "s": [0] - }, - { "t": 51, "s": [100] } - ], - "ix": 1 - }, - "e": { - "a": 1, - "k": [ - { - "i": { "x": [0.667], "y": [1] }, - "o": { "x": [0.333], "y": [0] }, - "t": 17, - "s": [0] - }, - { "t": 46.2109375, "s": [100] } - ], - "ix": 2 - }, - "o": { "a": 0, "k": 0, "ix": 3 }, - "m": 1, - "ix": 2, - "nm": "Trim Paths 1", - "mn": "ADBE Vector Filter - Trim", - "hd": false - } - ], - "ip": 17, - "op": 617, - "st": 17, - "bm": 0 - }, - { - "ddd": 0, - "ind": 2, - "ty": 4, - "nm": "3", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 203, "ix": 10 }, - "p": { "a": 0, "k": [251.408, 59.449, 0], "ix": 2 }, - "a": { "a": 0, "k": [-103.936, 89.696, 0], "ix": 1 }, - "s": { "a": 0, "k": [91.456, 89.381, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [29.459, 25.084], - [5, -25.75], - [5.75, -0.75] - ], - "o": [ - [0, 0], - [-25.25, -21.5], - [-5.515, 28.405], - [-5.75, 0.75] - ], - "v": [ - [-75, 68.75], - [-107.25, 86.5], - [-94, 84], - [-128.75, 113] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { "a": 0, "k": [1, 0.713725490196, 0.211764720842, 1], "ix": 3 }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 5, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [0, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "tm", - "s": { - "a": 1, - "k": [ - { - "i": { "x": [0.667], "y": [1] }, - "o": { "x": [0.333], "y": [0] }, - "t": 28.254, - "s": [0] - }, - { "t": 51, "s": [100] } - ], - "ix": 1 - }, - "e": { - "a": 1, - "k": [ - { - "i": { "x": [0.667], "y": [1] }, - "o": { "x": [0.333], "y": [0] }, - "t": 17, - "s": [0] - }, - { "t": 46.2109375, "s": [100] } - ], - "ix": 2 - }, - "o": { "a": 0, "k": 0, "ix": 3 }, - "m": 1, - "ix": 2, - "nm": "Trim Paths 1", - "mn": "ADBE Vector Filter - Trim", - "hd": false - } - ], - "ip": 17, - "op": 617, - "st": 17, - "bm": 0 - }, - { - "ddd": 0, - "ind": 3, - "ty": 4, - "nm": "2", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [-21, 347, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [20.5, 4.5], - [0, 0], - [18.25, 9.25], - [3.5, -3.25] - ], - "o": [ - [0, 0], - [-20.5, -4.5], - [0, 0], - [-18.25, -9.25], - [-3.5, 3.25] - ], - "v": [ - [90.75, -122.25], - [83.5, -110.5], - [81.25, -97.25], - [69.75, -93.25], - [61, -75.75] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { "a": 0, "k": [0.745098039216, 0.643137254902, 1, 1], "ix": 3 }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 5, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [0, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "tm", - "s": { - "a": 1, - "k": [ - { - "i": { "x": [0.667], "y": [1] }, - "o": { "x": [0.333], "y": [0] }, - "t": 28.254, - "s": [0] - }, - { "t": 51, "s": [100] } - ], - "ix": 1 - }, - "e": { - "a": 1, - "k": [ - { - "i": { "x": [0.667], "y": [1] }, - "o": { "x": [0.333], "y": [0] }, - "t": 17, - "s": [0] - }, - { "t": 46.2109375, "s": [100] } - ], - "ix": 2 - }, - "o": { "a": 0, "k": 0, "ix": 3 }, - "m": 1, - "ix": 2, - "nm": "Trim Paths 1", - "mn": "ADBE Vector Filter - Trim", - "hd": false - } - ], - "ip": 17, - "op": 617, - "st": 17, - "bm": 0 - }, - { - "ddd": 0, - "ind": 4, - "ty": 4, - "nm": "1", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [147, 146, 0], "ix": 2 }, - "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, - "s": { "a": 0, "k": [109.756, 101.856, 100], "ix": 6 } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [33.75, 1] - ], - "o": [ - [0, 0], - [-33.75, -1] - ], - "v": [ - [-57.75, -75.75], - [-90.75, -107.5] - ], - "c": false - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "st", - "c": { "a": 0, "k": [1, 0.431372578939, 0.513725490196, 1], "ix": 3 }, - "o": { "a": 0, "k": 100, "ix": 4 }, - "w": { "a": 0, "k": 5, "ix": 5 }, - "lc": 2, - "lj": 1, - "ml": 4, - "bm": 0, - "nm": "Stroke 1", - "mn": "ADBE Vector Graphic - Stroke", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [-1.5, -0.25], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Shape 1", - "np": 3, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "tm", - "s": { - "a": 1, - "k": [ - { - "i": { "x": [0.667], "y": [1] }, - "o": { "x": [0.333], "y": [0] }, - "t": 28.254, - "s": [0] - }, - { "t": 51, "s": [100] } - ], - "ix": 1 - }, - "e": { - "a": 1, - "k": [ - { - "i": { "x": [0.667], "y": [1] }, - "o": { "x": [0.333], "y": [0] }, - "t": 17, - "s": [0] - }, - { "t": 46.2109375, "s": [100] } - ], - "ix": 2 - }, - "o": { "a": 0, "k": 0, "ix": 3 }, - "m": 1, - "ix": 2, - "nm": "Trim Paths 1", - "mn": "ADBE Vector Filter - Trim", - "hd": false - } - ], - "ip": 17, - "op": 617, - "st": 17, - "bm": 0 - }, - { - "ddd": 0, - "ind": 5, - "ty": 4, - "nm": "checkmark/success Outlines", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [150.06, 150.061, 0], "ix": 2 }, - "a": { "a": 0, "k": [99, 99, 0], "ix": 1 }, - "s": { - "a": 1, - "k": [ - { - "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, - "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, - "t": 0, - "s": [100, 100, 100] - }, - { - "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, - "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, - "t": 12, - "s": [27, 27, 100] - }, - { "t": 21, "s": [100, 100, 100] } - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0.831, 1.409], - [0, 0], - [-0.622, 2.004], - [-1.844, 1.043], - [-2.083, -0.474], - [-1.215, -1.74], - [0, 0], - [-0.949, 0.537], - [0, 0], - [-2.041, -0.632], - [-1.075, -1.826], - [0.463, -2.047], - [1.756, -1.181] - ], - "o": [ - [-1.424, 0.805], - [0, 0], - [-0.93, -1.899], - [0.622, -2.006], - [1.844, -1.042], - [2.084, 0.474], - [0, 0], - [0.553, 0.939], - [0, 0], - [1.921, -0.899], - [2.042, 0.631], - [1.076, 1.823], - [-0.463, 2.047], - [0, 0] - ], - "v": [ - [-26.138, 30.587], - [-30.199, 29.498], - [-58.899, -19.189], - [-59.378, -25.261], - [-55.542, -30.001], - [-49.433, -30.884], - [-44.302, -27.441], - [-23.618, 7.647], - [-20.911, 8.371], - [47.571, -30.344], - [53.736, -30.76], - [58.584, -26.94], - [59.537, -20.918], - [56.086, -15.898] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { "a": 0, "k": [1, 1, 1, 1], "ix": 4 }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [99.943, 103.024], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [83.631, 83.631], "ix": 3 }, - "r": { "a": 0, "k": -12.6, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [-47.479, -12.722], - [12.721, -47.478], - [47.478, 12.722], - [-12.723, 47.478] - ], - "o": [ - [47.479, 12.722], - [-12.723, 47.479], - [-47.478, -12.723], - [12.721, -47.479] - ], - "v": [ - [23.036, -85.967], - [85.969, 23.035], - [-23.035, 85.967], - [-85.966, -23.035] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 1, - "k": [ - { - "i": { "x": [0.833], "y": [0.833] }, - "o": { "x": [0.167], "y": [0.167] }, - "t": 0, - "s": [0.901960790157, 0.901960790157, 0.901960790157, 1] - }, - { - "i": { "x": [0.833], "y": [0.833] }, - "o": { "x": [0.167], "y": [0.167] }, - "t": 10, - "s": [0.901960790157, 0.901960790157, 0.901960790157, 1] - }, - { "t": 29, "s": [0.262745112181, 0.823529422283, 0.588235318661, 1] } - ], - "ix": 4 - }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [98.939, 98.939], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 2", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 0, - "op": 600, - "st": 0, - "bm": 0 - }, - { - "ddd": 0, - "ind": 6, - "ty": 4, - "nm": "large-circles/success Outlines", - "sr": 1, - "ks": { - "o": { - "a": 1, - "k": [ - { - "i": { "x": [0.833], "y": [0.833] }, - "o": { "x": [0.167], "y": [0.167] }, - "t": 42, - "s": [100] - }, - { "t": 52, "s": [2] } - ], - "ix": 11 - }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [148, 146, 0], "ix": 2 }, - "a": { "a": 0, "k": [95.5, 98, 0], "ix": 1 }, - "s": { - "a": 1, - "k": [ - { - "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, - "o": { "x": [0.009, 0.009, 0.333], "y": [1.621, 1.621, 0] }, - "t": 17, - "s": [62, 62, 100] - }, - { "t": 50, "s": [124, 124, 100] } - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [-6.209, 1.338], - [-1.337, -6.209], - [6.209, -1.337], - [1.338, 6.209] - ], - "o": [ - [6.208, -1.337], - [1.338, 6.209], - [-6.209, 1.338], - [-1.337, -6.209] - ], - "v": [ - [-2.421, -11.243], - [11.242, -2.422], - [2.421, 11.241], - [-11.243, 2.421] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { "a": 0, "k": [0.745000023935, 0.642999985639, 1, 1], "ix": 4 }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [173.998, 145.423], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [71, 71], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [-6.209, 1.337], - [-1.338, -6.209], - [6.209, -1.338], - [1.338, 6.209] - ], - "o": [ - [6.209, -1.338], - [1.337, 6.209], - [-6.209, 1.337], - [-1.337, -6.208] - ], - "v": [ - [-2.421, -11.242], - [11.242, -2.422], - [2.422, 11.242], - [-11.243, 2.422] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [0.011764705882352941, 0.45098039215686275, 0.8901960784313725, 1], - "ix": 4 - }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [63.997, 183.011], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [70, 70], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 2", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [-6.209, 1.337], - [-1.337, -6.208], - [6.209, -1.337], - [1.338, 6.209] - ], - "o": [ - [6.209, -1.337], - [1.338, 6.209], - [-6.209, 1.338], - [-1.337, -6.209] - ], - "v": [ - [-2.421, -11.243], - [11.242, -2.423], - [2.421, 11.242], - [-11.243, 2.421] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { "a": 0, "k": [1, 0.713999968884, 0.211999990426, 1], "ix": 4 }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [103.291, 12.83], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [70, 70], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 3", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 3, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [-6.208, 1.337], - [-1.337, -6.209], - [6.209, -1.338], - [1.338, 6.209] - ], - "o": [ - [6.209, -1.337], - [1.338, 6.209], - [-6.209, 1.337], - [-1.337, -6.209] - ], - "v": [ - [-2.423, -11.242], - [11.241, -2.422], - [2.421, 11.242], - [-11.243, 2.422] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [0.011764705882352941, 0.45098039215686275, 0.8901960784313725, 1], - "ix": 4 - }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [178.004, 59.795], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [67, 67], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 4", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 4, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [-6.209, 1.337], - [-1.338, -6.208], - [6.209, -1.337], - [1.338, 6.209] - ], - "o": [ - [6.209, -1.337], - [1.337, 6.209], - [-6.209, 1.338], - [-1.337, -6.209] - ], - "v": [ - [-2.421, -11.243], - [11.243, -2.423], - [2.422, 11.242], - [-11.243, 2.421] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { "a": 0, "k": [1, 0.430999995213, 0.513999968884, 1], "ix": 4 }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [12.829, 84.352], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [68, 68], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 5", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 5, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 17, - "op": 617, - "st": 17, - "bm": 0 - }, - { - "ddd": 0, - "ind": 7, - "ty": 4, - "nm": "checkmark/success Outlines", - "sr": 1, - "ks": { - "o": { "a": 0, "k": 100, "ix": 11 }, - "r": { "a": 0, "k": 0, "ix": 10 }, - "p": { "a": 0, "k": [150.073, 150.073, 0], "ix": 2 }, - "a": { "a": 0, "k": [99, 99, 0], "ix": 1 }, - "s": { - "a": 1, - "k": [ - { - "i": { "x": [0.203, 0.203, 0.667], "y": [0.507, 0.507, 1] }, - "o": { "x": [0.915, 0.915, 0.333], "y": [0.651, 0.651, 0] }, - "t": 50, - "s": [93.357, 93.357, 100] - }, - { "t": 59, "s": [121.357, 121.357, 100] } - ], - "ix": 6 - } - }, - "ao": 0, - "shapes": [ - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [0, 0], - [0.831, 1.409], - [0, 0], - [-0.622, 2.004], - [-1.844, 1.043], - [-2.083, -0.474], - [-1.215, -1.74], - [0, 0], - [-0.949, 0.537], - [0, 0], - [-2.041, -0.632], - [-1.075, -1.826], - [0.463, -2.047], - [1.756, -1.181] - ], - "o": [ - [-1.424, 0.805], - [0, 0], - [-0.93, -1.899], - [0.622, -2.006], - [1.844, -1.042], - [2.084, 0.474], - [0, 0], - [0.553, 0.939], - [0, 0], - [1.921, -0.899], - [2.042, 0.631], - [1.076, 1.823], - [-0.463, 2.047], - [0, 0] - ], - "v": [ - [-26.138, 30.587], - [-30.199, 29.498], - [-58.899, -19.189], - [-59.378, -25.261], - [-55.542, -30.001], - [-49.433, -30.884], - [-44.302, -27.441], - [-23.618, 7.647], - [-20.911, 8.371], - [47.571, -30.344], - [53.736, -30.76], - [58.584, -26.94], - [59.537, -20.918], - [56.086, -15.898] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { "a": 0, "k": [1, 1, 1, 1], "ix": 4 }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [98.943, 102.024], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 1", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 1, - "mn": "ADBE Vector Group", - "hd": false - }, - { - "ty": "gr", - "it": [ - { - "ind": 0, - "ty": "sh", - "ix": 1, - "ks": { - "a": 0, - "k": { - "i": [ - [-47.479, -12.722], - [12.721, -47.478], - [47.478, 12.722], - [-12.723, 47.478] - ], - "o": [ - [47.479, 12.722], - [-12.723, 47.479], - [-47.478, -12.723], - [12.721, -47.479] - ], - "v": [ - [23.036, -85.967], - [85.969, 23.035], - [-23.035, 85.967], - [-85.966, -23.035] - ], - "c": true - }, - "ix": 2 - }, - "nm": "Path 1", - "mn": "ADBE Vector Shape - Group", - "hd": false - }, - { - "ty": "fl", - "c": { - "a": 0, - "k": [0.2235294117647059, 0.7843137254901961, 0.32941176470588235, 1], - "ix": 4 - }, - "o": { "a": 0, "k": 100, "ix": 5 }, - "r": 1, - "bm": 0, - "nm": "Fill 1", - "mn": "ADBE Vector Graphic - Fill", - "hd": false - }, - { - "ty": "tr", - "p": { "a": 0, "k": [98.939, 98.939], "ix": 2 }, - "a": { "a": 0, "k": [0, 0], "ix": 1 }, - "s": { "a": 0, "k": [100, 100], "ix": 3 }, - "r": { "a": 0, "k": 0, "ix": 6 }, - "o": { "a": 0, "k": 100, "ix": 7 }, - "sk": { "a": 0, "k": 0, "ix": 4 }, - "sa": { "a": 0, "k": 0, "ix": 5 }, - "nm": "Transform" - } - ], - "nm": "Group 2", - "np": 2, - "cix": 2, - "bm": 0, - "ix": 2, - "mn": "ADBE Vector Group", - "hd": false - } - ], - "ip": 50, - "op": 650, - "st": 50, - "bm": 0 - } - ], - "markers": [] + "v": "5.7.1", + "fr": 30, + "ip": 0, + "op": 60, + "w": 300, + "h": 300, + "nm": "Comp 1", + "ddd": 0, + "assets": [], + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [151, 151, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-22.5, -7.5], + [0, 0] + ], + "o": [ + [0, 0], + [22.5, 7.5], + [0, 0] + ], + "v": [ + [61, 78.5], + [78, 100.5], + [94, 115.5] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [ + 0.12941176470588237, 0.19607843137254902, 0.3843137254901961, + 1 + ], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { "a": 0, "k": 5, "ix": 5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.333], "y": [0] }, + "t": 28.254, + "s": [0] + }, + { "t": 51, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.333], "y": [0] }, + "t": 17, + "s": [0] + }, + { "t": 46.2109375, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 17, + "op": 617, + "st": 17, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 203, "ix": 10 }, + "p": { "a": 0, "k": [251.408, 59.449, 0], "ix": 2 }, + "a": { "a": 0, "k": [-103.936, 89.696, 0], "ix": 1 }, + "s": { "a": 0, "k": [91.456, 89.381, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [29.459, 25.084], + [5, -25.75], + [5.75, -0.75] + ], + "o": [ + [0, 0], + [-25.25, -21.5], + [-5.515, 28.405], + [-5.75, 0.75] + ], + "v": [ + [-75, 68.75], + [-107.25, 86.5], + [-94, 84], + [-128.75, 113] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [1, 0.713725490196, 0.211764720842, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { "a": 0, "k": 5, "ix": 5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.333], "y": [0] }, + "t": 28.254, + "s": [0] + }, + { "t": 51, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.333], "y": [0] }, + "t": 17, + "s": [0] + }, + { "t": 46.2109375, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 17, + "op": 617, + "st": 17, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [-21, 347, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [20.5, 4.5], + [0, 0], + [18.25, 9.25], + [3.5, -3.25] + ], + "o": [ + [0, 0], + [-20.5, -4.5], + [0, 0], + [-18.25, -9.25], + [-3.5, 3.25] + ], + "v": [ + [90.75, -122.25], + [83.5, -110.5], + [81.25, -97.25], + [69.75, -93.25], + [61, -75.75] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [0.745098039216, 0.643137254902, 1, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { "a": 0, "k": 5, "ix": 5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.333], "y": [0] }, + "t": 28.254, + "s": [0] + }, + { "t": 51, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.333], "y": [0] }, + "t": 17, + "s": [0] + }, + { "t": 46.2109375, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 17, + "op": 617, + "st": 17, + "bm": 0 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "1", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [147, 146, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { "a": 0, "k": [109.756, 101.856, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [33.75, 1] + ], + "o": [ + [0, 0], + [-33.75, -1] + ], + "v": [ + [-57.75, -75.75], + [-90.75, -107.5] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [1, 0.431372578939, 0.513725490196, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { "a": 0, "k": 5, "ix": 5 }, + "lc": 2, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [-1.5, -0.25], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 3, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.333], "y": [0] }, + "t": 28.254, + "s": [0] + }, + { "t": 51, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.333], "y": [0] }, + "t": 17, + "s": [0] + }, + { "t": 46.2109375, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 17, + "op": 617, + "st": 17, + "bm": 0 + }, + { + "ddd": 0, + "ind": 5, + "ty": 4, + "nm": "checkmark/success Outlines", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [150.06, 150.061, 0], "ix": 2 }, + "a": { "a": 0, "k": [99, 99, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 0, + "s": [100, 100, 100] + }, + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 12, + "s": [27, 27, 100] + }, + { "t": 21, "s": [100, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [0.831, 1.409], + [0, 0], + [-0.622, 2.004], + [-1.844, 1.043], + [-2.083, -0.474], + [-1.215, -1.74], + [0, 0], + [-0.949, 0.537], + [0, 0], + [-2.041, -0.632], + [-1.075, -1.826], + [0.463, -2.047], + [1.756, -1.181] + ], + "o": [ + [-1.424, 0.805], + [0, 0], + [-0.93, -1.899], + [0.622, -2.006], + [1.844, -1.042], + [2.084, 0.474], + [0, 0], + [0.553, 0.939], + [0, 0], + [1.921, -0.899], + [2.042, 0.631], + [1.076, 1.823], + [-0.463, 2.047], + [0, 0] + ], + "v": [ + [-26.138, 30.587], + [-30.199, 29.498], + [-58.899, -19.189], + [-59.378, -25.261], + [-55.542, -30.001], + [-49.433, -30.884], + [-44.302, -27.441], + [-23.618, 7.647], + [-20.911, 8.371], + [47.571, -30.344], + [53.736, -30.76], + [58.584, -26.94], + [59.537, -20.918], + [56.086, -15.898] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { "a": 0, "k": [1, 1, 1, 1], "ix": 4 }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [99.943, 103.024], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [83.631, 83.631], "ix": 3 }, + "r": { "a": 0, "k": -12.6, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [-47.479, -12.722], + [12.721, -47.478], + [47.478, 12.722], + [-12.723, 47.478] + ], + "o": [ + [47.479, 12.722], + [-12.723, 47.479], + [-47.478, -12.723], + [12.721, -47.479] + ], + "v": [ + [23.036, -85.967], + [85.969, 23.035], + [-23.035, 85.967], + [-85.966, -23.035] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 0, + "s": [0.901960790157, 0.901960790157, 0.901960790157, 1] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 10, + "s": [0.901960790157, 0.901960790157, 0.901960790157, 1] + }, + { + "t": 29, + "s": [0.262745112181, 0.823529422283, 0.588235318661, 1] + } + ], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [98.939, 98.939], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 600, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 6, + "ty": 4, + "nm": "large-circles/success Outlines", + "sr": 1, + "ks": { + "o": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 42, + "s": [100] + }, + { "t": 52, "s": [2] } + ], + "ix": 11 + }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [148, 146, 0], "ix": 2 }, + "a": { "a": 0, "k": [95.5, 98, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.009, 0.009, 0.333], "y": [1.621, 1.621, 0] }, + "t": 17, + "s": [62, 62, 100] + }, + { "t": 50, "s": [124, 124, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [-6.209, 1.338], + [-1.337, -6.209], + [6.209, -1.337], + [1.338, 6.209] + ], + "o": [ + [6.208, -1.337], + [1.338, 6.209], + [-6.209, 1.338], + [-1.337, -6.209] + ], + "v": [ + [-2.421, -11.243], + [11.242, -2.422], + [2.421, 11.241], + [-11.243, 2.421] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.745000023935, 0.642999985639, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [173.998, 145.423], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [71, 71], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [-6.209, 1.337], + [-1.338, -6.209], + [6.209, -1.338], + [1.338, 6.209] + ], + "o": [ + [6.209, -1.338], + [1.337, 6.209], + [-6.209, 1.337], + [-1.337, -6.208] + ], + "v": [ + [-2.421, -11.242], + [11.242, -2.422], + [2.422, 11.242], + [-11.243, 2.422] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.011764705882352941, 0.45098039215686275, 0.8901960784313725, + 1 + ], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [63.997, 183.011], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [70, 70], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [-6.209, 1.337], + [-1.337, -6.208], + [6.209, -1.337], + [1.338, 6.209] + ], + "o": [ + [6.209, -1.337], + [1.338, 6.209], + [-6.209, 1.338], + [-1.337, -6.209] + ], + "v": [ + [-2.421, -11.243], + [11.242, -2.423], + [2.421, 11.242], + [-11.243, 2.421] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.713999968884, 0.211999990426, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [103.291, 12.83], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [70, 70], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 3", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 3, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [-6.208, 1.337], + [-1.337, -6.209], + [6.209, -1.338], + [1.338, 6.209] + ], + "o": [ + [6.209, -1.337], + [1.338, 6.209], + [-6.209, 1.337], + [-1.337, -6.209] + ], + "v": [ + [-2.423, -11.242], + [11.241, -2.422], + [2.421, 11.242], + [-11.243, 2.422] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.011764705882352941, 0.45098039215686275, 0.8901960784313725, + 1 + ], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [178.004, 59.795], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [67, 67], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 4", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 4, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [-6.209, 1.337], + [-1.338, -6.208], + [6.209, -1.337], + [1.338, 6.209] + ], + "o": [ + [6.209, -1.337], + [1.337, 6.209], + [-6.209, 1.338], + [-1.337, -6.209] + ], + "v": [ + [-2.421, -11.243], + [11.243, -2.423], + [2.422, 11.242], + [-11.243, 2.421] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.430999995213, 0.513999968884, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [12.829, 84.352], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [68, 68], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 5", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 5, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 17, + "op": 617, + "st": 17, + "bm": 0 + }, + { + "ddd": 0, + "ind": 7, + "ty": 4, + "nm": "checkmark/success Outlines", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [150.073, 150.073, 0], "ix": 2 }, + "a": { "a": 0, "k": [99, 99, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.203, 0.203, 0.667], "y": [0.507, 0.507, 1] }, + "o": { "x": [0.915, 0.915, 0.333], "y": [0.651, 0.651, 0] }, + "t": 50, + "s": [93.357, 93.357, 100] + }, + { "t": 59, "s": [121.357, 121.357, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [0.831, 1.409], + [0, 0], + [-0.622, 2.004], + [-1.844, 1.043], + [-2.083, -0.474], + [-1.215, -1.74], + [0, 0], + [-0.949, 0.537], + [0, 0], + [-2.041, -0.632], + [-1.075, -1.826], + [0.463, -2.047], + [1.756, -1.181] + ], + "o": [ + [-1.424, 0.805], + [0, 0], + [-0.93, -1.899], + [0.622, -2.006], + [1.844, -1.042], + [2.084, 0.474], + [0, 0], + [0.553, 0.939], + [0, 0], + [1.921, -0.899], + [2.042, 0.631], + [1.076, 1.823], + [-0.463, 2.047], + [0, 0] + ], + "v": [ + [-26.138, 30.587], + [-30.199, 29.498], + [-58.899, -19.189], + [-59.378, -25.261], + [-55.542, -30.001], + [-49.433, -30.884], + [-44.302, -27.441], + [-23.618, 7.647], + [-20.911, 8.371], + [47.571, -30.344], + [53.736, -30.76], + [58.584, -26.94], + [59.537, -20.918], + [56.086, -15.898] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { "a": 0, "k": [1, 1, 1, 1], "ix": 4 }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [98.943, 102.024], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [-47.479, -12.722], + [12.721, -47.478], + [47.478, 12.722], + [-12.723, 47.478] + ], + "o": [ + [47.479, 12.722], + [-12.723, 47.479], + [-47.478, -12.723], + [12.721, -47.479] + ], + "v": [ + [23.036, -85.967], + [85.969, 23.035], + [-23.035, 85.967], + [-85.966, -23.035] + ], + "c": true + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [ + 0.2235294117647059, 0.7843137254901961, 0.32941176470588235, 1 + ], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [98.939, 98.939], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Group 2", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 2, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 50, + "op": 650, + "st": 50, + "bm": 0 + } + ], + "markers": [] } diff --git a/static/manifest.webmanifest b/static/manifest.webmanifest index 9f51f358..d9b376ae 100644 --- a/static/manifest.webmanifest +++ b/static/manifest.webmanifest @@ -1,38 +1,38 @@ { - "theme_color": "#fff", - "background_color": "#000", - "display": "fullscreen", - "scope": "/", - "start_url": "/", - "name": "Swapee", - "description": "Bitcoin web wallet", - "short_name": "Swapee", - "icons": [ - { - "src": "/icon-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/icon-256x256.png", - "sizes": "256x256", - "type": "image/png" - }, - { - "src": "/icon-384x384.png", - "sizes": "384x384", - "type": "image/png" - }, - { - "src": "/icon-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "protocol_handlers": [ - { - "protocol": "bitcoin", - "url": "/send/%s" - } - ] + "theme_color": "#fff", + "background_color": "#000", + "display": "fullscreen", + "scope": "/", + "start_url": "/start", + "name": "Swapee", + "description": "Bitcoin web wallet", + "short_name": "Swapee", + "icons": [ + { + "src": "/icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/icon-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "/icon-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "/icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "protocol_handlers": [ + { + "protocol": "bitcoin", + "url": "/send/%s" + } + ] } diff --git a/static/qr.js b/static/qr.js index 92aa4ec1..e8a68e2b 100644 --- a/static/qr.js +++ b/static/qr.js @@ -19,7 +19,7 @@ /* * @Modified: Pudon * @demoURL: https://github.com/Pudon/weapp-qrcode - * @Date: 2018-09-11 14:00:05 + * @Date: 2018-09-11 14:00:05 * @Last Modified by: Pudon * @Last Modified time: 2018-09-12 16:33:19 */ @@ -30,457 +30,434 @@ * @param typeNumber 1 to 40 * @param errorCorrectLevel 'L','M','Q','H' */ -var qrcode = function(typeNumber, errorCorrectLevel) { +var qrcode = function (typeNumber, errorCorrectLevel) { + var PAD0 = 0xec; + var PAD1 = 0x11; - var PAD0 = 0xEC; - var PAD1 = 0x11; + var _typeNumber = typeNumber; + var _errorCorrectLevel = QRErrorCorrectLevel[errorCorrectLevel]; + var _modules = null; + var _moduleCount = 0; + var _dataCache = null; + var _dataList = new Array(); - var _typeNumber = typeNumber; - var _errorCorrectLevel = QRErrorCorrectLevel[errorCorrectLevel]; - var _modules = null; - var _moduleCount = 0; - var _dataCache = null; - var _dataList = new Array(); + var _this = {}; - var _this = {}; - - var makeImpl = function(test, maskPattern) { - - _moduleCount = _typeNumber * 4 + 17; - _modules = function(moduleCount) { - var modules = new Array(moduleCount); - for (var row = 0; row < moduleCount; row += 1) { - modules[row] = new Array(moduleCount); - for (var col = 0; col < moduleCount; col += 1) { - modules[row][col] = null; - } - } - return modules; - }(_moduleCount); - - setupPositionProbePattern(0, 0); - setupPositionProbePattern(_moduleCount - 7, 0); - setupPositionProbePattern(0, _moduleCount - 7); - setupPositionAdjustPattern(); - setupTimingPattern(); - setupTypeInfo(test, maskPattern); - - if (_typeNumber >= 7) { - setupTypeNumber(test); - } - - if (_dataCache == null) { - _dataCache = createData(_typeNumber, _errorCorrectLevel, _dataList); - } - - mapData(_dataCache, maskPattern); - }; - - var setupPositionProbePattern = function(row, col) { - - for (var r = -1; r <= 7; r += 1) { - - if (row + r <= -1 || _moduleCount <= row + r) continue; - - for (var c = -1; c <= 7; c += 1) { - - if (col + c <= -1 || _moduleCount <= col + c) continue; - - if ( (0 <= r && r <= 6 && (c == 0 || c == 6) ) - || (0 <= c && c <= 6 && (r == 0 || r == 6) ) - || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) { - _modules[row + r][col + c] = true; - } else { - _modules[row + r][col + c] = false; - } - } - } - }; - - var getBestMaskPattern = function() { - - var minLostPoint = 0; - var pattern = 0; - - for (var i = 0; i < 8; i += 1) { - - makeImpl(true, i); - - var lostPoint = QRUtil.getLostPoint(_this); - - if (i == 0 || minLostPoint > lostPoint) { - minLostPoint = lostPoint; - pattern = i; - } - } - - return pattern; - }; - - var setupTimingPattern = function() { - - for (var r = 8; r < _moduleCount - 8; r += 1) { - if (_modules[r][6] != null) { - continue; - } - _modules[r][6] = (r % 2 == 0); - } - - for (var c = 8; c < _moduleCount - 8; c += 1) { - if (_modules[6][c] != null) { - continue; - } - _modules[6][c] = (c % 2 == 0); - } - }; - - var setupPositionAdjustPattern = function() { - - var pos = QRUtil.getPatternPosition(_typeNumber); - - for (var i = 0; i < pos.length; i += 1) { - - for (var j = 0; j < pos.length; j += 1) { - - var row = pos[i]; - var col = pos[j]; - - if (_modules[row][col] != null) { - continue; - } - - for (var r = -2; r <= 2; r += 1) { + var makeImpl = function (test, maskPattern) { + _moduleCount = _typeNumber * 4 + 17; + _modules = (function (moduleCount) { + var modules = new Array(moduleCount); + for (var row = 0; row < moduleCount; row += 1) { + modules[row] = new Array(moduleCount); + for (var col = 0; col < moduleCount; col += 1) { + modules[row][col] = null; + } + } + return modules; + })(_moduleCount); - for (var c = -2; c <= 2; c += 1) { + setupPositionProbePattern(0, 0); + setupPositionProbePattern(_moduleCount - 7, 0); + setupPositionProbePattern(0, _moduleCount - 7); + setupPositionAdjustPattern(); + setupTimingPattern(); + setupTypeInfo(test, maskPattern); - if (r == -2 || r == 2 || c == -2 || c == 2 - || (r == 0 && c == 0) ) { - _modules[row + r][col + c] = true; - } else { - _modules[row + r][col + c] = false; - } - } - } - } - } - }; + if (_typeNumber >= 7) { + setupTypeNumber(test); + } - var setupTypeNumber = function(test) { + if (_dataCache == null) { + _dataCache = createData(_typeNumber, _errorCorrectLevel, _dataList); + } - var bits = QRUtil.getBCHTypeNumber(_typeNumber); + mapData(_dataCache, maskPattern); + }; - for (var i = 0; i < 18; i += 1) { - var mod = (!test && ( (bits >> i) & 1) == 1); - _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod; - } + var setupPositionProbePattern = function (row, col) { + for (var r = -1; r <= 7; r += 1) { + if (row + r <= -1 || _moduleCount <= row + r) continue; - for (var i = 0; i < 18; i += 1) { - var mod = (!test && ( (bits >> i) & 1) == 1); - _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod; - } - }; + for (var c = -1; c <= 7; c += 1) { + if (col + c <= -1 || _moduleCount <= col + c) continue; - var setupTypeInfo = function(test, maskPattern) { + if ( + (0 <= r && r <= 6 && (c == 0 || c == 6)) || + (0 <= c && c <= 6 && (r == 0 || r == 6)) || + (2 <= r && r <= 4 && 2 <= c && c <= 4) + ) { + _modules[row + r][col + c] = true; + } else { + _modules[row + r][col + c] = false; + } + } + } + }; - var data = (_errorCorrectLevel << 3) | maskPattern; - var bits = QRUtil.getBCHTypeInfo(data); + var getBestMaskPattern = function () { + var minLostPoint = 0; + var pattern = 0; - // vertical - for (var i = 0; i < 15; i += 1) { + for (var i = 0; i < 8; i += 1) { + makeImpl(true, i); - var mod = (!test && ( (bits >> i) & 1) == 1); + var lostPoint = QRUtil.getLostPoint(_this); - if (i < 6) { - _modules[i][8] = mod; - } else if (i < 8) { - _modules[i + 1][8] = mod; - } else { - _modules[_moduleCount - 15 + i][8] = mod; - } - } + if (i == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i; + } + } - // horizontal - for (var i = 0; i < 15; i += 1) { + return pattern; + }; - var mod = (!test && ( (bits >> i) & 1) == 1); + var setupTimingPattern = function () { + for (var r = 8; r < _moduleCount - 8; r += 1) { + if (_modules[r][6] != null) { + continue; + } + _modules[r][6] = r % 2 == 0; + } - if (i < 8) { - _modules[8][_moduleCount - i - 1] = mod; - } else if (i < 9) { - _modules[8][15 - i - 1 + 1] = mod; - } else { - _modules[8][15 - i - 1] = mod; - } - } + for (var c = 8; c < _moduleCount - 8; c += 1) { + if (_modules[6][c] != null) { + continue; + } + _modules[6][c] = c % 2 == 0; + } + }; - // fixed module - _modules[_moduleCount - 8][8] = (!test); - }; + var setupPositionAdjustPattern = function () { + var pos = QRUtil.getPatternPosition(_typeNumber); - var mapData = function(data, maskPattern) { + for (var i = 0; i < pos.length; i += 1) { + for (var j = 0; j < pos.length; j += 1) { + var row = pos[i]; + var col = pos[j]; - var inc = -1; - var row = _moduleCount - 1; - var bitIndex = 7; - var byteIndex = 0; - var maskFunc = QRUtil.getMaskFunction(maskPattern); + if (_modules[row][col] != null) { + continue; + } - for (var col = _moduleCount - 1; col > 0; col -= 2) { + for (var r = -2; r <= 2; r += 1) { + for (var c = -2; c <= 2; c += 1) { + if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) { + _modules[row + r][col + c] = true; + } else { + _modules[row + r][col + c] = false; + } + } + } + } + } + }; - if (col == 6) col -= 1; + var setupTypeNumber = function (test) { + var bits = QRUtil.getBCHTypeNumber(_typeNumber); - while (true) { + for (var i = 0; i < 18; i += 1) { + var mod = !test && ((bits >> i) & 1) == 1; + _modules[Math.floor(i / 3)][(i % 3) + _moduleCount - 8 - 3] = mod; + } - for (var c = 0; c < 2; c += 1) { + for (var i = 0; i < 18; i += 1) { + var mod = !test && ((bits >> i) & 1) == 1; + _modules[(i % 3) + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod; + } + }; - if (_modules[row][col - c] == null) { + var setupTypeInfo = function (test, maskPattern) { + var data = (_errorCorrectLevel << 3) | maskPattern; + var bits = QRUtil.getBCHTypeInfo(data); - var dark = false; + // vertical + for (var i = 0; i < 15; i += 1) { + var mod = !test && ((bits >> i) & 1) == 1; - if (byteIndex < data.length) { - dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1); - } + if (i < 6) { + _modules[i][8] = mod; + } else if (i < 8) { + _modules[i + 1][8] = mod; + } else { + _modules[_moduleCount - 15 + i][8] = mod; + } + } - var mask = maskFunc(row, col - c); + // horizontal + for (var i = 0; i < 15; i += 1) { + var mod = !test && ((bits >> i) & 1) == 1; - if (mask) { - dark = !dark; - } + if (i < 8) { + _modules[8][_moduleCount - i - 1] = mod; + } else if (i < 9) { + _modules[8][15 - i - 1 + 1] = mod; + } else { + _modules[8][15 - i - 1] = mod; + } + } - _modules[row][col - c] = dark; - bitIndex -= 1; + // fixed module + _modules[_moduleCount - 8][8] = !test; + }; - if (bitIndex == -1) { - byteIndex += 1; - bitIndex = 7; - } - } - } + var mapData = function (data, maskPattern) { + var inc = -1; + var row = _moduleCount - 1; + var bitIndex = 7; + var byteIndex = 0; + var maskFunc = QRUtil.getMaskFunction(maskPattern); - row += inc; + for (var col = _moduleCount - 1; col > 0; col -= 2) { + if (col == 6) col -= 1; - if (row < 0 || _moduleCount <= row) { - row -= inc; - inc = -inc; - break; - } - } - } - }; + while (true) { + for (var c = 0; c < 2; c += 1) { + if (_modules[row][col - c] == null) { + var dark = false; - var createBytes = function(buffer, rsBlocks) { + if (byteIndex < data.length) { + dark = ((data[byteIndex] >>> bitIndex) & 1) == 1; + } - var offset = 0; + var mask = maskFunc(row, col - c); - var maxDcCount = 0; - var maxEcCount = 0; + if (mask) { + dark = !dark; + } - var dcdata = new Array(rsBlocks.length); - var ecdata = new Array(rsBlocks.length); + _modules[row][col - c] = dark; + bitIndex -= 1; - for (var r = 0; r < rsBlocks.length; r += 1) { + if (bitIndex == -1) { + byteIndex += 1; + bitIndex = 7; + } + } + } - var dcCount = rsBlocks[r].dataCount; - var ecCount = rsBlocks[r].totalCount - dcCount; + row += inc; - maxDcCount = Math.max(maxDcCount, dcCount); - maxEcCount = Math.max(maxEcCount, ecCount); + if (row < 0 || _moduleCount <= row) { + row -= inc; + inc = -inc; + break; + } + } + } + }; - dcdata[r] = new Array(dcCount); + var createBytes = function (buffer, rsBlocks) { + var offset = 0; - for (var i = 0; i < dcdata[r].length; i += 1) { - dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset]; - } - offset += dcCount; + var maxDcCount = 0; + var maxEcCount = 0; - var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); - var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1); + var dcdata = new Array(rsBlocks.length); + var ecdata = new Array(rsBlocks.length); - var modPoly = rawPoly.mod(rsPoly); - ecdata[r] = new Array(rsPoly.getLength() - 1); - for (var i = 0; i < ecdata[r].length; i += 1) { - var modIndex = i + modPoly.getLength() - ecdata[r].length; - ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0; - } - } + for (var r = 0; r < rsBlocks.length; r += 1) { + var dcCount = rsBlocks[r].dataCount; + var ecCount = rsBlocks[r].totalCount - dcCount; - var totalCodeCount = 0; - for (var i = 0; i < rsBlocks.length; i += 1) { - totalCodeCount += rsBlocks[i].totalCount; - } + maxDcCount = Math.max(maxDcCount, dcCount); + maxEcCount = Math.max(maxEcCount, ecCount); - var data = new Array(totalCodeCount); - var index = 0; + dcdata[r] = new Array(dcCount); - for (var i = 0; i < maxDcCount; i += 1) { - for (var r = 0; r < rsBlocks.length; r += 1) { - if (i < dcdata[r].length) { - data[index] = dcdata[r][i]; - index += 1; - } - } - } + for (var i = 0; i < dcdata[r].length; i += 1) { + dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset]; + } + offset += dcCount; - for (var i = 0; i < maxEcCount; i += 1) { - for (var r = 0; r < rsBlocks.length; r += 1) { - if (i < ecdata[r].length) { - data[index] = ecdata[r][i]; - index += 1; - } - } - } + var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); + var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1); - return data; - }; + var modPoly = rawPoly.mod(rsPoly); + ecdata[r] = new Array(rsPoly.getLength() - 1); + for (var i = 0; i < ecdata[r].length; i += 1) { + var modIndex = i + modPoly.getLength() - ecdata[r].length; + ecdata[r][i] = modIndex >= 0 ? modPoly.getAt(modIndex) : 0; + } + } - var createData = function(typeNumber, errorCorrectLevel, dataList) { + var totalCodeCount = 0; + for (var i = 0; i < rsBlocks.length; i += 1) { + totalCodeCount += rsBlocks[i].totalCount; + } - var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel); + var data = new Array(totalCodeCount); + var index = 0; - var buffer = qrBitBuffer(); + for (var i = 0; i < maxDcCount; i += 1) { + for (var r = 0; r < rsBlocks.length; r += 1) { + if (i < dcdata[r].length) { + data[index] = dcdata[r][i]; + index += 1; + } + } + } - for (var i = 0; i < dataList.length; i += 1) { - var data = dataList[i]; - buffer.put(data.getMode(), 4); - buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) ); - data.write(buffer); - } + for (var i = 0; i < maxEcCount; i += 1) { + for (var r = 0; r < rsBlocks.length; r += 1) { + if (i < ecdata[r].length) { + data[index] = ecdata[r][i]; + index += 1; + } + } + } - // calc num max data. - var totalDataCount = 0; - for (var i = 0; i < rsBlocks.length; i += 1) { - totalDataCount += rsBlocks[i].dataCount; - } + return data; + }; - if (buffer.getLengthInBits() > totalDataCount * 8) { - throw new Error('code length overflow. (' - + buffer.getLengthInBits() - + '>' - + totalDataCount * 8 - + ')'); - } + var createData = function (typeNumber, errorCorrectLevel, dataList) { + var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel); - // end code - if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { - buffer.put(0, 4); - } + var buffer = qrBitBuffer(); - // padding - while (buffer.getLengthInBits() % 8 != 0) { - buffer.putBit(false); - } + for (var i = 0; i < dataList.length; i += 1) { + var data = dataList[i]; + buffer.put(data.getMode(), 4); + buffer.put( + data.getLength(), + QRUtil.getLengthInBits(data.getMode(), typeNumber) + ); + data.write(buffer); + } - // padding - while (true) { + // calc num max data. + var totalDataCount = 0; + for (var i = 0; i < rsBlocks.length; i += 1) { + totalDataCount += rsBlocks[i].dataCount; + } - if (buffer.getLengthInBits() >= totalDataCount * 8) { - break; - } - buffer.put(PAD0, 8); + if (buffer.getLengthInBits() > totalDataCount * 8) { + throw new Error( + "code length overflow. (" + + buffer.getLengthInBits() + + ">" + + totalDataCount * 8 + + ")" + ); + } - if (buffer.getLengthInBits() >= totalDataCount * 8) { - break; - } - buffer.put(PAD1, 8); - } + // end code + if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { + buffer.put(0, 4); + } - return createBytes(buffer, rsBlocks); - }; + // padding + while (buffer.getLengthInBits() % 8 != 0) { + buffer.putBit(false); + } - _this.addData = function(data) { - var newData = qr8BitByte(data); - _dataList.push(newData); - _dataCache = null; - }; + // padding + while (true) { + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD0, 8); - _this.isDark = function(row, col) { - if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) { - throw new Error(row + ',' + col); - } - return _modules[row][col]; - }; + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(PAD1, 8); + } - _this.getModuleCount = function() { - return _moduleCount; - }; + return createBytes(buffer, rsBlocks); + }; - _this.make = function() { - makeImpl(false, getBestMaskPattern() ); - }; + _this.addData = function (data) { + var newData = qr8BitByte(data); + _dataList.push(newData); + _dataCache = null; + }; - _this.createTableTag = function(cellSize, margin) { + _this.isDark = function (row, col) { + if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) { + throw new Error(row + "," + col); + } + return _modules[row][col]; + }; - cellSize = cellSize || 2; - margin = (typeof margin == 'undefined')? cellSize * 4 : margin; + _this.getModuleCount = function () { + return _moduleCount; + }; - var qrHtml = ''; + _this.make = function () { + makeImpl(false, getBestMaskPattern()); + }; - qrHtml += '<table style="'; - qrHtml += ' border-width: 0px; border-style: none;'; - qrHtml += ' border-collapse: collapse;'; - qrHtml += ' padding: 0px; margin: ' + margin + 'px;'; - qrHtml += '">'; - qrHtml += '<tbody>'; + _this.createTableTag = function (cellSize, margin) { + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; - for (var r = 0; r < _this.getModuleCount(); r += 1) { + var qrHtml = ""; - qrHtml += '<tr>'; + qrHtml += '<table style="'; + qrHtml += " border-width: 0px; border-style: none;"; + qrHtml += " border-collapse: collapse;"; + qrHtml += " padding: 0px; margin: " + margin + "px;"; + qrHtml += '">'; + qrHtml += "<tbody>"; - for (var c = 0; c < _this.getModuleCount(); c += 1) { - qrHtml += '<td style="'; - qrHtml += ' border-width: 0px; border-style: none;'; - qrHtml += ' border-collapse: collapse;'; - qrHtml += ' padding: 0px; margin: 0px;'; - qrHtml += ' width: ' + cellSize + 'px;'; - qrHtml += ' height: ' + cellSize + 'px;'; - qrHtml += ' background-color: '; - qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff'; - qrHtml += ';'; - qrHtml += '"/>'; - } + for (var r = 0; r < _this.getModuleCount(); r += 1) { + qrHtml += "<tr>"; - qrHtml += '</tr>'; - } + for (var c = 0; c < _this.getModuleCount(); c += 1) { + qrHtml += '<td style="'; + qrHtml += " border-width: 0px; border-style: none;"; + qrHtml += " border-collapse: collapse;"; + qrHtml += " padding: 0px; margin: 0px;"; + qrHtml += " width: " + cellSize + "px;"; + qrHtml += " height: " + cellSize + "px;"; + qrHtml += " background-color: "; + qrHtml += _this.isDark(r, c) ? "#000000" : "#ffffff"; + qrHtml += ";"; + qrHtml += '"/>'; + } - qrHtml += '</tbody>'; - qrHtml += '</table>'; + qrHtml += "</tr>"; + } - return qrHtml; - }; + qrHtml += "</tbody>"; + qrHtml += "</table>"; - _this.createImgTag = function(cellSize, margin, size) { + return qrHtml; + }; - cellSize = cellSize || 2; - margin = (typeof margin == 'undefined')? cellSize * 4 : margin; + _this.createImgTag = function (cellSize, margin, size) { + cellSize = cellSize || 2; + margin = typeof margin == "undefined" ? cellSize * 4 : margin; - var min = margin; - var max = _this.getModuleCount() * cellSize + margin; + var min = margin; + var max = _this.getModuleCount() * cellSize + margin; - return createImgTag(size, size, function(x, y) { - if (min <= x && x < max && min <= y && y < max) { - var c = Math.floor( (x - min) / cellSize); - var r = Math.floor( (y - min) / cellSize); - return _this.isDark(r, c)? 0 : 1; - } else { - return 1; - } - } ); - }; + return createImgTag(size, size, function (x, y) { + if (min <= x && x < max && min <= y && y < max) { + var c = Math.floor((x - min) / cellSize); + var r = Math.floor((y - min) / cellSize); + return _this.isDark(r, c) ? 0 : 1; + } else { + return 1; + } + }); + }; - return _this; + return _this; }; //--------------------------------------------------------------------- // qrcode.stringToBytes //--------------------------------------------------------------------- -qrcode.stringToBytes = function(s) { - var bytes = new Array(); - for (var i = 0; i < s.length; i += 1) { - var c = s.charCodeAt(i); - bytes.push(c & 0xff); - } - return bytes; +qrcode.stringToBytes = function (s) { + var bytes = new Array(); + for (var i = 0; i < s.length; i += 1) { + var c = s.charCodeAt(i); + bytes.push(c & 0xff); + } + return bytes; }; //--------------------------------------------------------------------- @@ -492,65 +469,63 @@ qrcode.stringToBytes = function(s) { * [16bit Unicode],[16bit Bytes], ... * @param numChars */ -qrcode.createStringToBytes = function(unicodeData, numChars) { +qrcode.createStringToBytes = function (unicodeData, numChars) { + // create conversion map. - // create conversion map. - - var unicodeMap = function() { - - var bin = base64DecodeInputStream(unicodeData); - var read = function() { - var b = bin.read(); - if (b == -1) throw new Error(); - return b; - }; + var unicodeMap = (function () { + var bin = base64DecodeInputStream(unicodeData); + var read = function () { + var b = bin.read(); + if (b == -1) throw new Error(); + return b; + }; - var count = 0; - var unicodeMap = {}; - while (true) { - var b0 = bin.read(); - if (b0 == -1) break; - var b1 = read(); - var b2 = read(); - var b3 = read(); - var k = String.fromCharCode( (b0 << 8) | b1); - var v = (b2 << 8) | b3; - unicodeMap[k] = v; - count += 1; - } - if (count != numChars) { - throw new Error(count + ' != ' + numChars); - } + var count = 0; + var unicodeMap = {}; + while (true) { + var b0 = bin.read(); + if (b0 == -1) break; + var b1 = read(); + var b2 = read(); + var b3 = read(); + var k = String.fromCharCode((b0 << 8) | b1); + var v = (b2 << 8) | b3; + unicodeMap[k] = v; + count += 1; + } + if (count != numChars) { + throw new Error(count + " != " + numChars); + } - return unicodeMap; - }(); + return unicodeMap; + })(); - var unknownChar = '?'.charCodeAt(0); + var unknownChar = "?".charCodeAt(0); - return function(s) { - var bytes = new Array(); - for (var i = 0; i < s.length; i += 1) { - var c = s.charCodeAt(i); - if (c < 128) { - bytes.push(c); - } else { - var b = unicodeMap[s.charAt(i)]; - if (typeof b == 'number') { - if ( (b & 0xff) == b) { - // 1byte - bytes.push(b); - } else { - // 2bytes - bytes.push(b >>> 8); - bytes.push(b & 0xff); - } - } else { - bytes.push(unknownChar); - } - } - } - return bytes; - }; + return function (s) { + var bytes = new Array(); + for (var i = 0; i < s.length; i += 1) { + var c = s.charCodeAt(i); + if (c < 128) { + bytes.push(c); + } else { + var b = unicodeMap[s.charAt(i)]; + if (typeof b == "number") { + if ((b & 0xff) == b) { + // 1byte + bytes.push(b); + } else { + // 2bytes + bytes.push(b >>> 8); + bytes.push(b & 0xff); + } + } else { + bytes.push(unknownChar); + } + } + } + return bytes; + }; }; //--------------------------------------------------------------------- @@ -558,10 +533,10 @@ qrcode.createStringToBytes = function(unicodeData, numChars) { //--------------------------------------------------------------------- var QRMode = { - MODE_NUMBER : 1 << 0, - MODE_ALPHA_NUM : 1 << 1, - MODE_8BIT_BYTE : 1 << 2, - MODE_KANJI : 1 << 3 + MODE_NUMBER: 1 << 0, + MODE_ALPHA_NUM: 1 << 1, + MODE_8BIT_BYTE: 1 << 2, + MODE_KANJI: 1 << 3, }; //--------------------------------------------------------------------- @@ -569,10 +544,10 @@ var QRMode = { //--------------------------------------------------------------------- var QRErrorCorrectLevel = { - L : 1, - M : 0, - Q : 3, - H : 2 + L: 1, + M: 0, + Q: 3, + H: 2, }; //--------------------------------------------------------------------- @@ -580,581 +555,759 @@ var QRErrorCorrectLevel = { //--------------------------------------------------------------------- var QRMaskPattern = { - PATTERN000 : 0, - PATTERN001 : 1, - PATTERN010 : 2, - PATTERN011 : 3, - PATTERN100 : 4, - PATTERN101 : 5, - PATTERN110 : 6, - PATTERN111 : 7 + PATTERN000: 0, + PATTERN001: 1, + PATTERN010: 2, + PATTERN011: 3, + PATTERN100: 4, + PATTERN101: 5, + PATTERN110: 6, + PATTERN111: 7, }; //--------------------------------------------------------------------- // QRUtil //--------------------------------------------------------------------- -var QRUtil = function() { - - var PATTERN_POSITION_TABLE = [ - [], - [6, 18], - [6, 22], - [6, 26], - [6, 30], - [6, 34], - [6, 22, 38], - [6, 24, 42], - [6, 26, 46], - [6, 28, 50], - [6, 30, 54], - [6, 32, 58], - [6, 34, 62], - [6, 26, 46, 66], - [6, 26, 48, 70], - [6, 26, 50, 74], - [6, 30, 54, 78], - [6, 30, 56, 82], - [6, 30, 58, 86], - [6, 34, 62, 90], - [6, 28, 50, 72, 94], - [6, 26, 50, 74, 98], - [6, 30, 54, 78, 102], - [6, 28, 54, 80, 106], - [6, 32, 58, 84, 110], - [6, 30, 58, 86, 114], - [6, 34, 62, 90, 118], - [6, 26, 50, 74, 98, 122], - [6, 30, 54, 78, 102, 126], - [6, 26, 52, 78, 104, 130], - [6, 30, 56, 82, 108, 134], - [6, 34, 60, 86, 112, 138], - [6, 30, 58, 86, 114, 142], - [6, 34, 62, 90, 118, 146], - [6, 30, 54, 78, 102, 126, 150], - [6, 24, 50, 76, 102, 128, 154], - [6, 28, 54, 80, 106, 132, 158], - [6, 32, 58, 84, 110, 136, 162], - [6, 26, 54, 82, 110, 138, 166], - [6, 30, 58, 86, 114, 142, 170] - ]; - var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0); - var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0); - var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1); +var QRUtil = (function () { + var PATTERN_POSITION_TABLE = [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170], + ]; + var G15 = + (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0); + var G18 = + (1 << 12) | + (1 << 11) | + (1 << 10) | + (1 << 9) | + (1 << 8) | + (1 << 5) | + (1 << 2) | + (1 << 0); + var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1); - var _this = {}; - - var getBCHDigit = function(data) { - var digit = 0; - while (data != 0) { - digit += 1; - data >>>= 1; - } - return digit; - }; + var _this = {}; - _this.getBCHTypeInfo = function(data) { - var d = data << 10; - while (getBCHDigit(d) - getBCHDigit(G15) >= 0) { - d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) ); - } - return ( (data << 10) | d) ^ G15_MASK; - }; - - _this.getBCHTypeNumber = function(data) { - var d = data << 12; - while (getBCHDigit(d) - getBCHDigit(G18) >= 0) { - d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) ); - } - return (data << 12) | d; - }; - - _this.getPatternPosition = function(typeNumber) { - return PATTERN_POSITION_TABLE[typeNumber - 1]; - }; - - _this.getMaskFunction = function(maskPattern) { - - switch (maskPattern) { - - case QRMaskPattern.PATTERN000 : - return function(i, j) { return (i + j) % 2 == 0; }; - case QRMaskPattern.PATTERN001 : - return function(i, j) { return i % 2 == 0; }; - case QRMaskPattern.PATTERN010 : - return function(i, j) { return j % 3 == 0; }; - case QRMaskPattern.PATTERN011 : - return function(i, j) { return (i + j) % 3 == 0; }; - case QRMaskPattern.PATTERN100 : - return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; }; - case QRMaskPattern.PATTERN101 : - return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; }; - case QRMaskPattern.PATTERN110 : - return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; }; - case QRMaskPattern.PATTERN111 : - return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; }; - - default : - throw new Error('bad maskPattern:' + maskPattern); - } - }; - - _this.getErrorCorrectPolynomial = function(errorCorrectLength) { - var a = qrPolynomial([1], 0); - for (var i = 0; i < errorCorrectLength; i += 1) { - a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) ); - } - return a; - }; - - _this.getLengthInBits = function(mode, type) { - - if (1 <= type && type < 10) { - - // 1 - 9 - - switch(mode) { - case QRMode.MODE_NUMBER : return 10; - case QRMode.MODE_ALPHA_NUM : return 9; - case QRMode.MODE_8BIT_BYTE : return 8; - case QRMode.MODE_KANJI : return 8; - default : - throw new Error('mode:' + mode); - } - - } else if (type < 27) { + var getBCHDigit = function (data) { + var digit = 0; + while (data != 0) { + digit += 1; + data >>>= 1; + } + return digit; + }; - // 10 - 26 + _this.getBCHTypeInfo = function (data) { + var d = data << 10; + while (getBCHDigit(d) - getBCHDigit(G15) >= 0) { + d ^= G15 << (getBCHDigit(d) - getBCHDigit(G15)); + } + return ((data << 10) | d) ^ G15_MASK; + }; - switch(mode) { - case QRMode.MODE_NUMBER : return 12; - case QRMode.MODE_ALPHA_NUM : return 11; - case QRMode.MODE_8BIT_BYTE : return 16; - case QRMode.MODE_KANJI : return 10; - default : - throw new Error('mode:' + mode); - } + _this.getBCHTypeNumber = function (data) { + var d = data << 12; + while (getBCHDigit(d) - getBCHDigit(G18) >= 0) { + d ^= G18 << (getBCHDigit(d) - getBCHDigit(G18)); + } + return (data << 12) | d; + }; - } else if (type < 41) { + _this.getPatternPosition = function (typeNumber) { + return PATTERN_POSITION_TABLE[typeNumber - 1]; + }; - // 27 - 40 + _this.getMaskFunction = function (maskPattern) { + switch (maskPattern) { + case QRMaskPattern.PATTERN000: + return function (i, j) { + return (i + j) % 2 == 0; + }; + case QRMaskPattern.PATTERN001: + return function (i, j) { + return i % 2 == 0; + }; + case QRMaskPattern.PATTERN010: + return function (i, j) { + return j % 3 == 0; + }; + case QRMaskPattern.PATTERN011: + return function (i, j) { + return (i + j) % 3 == 0; + }; + case QRMaskPattern.PATTERN100: + return function (i, j) { + return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0; + }; + case QRMaskPattern.PATTERN101: + return function (i, j) { + return ((i * j) % 2) + ((i * j) % 3) == 0; + }; + case QRMaskPattern.PATTERN110: + return function (i, j) { + return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0; + }; + case QRMaskPattern.PATTERN111: + return function (i, j) { + return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0; + }; - switch(mode) { - case QRMode.MODE_NUMBER : return 14; - case QRMode.MODE_ALPHA_NUM : return 13; - case QRMode.MODE_8BIT_BYTE : return 16; - case QRMode.MODE_KANJI : return 12; - default : - throw new Error('mode:' + mode); - } + default: + throw new Error("bad maskPattern:" + maskPattern); + } + }; - } else { - throw new Error('type:' + type); - } - }; + _this.getErrorCorrectPolynomial = function (errorCorrectLength) { + var a = qrPolynomial([1], 0); + for (var i = 0; i < errorCorrectLength; i += 1) { + a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0)); + } + return a; + }; - _this.getLostPoint = function(qrcode) { + _this.getLengthInBits = function (mode, type) { + if (1 <= type && type < 10) { + // 1 - 9 - var moduleCount = qrcode.getModuleCount(); + switch (mode) { + case QRMode.MODE_NUMBER: + return 10; + case QRMode.MODE_ALPHA_NUM: + return 9; + case QRMode.MODE_8BIT_BYTE: + return 8; + case QRMode.MODE_KANJI: + return 8; + default: + throw new Error("mode:" + mode); + } + } else if (type < 27) { + // 10 - 26 - var lostPoint = 0; + switch (mode) { + case QRMode.MODE_NUMBER: + return 12; + case QRMode.MODE_ALPHA_NUM: + return 11; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 10; + default: + throw new Error("mode:" + mode); + } + } else if (type < 41) { + // 27 - 40 - // LEVEL1 + switch (mode) { + case QRMode.MODE_NUMBER: + return 14; + case QRMode.MODE_ALPHA_NUM: + return 13; + case QRMode.MODE_8BIT_BYTE: + return 16; + case QRMode.MODE_KANJI: + return 12; + default: + throw new Error("mode:" + mode); + } + } else { + throw new Error("type:" + type); + } + }; - for (var row = 0; row < moduleCount; row += 1) { - for (var col = 0; col < moduleCount; col += 1) { + _this.getLostPoint = function (qrcode) { + var moduleCount = qrcode.getModuleCount(); - var sameCount = 0; - var dark = qrcode.isDark(row, col); + var lostPoint = 0; - for (var r = -1; r <= 1; r += 1) { + // LEVEL1 - if (row + r < 0 || moduleCount <= row + r) { - continue; - } + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount; col += 1) { + var sameCount = 0; + var dark = qrcode.isDark(row, col); - for (var c = -1; c <= 1; c += 1) { + for (var r = -1; r <= 1; r += 1) { + if (row + r < 0 || moduleCount <= row + r) { + continue; + } - if (col + c < 0 || moduleCount <= col + c) { - continue; - } + for (var c = -1; c <= 1; c += 1) { + if (col + c < 0 || moduleCount <= col + c) { + continue; + } - if (r == 0 && c == 0) { - continue; - } + if (r == 0 && c == 0) { + continue; + } - if (dark == qrcode.isDark(row + r, col + c) ) { - sameCount += 1; - } - } - } + if (dark == qrcode.isDark(row + r, col + c)) { + sameCount += 1; + } + } + } - if (sameCount > 5) { - lostPoint += (3 + sameCount - 5); - } - } - }; + if (sameCount > 5) { + lostPoint += 3 + sameCount - 5; + } + } + } - // LEVEL2 + // LEVEL2 - for (var row = 0; row < moduleCount - 1; row += 1) { - for (var col = 0; col < moduleCount - 1; col += 1) { - var count = 0; - if (qrcode.isDark(row, col) ) count += 1; - if (qrcode.isDark(row + 1, col) ) count += 1; - if (qrcode.isDark(row, col + 1) ) count += 1; - if (qrcode.isDark(row + 1, col + 1) ) count += 1; - if (count == 0 || count == 4) { - lostPoint += 3; - } - } - } + for (var row = 0; row < moduleCount - 1; row += 1) { + for (var col = 0; col < moduleCount - 1; col += 1) { + var count = 0; + if (qrcode.isDark(row, col)) count += 1; + if (qrcode.isDark(row + 1, col)) count += 1; + if (qrcode.isDark(row, col + 1)) count += 1; + if (qrcode.isDark(row + 1, col + 1)) count += 1; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + } - // LEVEL3 + // LEVEL3 - for (var row = 0; row < moduleCount; row += 1) { - for (var col = 0; col < moduleCount - 6; col += 1) { - if (qrcode.isDark(row, col) - && !qrcode.isDark(row, col + 1) - && qrcode.isDark(row, col + 2) - && qrcode.isDark(row, col + 3) - && qrcode.isDark(row, col + 4) - && !qrcode.isDark(row, col + 5) - && qrcode.isDark(row, col + 6) ) { - lostPoint += 40; - } - } - } + for (var row = 0; row < moduleCount; row += 1) { + for (var col = 0; col < moduleCount - 6; col += 1) { + if ( + qrcode.isDark(row, col) && + !qrcode.isDark(row, col + 1) && + qrcode.isDark(row, col + 2) && + qrcode.isDark(row, col + 3) && + qrcode.isDark(row, col + 4) && + !qrcode.isDark(row, col + 5) && + qrcode.isDark(row, col + 6) + ) { + lostPoint += 40; + } + } + } - for (var col = 0; col < moduleCount; col += 1) { - for (var row = 0; row < moduleCount - 6; row += 1) { - if (qrcode.isDark(row, col) - && !qrcode.isDark(row + 1, col) - && qrcode.isDark(row + 2, col) - && qrcode.isDark(row + 3, col) - && qrcode.isDark(row + 4, col) - && !qrcode.isDark(row + 5, col) - && qrcode.isDark(row + 6, col) ) { - lostPoint += 40; - } - } - } + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount - 6; row += 1) { + if ( + qrcode.isDark(row, col) && + !qrcode.isDark(row + 1, col) && + qrcode.isDark(row + 2, col) && + qrcode.isDark(row + 3, col) && + qrcode.isDark(row + 4, col) && + !qrcode.isDark(row + 5, col) && + qrcode.isDark(row + 6, col) + ) { + lostPoint += 40; + } + } + } - // LEVEL4 + // LEVEL4 - var darkCount = 0; + var darkCount = 0; - for (var col = 0; col < moduleCount; col += 1) { - for (var row = 0; row < moduleCount; row += 1) { - if (qrcode.isDark(row, col) ) { - darkCount += 1; - } - } - } + for (var col = 0; col < moduleCount; col += 1) { + for (var row = 0; row < moduleCount; row += 1) { + if (qrcode.isDark(row, col)) { + darkCount += 1; + } + } + } - var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; - lostPoint += ratio * 10; + var ratio = + Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; - return lostPoint; - }; + return lostPoint; + }; - return _this; -}(); + return _this; +})(); //--------------------------------------------------------------------- // QRMath //--------------------------------------------------------------------- -var QRMath = function() { +var QRMath = (function () { + var EXP_TABLE = new Array(256); + var LOG_TABLE = new Array(256); - var EXP_TABLE = new Array(256); - var LOG_TABLE = new Array(256); + // initialize tables + for (var i = 0; i < 8; i += 1) { + EXP_TABLE[i] = 1 << i; + } + for (var i = 8; i < 256; i += 1) { + EXP_TABLE[i] = + EXP_TABLE[i - 4] ^ EXP_TABLE[i - 5] ^ EXP_TABLE[i - 6] ^ EXP_TABLE[i - 8]; + } + for (var i = 0; i < 255; i += 1) { + LOG_TABLE[EXP_TABLE[i]] = i; + } - // initialize tables - for (var i = 0; i < 8; i += 1) { - EXP_TABLE[i] = 1 << i; - } - for (var i = 8; i < 256; i += 1) { - EXP_TABLE[i] = EXP_TABLE[i - 4] - ^ EXP_TABLE[i - 5] - ^ EXP_TABLE[i - 6] - ^ EXP_TABLE[i - 8]; - } - for (var i = 0; i < 255; i += 1) { - LOG_TABLE[EXP_TABLE[i] ] = i; - } - - var _this = {}; + var _this = {}; - _this.glog = function(n) { - - if (n < 1) { - throw new Error('glog(' + n + ')'); - } - - return LOG_TABLE[n]; - }; + _this.glog = function (n) { + if (n < 1) { + throw new Error("glog(" + n + ")"); + } - _this.gexp = function(n) { + return LOG_TABLE[n]; + }; - while (n < 0) { - n += 255; - } + _this.gexp = function (n) { + while (n < 0) { + n += 255; + } - while (n >= 256) { - n -= 255; - } + while (n >= 256) { + n -= 255; + } - return EXP_TABLE[n]; - }; + return EXP_TABLE[n]; + }; - return _this; -}(); + return _this; +})(); //--------------------------------------------------------------------- // qrPolynomial //--------------------------------------------------------------------- function qrPolynomial(num, shift) { + if (typeof num.length == "undefined") { + throw new Error(num.length + "/" + shift); + } - if (typeof num.length == 'undefined') { - throw new Error(num.length + '/' + shift); + var _num = (function () { + var offset = 0; + while (offset < num.length && num[offset] == 0) { + offset += 1; } + var _num = new Array(num.length - offset + shift); + for (var i = 0; i < num.length - offset; i += 1) { + _num[i] = num[i + offset]; + } + return _num; + })(); - var _num = function() { - var offset = 0; - while (offset < num.length && num[offset] == 0) { - offset += 1; - } - var _num = new Array(num.length - offset + shift); - for (var i = 0; i < num.length - offset; i += 1) { - _num[i] = num[i + offset]; - } - return _num; - }(); - - var _this = {}; - - _this.getAt = function(index) { - return _num[index]; - }; - - _this.getLength = function() { - return _num.length; - }; + var _this = {}; - _this.multiply = function(e) { + _this.getAt = function (index) { + return _num[index]; + }; - var num = new Array(_this.getLength() + e.getLength() - 1); + _this.getLength = function () { + return _num.length; + }; - for (var i = 0; i < _this.getLength(); i += 1) { - for (var j = 0; j < e.getLength(); j += 1) { - num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) ); - } - } + _this.multiply = function (e) { + var num = new Array(_this.getLength() + e.getLength() - 1); - return qrPolynomial(num, 0); - }; + for (var i = 0; i < _this.getLength(); i += 1) { + for (var j = 0; j < e.getLength(); j += 1) { + num[i + j] ^= QRMath.gexp( + QRMath.glog(_this.getAt(i)) + QRMath.glog(e.getAt(j)) + ); + } + } - _this.mod = function(e) { + return qrPolynomial(num, 0); + }; - if (_this.getLength() - e.getLength() < 0) { - return _this; - } + _this.mod = function (e) { + if (_this.getLength() - e.getLength() < 0) { + return _this; + } - var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) ); + var ratio = QRMath.glog(_this.getAt(0)) - QRMath.glog(e.getAt(0)); - var num = new Array(_this.getLength() ); - for (var i = 0; i < _this.getLength(); i += 1) { - num[i] = _this.getAt(i); - } + var num = new Array(_this.getLength()); + for (var i = 0; i < _this.getLength(); i += 1) { + num[i] = _this.getAt(i); + } - for (var i = 0; i < e.getLength(); i += 1) { - num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio); - } + for (var i = 0; i < e.getLength(); i += 1) { + num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i)) + ratio); + } - // recursive call - return qrPolynomial(num, 0).mod(e); - }; + // recursive call + return qrPolynomial(num, 0).mod(e); + }; - return _this; + return _this; } //--------------------------------------------------------------------- // QRRSBlock //--------------------------------------------------------------------- -var QRRSBlock = function() { - - - // [1: [L, M, Q, H], ..] - var RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]]; - - var qrRSBlock = function(totalCount, dataCount) { - var _this = {}; - _this.totalCount = totalCount; - _this.dataCount = dataCount; - return _this; - }; +var QRRSBlock = (function () { + // [1: [L, M, Q, H], ..] + var RS_BLOCK_TABLE = [ + [1, 26, 19], + [1, 26, 16], + [1, 26, 13], + [1, 26, 9], + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + [4, 101, 81], + [1, 80, 50, 4, 81, 51], + [4, 50, 22, 4, 51, 23], + [3, 36, 12, 8, 37, 13], + [2, 116, 92, 2, 117, 93], + [6, 58, 36, 2, 59, 37], + [4, 46, 20, 6, 47, 21], + [7, 42, 14, 4, 43, 15], + [4, 133, 107], + [8, 59, 37, 1, 60, 38], + [8, 44, 20, 4, 45, 21], + [12, 33, 11, 4, 34, 12], + [3, 145, 115, 1, 146, 116], + [4, 64, 40, 5, 65, 41], + [11, 36, 16, 5, 37, 17], + [11, 36, 12, 5, 37, 13], + [5, 109, 87, 1, 110, 88], + [5, 65, 41, 5, 66, 42], + [5, 54, 24, 7, 55, 25], + [11, 36, 12], + [5, 122, 98, 1, 123, 99], + [7, 73, 45, 3, 74, 46], + [15, 43, 19, 2, 44, 20], + [3, 45, 15, 13, 46, 16], + [1, 135, 107, 5, 136, 108], + [10, 74, 46, 1, 75, 47], + [1, 50, 22, 15, 51, 23], + [2, 42, 14, 17, 43, 15], + [5, 150, 120, 1, 151, 121], + [9, 69, 43, 4, 70, 44], + [17, 50, 22, 1, 51, 23], + [2, 42, 14, 19, 43, 15], + [3, 141, 113, 4, 142, 114], + [3, 70, 44, 11, 71, 45], + [17, 47, 21, 4, 48, 22], + [9, 39, 13, 16, 40, 14], + [3, 135, 107, 5, 136, 108], + [3, 67, 41, 13, 68, 42], + [15, 54, 24, 5, 55, 25], + [15, 43, 15, 10, 44, 16], + [4, 144, 116, 4, 145, 117], + [17, 68, 42], + [17, 50, 22, 6, 51, 23], + [19, 46, 16, 6, 47, 17], + [2, 139, 111, 7, 140, 112], + [17, 74, 46], + [7, 54, 24, 16, 55, 25], + [34, 37, 13], + [4, 151, 121, 5, 152, 122], + [4, 75, 47, 14, 76, 48], + [11, 54, 24, 14, 55, 25], + [16, 45, 15, 14, 46, 16], + [6, 147, 117, 4, 148, 118], + [6, 73, 45, 14, 74, 46], + [11, 54, 24, 16, 55, 25], + [30, 46, 16, 2, 47, 17], + [8, 132, 106, 4, 133, 107], + [8, 75, 47, 13, 76, 48], + [7, 54, 24, 22, 55, 25], + [22, 45, 15, 13, 46, 16], + [10, 142, 114, 2, 143, 115], + [19, 74, 46, 4, 75, 47], + [28, 50, 22, 6, 51, 23], + [33, 46, 16, 4, 47, 17], + [8, 152, 122, 4, 153, 123], + [22, 73, 45, 3, 74, 46], + [8, 53, 23, 26, 54, 24], + [12, 45, 15, 28, 46, 16], + [3, 147, 117, 10, 148, 118], + [3, 73, 45, 23, 74, 46], + [4, 54, 24, 31, 55, 25], + [11, 45, 15, 31, 46, 16], + [7, 146, 116, 7, 147, 117], + [21, 73, 45, 7, 74, 46], + [1, 53, 23, 37, 54, 24], + [19, 45, 15, 26, 46, 16], + [5, 145, 115, 10, 146, 116], + [19, 75, 47, 10, 76, 48], + [15, 54, 24, 25, 55, 25], + [23, 45, 15, 25, 46, 16], + [13, 145, 115, 3, 146, 116], + [2, 74, 46, 29, 75, 47], + [42, 54, 24, 1, 55, 25], + [23, 45, 15, 28, 46, 16], + [17, 145, 115], + [10, 74, 46, 23, 75, 47], + [10, 54, 24, 35, 55, 25], + [19, 45, 15, 35, 46, 16], + [17, 145, 115, 1, 146, 116], + [14, 74, 46, 21, 75, 47], + [29, 54, 24, 19, 55, 25], + [11, 45, 15, 46, 46, 16], + [13, 145, 115, 6, 146, 116], + [14, 74, 46, 23, 75, 47], + [44, 54, 24, 7, 55, 25], + [59, 46, 16, 1, 47, 17], + [12, 151, 121, 7, 152, 122], + [12, 75, 47, 26, 76, 48], + [39, 54, 24, 14, 55, 25], + [22, 45, 15, 41, 46, 16], + [6, 151, 121, 14, 152, 122], + [6, 75, 47, 34, 76, 48], + [46, 54, 24, 10, 55, 25], + [2, 45, 15, 64, 46, 16], + [17, 152, 122, 4, 153, 123], + [29, 74, 46, 14, 75, 47], + [49, 54, 24, 10, 55, 25], + [24, 45, 15, 46, 46, 16], + [4, 152, 122, 18, 153, 123], + [13, 74, 46, 32, 75, 47], + [48, 54, 24, 14, 55, 25], + [42, 45, 15, 32, 46, 16], + [20, 147, 117, 4, 148, 118], + [40, 75, 47, 7, 76, 48], + [43, 54, 24, 22, 55, 25], + [10, 45, 15, 67, 46, 16], + [19, 148, 118, 6, 149, 119], + [18, 75, 47, 31, 76, 48], + [34, 54, 24, 34, 55, 25], + [20, 45, 15, 61, 46, 16], + ]; + var qrRSBlock = function (totalCount, dataCount) { var _this = {}; + _this.totalCount = totalCount; + _this.dataCount = dataCount; + return _this; + }; - var getRsBlockTable = function(typeNumber, errorCorrectLevel) { + var _this = {}; - switch(errorCorrectLevel) { - case QRErrorCorrectLevel.L : - return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; - case QRErrorCorrectLevel.M : - return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; - case QRErrorCorrectLevel.Q : - return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; - case QRErrorCorrectLevel.H : - return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; - default : - return undefined; - } - }; - - _this.getRSBlocks = function(typeNumber, errorCorrectLevel) { + var getRsBlockTable = function (typeNumber, errorCorrectLevel) { + switch (errorCorrectLevel) { + case QRErrorCorrectLevel.L: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; + case QRErrorCorrectLevel.M: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; + case QRErrorCorrectLevel.Q: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; + case QRErrorCorrectLevel.H: + return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; + default: + return undefined; + } + }; - var rsBlock = getRsBlockTable(typeNumber, errorCorrectLevel); + _this.getRSBlocks = function (typeNumber, errorCorrectLevel) { + var rsBlock = getRsBlockTable(typeNumber, errorCorrectLevel); - if (typeof rsBlock == 'undefined') { - throw new Error('bad rs block @ typeNumber:' + typeNumber + - '/errorCorrectLevel:' + errorCorrectLevel); - } + if (typeof rsBlock == "undefined") { + throw new Error( + "bad rs block @ typeNumber:" + + typeNumber + + "/errorCorrectLevel:" + + errorCorrectLevel + ); + } - var length = rsBlock.length / 3; + var length = rsBlock.length / 3; - var list = new Array(); + var list = new Array(); - for (var i = 0; i < length; i += 1) { + for (var i = 0; i < length; i += 1) { + var count = rsBlock[i * 3 + 0]; + var totalCount = rsBlock[i * 3 + 1]; + var dataCount = rsBlock[i * 3 + 2]; - var count = rsBlock[i * 3 + 0]; - var totalCount = rsBlock[i * 3 + 1]; - var dataCount = rsBlock[i * 3 + 2]; + for (var j = 0; j < count; j += 1) { + list.push(qrRSBlock(totalCount, dataCount)); + } + } - for (var j = 0; j < count; j += 1) { - list.push(qrRSBlock(totalCount, dataCount) ); - } - } + return list; + }; - return list; - }; - - return _this; -}(); + return _this; +})(); //--------------------------------------------------------------------- // qrBitBuffer //--------------------------------------------------------------------- -var qrBitBuffer = function() { - - var _buffer = new Array(); - var _length = 0; - - var _this = {}; +var qrBitBuffer = function () { + var _buffer = new Array(); + var _length = 0; - _this.getBuffer = function() { - return _buffer; - }; + var _this = {}; - _this.getAt = function(index) { - var bufIndex = Math.floor(index / 8); - return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1; - }; + _this.getBuffer = function () { + return _buffer; + }; - _this.put = function(num, length) { - for (var i = 0; i < length; i += 1) { - _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1); - } - }; + _this.getAt = function (index) { + var bufIndex = Math.floor(index / 8); + return ((_buffer[bufIndex] >>> (7 - (index % 8))) & 1) == 1; + }; - _this.getLengthInBits = function() { - return _length; - }; + _this.put = function (num, length) { + for (var i = 0; i < length; i += 1) { + _this.putBit(((num >>> (length - i - 1)) & 1) == 1); + } + }; - _this.putBit = function(bit) { + _this.getLengthInBits = function () { + return _length; + }; - var bufIndex = Math.floor(_length / 8); - if (_buffer.length <= bufIndex) { - _buffer.push(0); - } + _this.putBit = function (bit) { + var bufIndex = Math.floor(_length / 8); + if (_buffer.length <= bufIndex) { + _buffer.push(0); + } - if (bit) { - _buffer[bufIndex] |= (0x80 >>> (_length % 8) ); - } + if (bit) { + _buffer[bufIndex] |= 0x80 >>> _length % 8; + } - _length += 1; - }; + _length += 1; + }; - return _this; + return _this; }; //--------------------------------------------------------------------- // qr8BitByte //--------------------------------------------------------------------- -var qr8BitByte = function(data) { - - var _mode = QRMode.MODE_8BIT_BYTE; - var _data = data; - var _parsedData = []; - - var _this = {}; - +var qr8BitByte = function (data) { + var _mode = QRMode.MODE_8BIT_BYTE; + var _data = data; + var _parsedData = []; - // Added to support UTF-8 Characters - for (var i = 0, l = _data.length; i < l; i++) { - var byteArray = []; - var code = _data.charCodeAt(i); + var _this = {}; - if (code > 0x10000) { - byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18); - byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12); - byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6); - byteArray[3] = 0x80 | (code & 0x3F); - } else if (code > 0x800) { - byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12); - byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6); - byteArray[2] = 0x80 | (code & 0x3F); - } else if (code > 0x80) { - byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6); - byteArray[1] = 0x80 | (code & 0x3F); - } else { - byteArray[0] = code; - } + // Added to support UTF-8 Characters + for (var i = 0, l = _data.length; i < l; i++) { + var byteArray = []; + var code = _data.charCodeAt(i); - // Fix Unicode corruption bug - _parsedData.push(byteArray); + if (code > 0x10000) { + byteArray[0] = 0xf0 | ((code & 0x1c0000) >>> 18); + byteArray[1] = 0x80 | ((code & 0x3f000) >>> 12); + byteArray[2] = 0x80 | ((code & 0xfc0) >>> 6); + byteArray[3] = 0x80 | (code & 0x3f); + } else if (code > 0x800) { + byteArray[0] = 0xe0 | ((code & 0xf000) >>> 12); + byteArray[1] = 0x80 | ((code & 0xfc0) >>> 6); + byteArray[2] = 0x80 | (code & 0x3f); + } else if (code > 0x80) { + byteArray[0] = 0xc0 | ((code & 0x7c0) >>> 6); + byteArray[1] = 0x80 | (code & 0x3f); + } else { + byteArray[0] = code; } - _parsedData = Array.prototype.concat.apply([], _parsedData); + // Fix Unicode corruption bug + _parsedData.push(byteArray); + } - if (_parsedData.length != _data.length) { - _parsedData.unshift(191); - _parsedData.unshift(187); - _parsedData.unshift(239); - } + _parsedData = Array.prototype.concat.apply([], _parsedData); - var _bytes = _parsedData; + if (_parsedData.length != _data.length) { + _parsedData.unshift(191); + _parsedData.unshift(187); + _parsedData.unshift(239); + } - _this.getMode = function() { - return _mode; - }; + var _bytes = _parsedData; - _this.getLength = function(buffer) { - return _bytes.length; - }; + _this.getMode = function () { + return _mode; + }; - _this.write = function(buffer) { - for (var i = 0; i < _bytes.length; i += 1) { - buffer.put(_bytes[i], 8); - } - }; + _this.getLength = function (buffer) { + return _bytes.length; + }; - return _this; + _this.write = function (buffer) { + for (var i = 0; i < _bytes.length; i += 1) { + buffer.put(_bytes[i], 8); + } + }; + + return _this; }; //===================================================================== @@ -1165,462 +1318,443 @@ var qr8BitByte = function(data) { // byteArrayOutputStream //--------------------------------------------------------------------- -var byteArrayOutputStream = function() { +var byteArrayOutputStream = function () { + var _bytes = new Array(); - var _bytes = new Array(); + var _this = {}; - var _this = {}; + _this.writeByte = function (b) { + _bytes.push(b & 0xff); + }; - _this.writeByte = function(b) { - _bytes.push(b & 0xff); - }; - - _this.writeShort = function(i) { - _this.writeByte(i); - _this.writeByte(i >>> 8); - }; + _this.writeShort = function (i) { + _this.writeByte(i); + _this.writeByte(i >>> 8); + }; - _this.writeBytes = function(b, off, len) { - off = off || 0; - len = len || b.length; - for (var i = 0; i < len; i += 1) { - _this.writeByte(b[i + off]); - } - }; + _this.writeBytes = function (b, off, len) { + off = off || 0; + len = len || b.length; + for (var i = 0; i < len; i += 1) { + _this.writeByte(b[i + off]); + } + }; - _this.writeString = function(s) { - for (var i = 0; i < s.length; i += 1) { - _this.writeByte(s.charCodeAt(i) ); - } - }; + _this.writeString = function (s) { + for (var i = 0; i < s.length; i += 1) { + _this.writeByte(s.charCodeAt(i)); + } + }; - _this.toByteArray = function() { - return _bytes; - }; + _this.toByteArray = function () { + return _bytes; + }; - _this.toString = function() { - var s = ''; - s += '['; - for (var i = 0; i < _bytes.length; i += 1) { - if (i > 0) { - s += ','; - } - s += _bytes[i]; - } - s += ']'; - return s; - }; + _this.toString = function () { + var s = ""; + s += "["; + for (var i = 0; i < _bytes.length; i += 1) { + if (i > 0) { + s += ","; + } + s += _bytes[i]; + } + s += "]"; + return s; + }; - return _this; + return _this; }; //--------------------------------------------------------------------- // base64EncodeOutputStream //--------------------------------------------------------------------- -var base64EncodeOutputStream = function() { - - var _buffer = 0; - var _buflen = 0; - var _length = 0; - var _base64 = ''; - - var _this = {}; - - var writeEncoded = function(b) { - _base64 += String.fromCharCode(encode(b & 0x3f) ); - }; +var base64EncodeOutputStream = function () { + var _buffer = 0; + var _buflen = 0; + var _length = 0; + var _base64 = ""; - var encode = function(n) { - if (n < 0) { - // error. - } else if (n < 26) { - return 0x41 + n; - } else if (n < 52) { - return 0x61 + (n - 26); - } else if (n < 62) { - return 0x30 + (n - 52); - } else if (n == 62) { - return 0x2b; - } else if (n == 63) { - return 0x2f; - } - throw new Error('n:' + n); - }; + var _this = {}; - _this.writeByte = function(n) { + var writeEncoded = function (b) { + _base64 += String.fromCharCode(encode(b & 0x3f)); + }; - _buffer = (_buffer << 8) | (n & 0xff); - _buflen += 8; - _length += 1; + var encode = function (n) { + if (n < 0) { + // error. + } else if (n < 26) { + return 0x41 + n; + } else if (n < 52) { + return 0x61 + (n - 26); + } else if (n < 62) { + return 0x30 + (n - 52); + } else if (n == 62) { + return 0x2b; + } else if (n == 63) { + return 0x2f; + } + throw new Error("n:" + n); + }; - while (_buflen >= 6) { - writeEncoded(_buffer >>> (_buflen - 6) ); - _buflen -= 6; - } - }; + _this.writeByte = function (n) { + _buffer = (_buffer << 8) | (n & 0xff); + _buflen += 8; + _length += 1; - _this.flush = function() { + while (_buflen >= 6) { + writeEncoded(_buffer >>> (_buflen - 6)); + _buflen -= 6; + } + }; - if (_buflen > 0) { - writeEncoded(_buffer << (6 - _buflen) ); - _buffer = 0; - _buflen = 0; - } + _this.flush = function () { + if (_buflen > 0) { + writeEncoded(_buffer << (6 - _buflen)); + _buffer = 0; + _buflen = 0; + } - if (_length % 3 != 0) { - // padding - var padlen = 3 - _length % 3; - for (var i = 0; i < padlen; i += 1) { - _base64 += '='; - } - } - }; + if (_length % 3 != 0) { + // padding + var padlen = 3 - (_length % 3); + for (var i = 0; i < padlen; i += 1) { + _base64 += "="; + } + } + }; - _this.toString = function() { - return _base64; - }; + _this.toString = function () { + return _base64; + }; - return _this; + return _this; }; //--------------------------------------------------------------------- // base64DecodeInputStream //--------------------------------------------------------------------- -var base64DecodeInputStream = function(str) { +var base64DecodeInputStream = function (str) { + var _str = str; + var _pos = 0; + var _buffer = 0; + var _buflen = 0; - var _str = str; - var _pos = 0; - var _buffer = 0; - var _buflen = 0; + var _this = {}; - var _this = {}; - - _this.read = function() { - - while (_buflen < 8) { - - if (_pos >= _str.length) { - if (_buflen == 0) { - return -1; - } - throw new Error('unexpected end of file./' + _buflen); - } + _this.read = function () { + while (_buflen < 8) { + if (_pos >= _str.length) { + if (_buflen == 0) { + return -1; + } + throw new Error("unexpected end of file./" + _buflen); + } - var c = _str.charAt(_pos); - _pos += 1; + var c = _str.charAt(_pos); + _pos += 1; - if (c == '=') { - _buflen = 0; - return -1; - } else if (c.match(/^\s$/) ) { - // ignore if whitespace. - continue; - } + if (c == "=") { + _buflen = 0; + return -1; + } else if (c.match(/^\s$/)) { + // ignore if whitespace. + continue; + } - _buffer = (_buffer << 6) | decode(c.charCodeAt(0) ); - _buflen += 6; - } + _buffer = (_buffer << 6) | decode(c.charCodeAt(0)); + _buflen += 6; + } - var n = (_buffer >>> (_buflen - 8) ) & 0xff; - _buflen -= 8; - return n; - }; + var n = (_buffer >>> (_buflen - 8)) & 0xff; + _buflen -= 8; + return n; + }; - var decode = function(c) { - if (0x41 <= c && c <= 0x5a) { - return c - 0x41; - } else if (0x61 <= c && c <= 0x7a) { - return c - 0x61 + 26; - } else if (0x30 <= c && c <= 0x39) { - return c - 0x30 + 52; - } else if (c == 0x2b) { - return 62; - } else if (c == 0x2f) { - return 63; - } else { - throw new Error('c:' + c); - } - }; + var decode = function (c) { + if (0x41 <= c && c <= 0x5a) { + return c - 0x41; + } else if (0x61 <= c && c <= 0x7a) { + return c - 0x61 + 26; + } else if (0x30 <= c && c <= 0x39) { + return c - 0x30 + 52; + } else if (c == 0x2b) { + return 62; + } else if (c == 0x2f) { + return 63; + } else { + throw new Error("c:" + c); + } + }; - return _this; + return _this; }; //--------------------------------------------------------------------- // gifImage (B/W) //--------------------------------------------------------------------- -var gifImage = function(width, height) { +var gifImage = function (width, height) { + var _width = width; + var _height = height; + var _data = new Array(width * height); - var _width = width; - var _height = height; - var _data = new Array(width * height); + var _this = {}; - var _this = {}; - - _this.setPixel = function(x, y, pixel) { - _data[y * _width + x] = pixel; - }; + _this.setPixel = function (x, y, pixel) { + _data[y * _width + x] = pixel; + }; - _this.write = function(out) { + _this.write = function (out) { + //--------------------------------- + // GIF Signature - //--------------------------------- - // GIF Signature + out.writeString("GIF87a"); - out.writeString('GIF87a'); + //--------------------------------- + // Screen Descriptor - //--------------------------------- - // Screen Descriptor + out.writeShort(_width); + out.writeShort(_height); - out.writeShort(_width); - out.writeShort(_height); + out.writeByte(0x80); // 2bit + out.writeByte(0); + out.writeByte(0); - out.writeByte(0x80); // 2bit - out.writeByte(0); - out.writeByte(0); + //--------------------------------- + // Global Color Map - //--------------------------------- - // Global Color Map + // black + out.writeByte(0x00); + out.writeByte(0x00); + out.writeByte(0x00); - // black - out.writeByte(0x00); - out.writeByte(0x00); - out.writeByte(0x00); + // white + out.writeByte(0xff); + out.writeByte(0xff); + out.writeByte(0xff); - // white - out.writeByte(0xff); - out.writeByte(0xff); - out.writeByte(0xff); + //--------------------------------- + // Image Descriptor - //--------------------------------- - // Image Descriptor + out.writeString(","); + out.writeShort(0); + out.writeShort(0); + out.writeShort(_width); + out.writeShort(_height); + out.writeByte(0); - out.writeString(','); - out.writeShort(0); - out.writeShort(0); - out.writeShort(_width); - out.writeShort(_height); - out.writeByte(0); + //--------------------------------- + // Local Color Map - //--------------------------------- - // Local Color Map + //--------------------------------- + // Raster Data - //--------------------------------- - // Raster Data + var lzwMinCodeSize = 2; + var raster = getLZWRaster(lzwMinCodeSize); - var lzwMinCodeSize = 2; - var raster = getLZWRaster(lzwMinCodeSize); + out.writeByte(lzwMinCodeSize); - out.writeByte(lzwMinCodeSize); + var offset = 0; - var offset = 0; - - while (raster.length - offset > 255) { - out.writeByte(255); - out.writeBytes(raster, offset, 255); - offset += 255; - } - - out.writeByte(raster.length - offset); - out.writeBytes(raster, offset, raster.length - offset); - out.writeByte(0x00); - - //--------------------------------- - // GIF Terminator - out.writeString(';'); - }; - - var bitOutputStream = function(out) { - - var _out = out; - var _bitLength = 0; - var _bitBuffer = 0; + while (raster.length - offset > 255) { + out.writeByte(255); + out.writeBytes(raster, offset, 255); + offset += 255; + } - var _this = {}; + out.writeByte(raster.length - offset); + out.writeBytes(raster, offset, raster.length - offset); + out.writeByte(0x00); - _this.write = function(data, length) { + //--------------------------------- + // GIF Terminator + out.writeString(";"); + }; - if ( (data >>> length) != 0) { - throw new Error('length over'); - } + var bitOutputStream = function (out) { + var _out = out; + var _bitLength = 0; + var _bitBuffer = 0; - while (_bitLength + length >= 8) { - _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) ); - length -= (8 - _bitLength); - data >>>= (8 - _bitLength); - _bitBuffer = 0; - _bitLength = 0; - } + var _this = {}; - _bitBuffer = (data << _bitLength) | _bitBuffer; - _bitLength = _bitLength + length; - }; + _this.write = function (data, length) { + if (data >>> length != 0) { + throw new Error("length over"); + } - _this.flush = function() { - if (_bitLength > 0) { - _out.writeByte(_bitBuffer); - } - }; + while (_bitLength + length >= 8) { + _out.writeByte(0xff & ((data << _bitLength) | _bitBuffer)); + length -= 8 - _bitLength; + data >>>= 8 - _bitLength; + _bitBuffer = 0; + _bitLength = 0; + } - return _this; + _bitBuffer = (data << _bitLength) | _bitBuffer; + _bitLength = _bitLength + length; }; - var getLZWRaster = function(lzwMinCodeSize) { - - var clearCode = 1 << lzwMinCodeSize; - var endCode = (1 << lzwMinCodeSize) + 1; - var bitLength = lzwMinCodeSize + 1; + _this.flush = function () { + if (_bitLength > 0) { + _out.writeByte(_bitBuffer); + } + }; - // Setup LZWTable - var table = lzwTable(); + return _this; + }; - for (var i = 0; i < clearCode; i += 1) { - table.add(String.fromCharCode(i) ); - } - table.add(String.fromCharCode(clearCode) ); - table.add(String.fromCharCode(endCode) ); + var getLZWRaster = function (lzwMinCodeSize) { + var clearCode = 1 << lzwMinCodeSize; + var endCode = (1 << lzwMinCodeSize) + 1; + var bitLength = lzwMinCodeSize + 1; - var byteOut = byteArrayOutputStream(); - var bitOut = bitOutputStream(byteOut); + // Setup LZWTable + var table = lzwTable(); - // clear code - bitOut.write(clearCode, bitLength); + for (var i = 0; i < clearCode; i += 1) { + table.add(String.fromCharCode(i)); + } + table.add(String.fromCharCode(clearCode)); + table.add(String.fromCharCode(endCode)); - var dataIndex = 0; + var byteOut = byteArrayOutputStream(); + var bitOut = bitOutputStream(byteOut); - var s = String.fromCharCode(_data[dataIndex]); - dataIndex += 1; + // clear code + bitOut.write(clearCode, bitLength); - while (dataIndex < _data.length) { + var dataIndex = 0; - var c = String.fromCharCode(_data[dataIndex]); - dataIndex += 1; + var s = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; - if (table.contains(s + c) ) { + while (dataIndex < _data.length) { + var c = String.fromCharCode(_data[dataIndex]); + dataIndex += 1; - s = s + c; + if (table.contains(s + c)) { + s = s + c; + } else { + bitOut.write(table.indexOf(s), bitLength); - } else { + if (table.size() < 0xfff) { + if (table.size() == 1 << bitLength) { + bitLength += 1; + } - bitOut.write(table.indexOf(s), bitLength); + table.add(s + c); + } - if (table.size() < 0xfff) { + s = c; + } + } - if (table.size() == (1 << bitLength) ) { - bitLength += 1; - } + bitOut.write(table.indexOf(s), bitLength); - table.add(s + c); - } + // end code + bitOut.write(endCode, bitLength); - s = c; - } - } + bitOut.flush(); - bitOut.write(table.indexOf(s), bitLength); + return byteOut.toByteArray(); + }; - // end code - bitOut.write(endCode, bitLength); + var lzwTable = function () { + var _map = {}; + var _size = 0; - bitOut.flush(); + var _this = {}; - return byteOut.toByteArray(); + _this.add = function (key) { + if (_this.contains(key)) { + throw new Error("dup key:" + key); + } + _map[key] = _size; + _size += 1; }; - var lzwTable = function() { - - var _map = {}; - var _size = 0; - - var _this = {}; - - _this.add = function(key) { - if (_this.contains(key) ) { - throw new Error('dup key:' + key); - } - _map[key] = _size; - _size += 1; - }; - - _this.size = function() { - return _size; - }; - - _this.indexOf = function(key) { - return _map[key]; - }; + _this.size = function () { + return _size; + }; - _this.contains = function(key) { - return typeof _map[key] != 'undefined'; - }; + _this.indexOf = function (key) { + return _map[key]; + }; - return _this; + _this.contains = function (key) { + return typeof _map[key] != "undefined"; }; return _this; -}; + }; -var createImgTag = function(width, height, getPixel, alt) { + return _this; +}; - var gif = gifImage(width, height); - for (var y = 0; y < height; y += 1) { - for (var x = 0; x < width; x += 1) { - gif.setPixel(x, y, getPixel(x, y) ); - } +var createImgTag = function (width, height, getPixel, alt) { + var gif = gifImage(width, height); + for (var y = 0; y < height; y += 1) { + for (var x = 0; x < width; x += 1) { + gif.setPixel(x, y, getPixel(x, y)); } + } - var b = byteArrayOutputStream(); - gif.write(b); + var b = byteArrayOutputStream(); + gif.write(b); - var base64 = base64EncodeOutputStream(); - var bytes = b.toByteArray(); - for (var i = 0; i < bytes.length; i += 1) { - base64.writeByte(bytes[i]); - } - base64.flush(); + var base64 = base64EncodeOutputStream(); + var bytes = b.toByteArray(); + for (var i = 0; i < bytes.length; i += 1) { + base64.writeByte(bytes[i]); + } + base64.flush(); - var img = ''; - img += 'data:image/gif;base64,'; - img += base64; + var img = ""; + img += "data:image/gif;base64,"; + img += base64; - return img; + return img; }; //--------------------------------------------------------------------- // returns qrcode function. -var drawImg = function(text, options) { - options = options || {}; - var typeNumber = options.typeNumber || 4; - var errorCorrectLevel = options.errorCorrectLevel || 'M'; - var size = options.size || 500; +var drawImg = function (text, options) { + options = options || {}; + var typeNumber = options.typeNumber || 4; + var errorCorrectLevel = options.errorCorrectLevel || "M"; + var size = options.size || 500; - var qr; + var qr; - try { - qr = qrcode(typeNumber, errorCorrectLevel || 'M'); - qr.addData(text); - qr.make(); - } catch (e) { - if(typeNumber >= 40) { - throw new Error('Text too long to encode'); - } else { - return drawImg(text, { - size: size, - errorCorrectLevel: errorCorrectLevel, - typeNumber: typeNumber + 1 - }); - } + try { + qr = qrcode(typeNumber, errorCorrectLevel || "M"); + qr.addData(text); + qr.make(); + } catch (e) { + if (typeNumber >= 40) { + throw new Error("Text too long to encode"); + } else { + return drawImg(text, { + size: size, + errorCorrectLevel: errorCorrectLevel, + typeNumber: typeNumber + 1, + }); } + } - // calc cellsize and margin - var cellsize = parseInt(size / qr.getModuleCount()); - var margin = parseInt((size - qr.getModuleCount() * cellsize) / 2); + // calc cellsize and margin + var cellsize = parseInt(size / qr.getModuleCount()); + var margin = parseInt((size - qr.getModuleCount() * cellsize) / 2); - return qr.createImgTag(cellsize, margin, size); + return qr.createImgTag(cellsize, margin, size); }; export default { - drawImg: drawImg -};
\ No newline at end of file + drawImg: drawImg, +}; diff --git a/static/shopify.html b/static/shopify.html index 886c3d34..ef338d35 100644 --- a/static/shopify.html +++ b/static/shopify.html @@ -1,87 +1,88 @@ <script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script> <script> - window.addEventListener('load', async () => { - let sat = (s) => { - s = Math.abs(s); - let p = Math.floor(Math.log(s) / Math.LN10 + 0.000000001); - let d = Math.floor((p + 1) / 3); + window.addEventListener("load", async () => { + let sat = (s) => { + s = Math.abs(s); + let p = Math.floor(Math.log(s) / Math.LN10 + 0.000000001); + let d = Math.floor((p + 1) / 3); - return ( - '⚡️' + - (parseInt(s) > 0 - ? new Intl.NumberFormat('en-US', { maximumFractionDigits: 2 }).format( - s / Math.pow(1000, d) - ) + ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z'][d] - : 0 - ).toString() - ); - }; + return ( + "⚡️" + + (parseInt(s) > 0 + ? new Intl.NumberFormat("en-US", { maximumFractionDigits: 2 }).format( + s / Math.pow(1000, d) + ) + ["", "K", "M", "G", "T", "P", "E", "Z"][d] + : 0 + ).toString() + ); + }; - let copy = (text) => { - navigator.clipboard.writeText(text); - }; + let copy = (text) => { + navigator.clipboard.writeText(text); + }; - let f = (s, currency) => - new Intl.NumberFormat('en-US', { - style: 'currency', - currency - }) - .format(s) - .replace('CA', ''); + let f = (s, currency) => + new Intl.NumberFormat("en-US", { + style: "currency", + currency, + }) + .format(s) + .replace("CA", ""); - let s = (s) => new Intl.NumberFormat('en-US', { maximumFractionDigits: 0 }).format(s); + let s = (s) => + new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 }).format(s); - let { - default: { drawImg } - } = await import('https://coinos.io/qr.js'); - let base64 = drawImg('test', { size: 300 }); + let { + default: { drawImg }, + } = await import("https://coinos.io/qr.js"); + let base64 = drawImg("test", { size: 300 }); - let link = document.createElement('link'); - link.setAttribute('rel', 'stylesheet'); - link.setAttribute('type', 'text/css'); - link.setAttribute( - 'href', - 'https://fonts.googleapis.com/css?family=Public+Sans:400italic,400,300,700' - ); + let link = document.createElement("link"); + link.setAttribute("rel", "stylesheet"); + link.setAttribute("type", "text/css"); + link.setAttribute( + "href", + "https://fonts.googleapis.com/css?family=Public+Sans:400italic,400,300,700" + ); - var style = document.createElement('style'); - style.innerHTML = `#check { + var style = document.createElement("style"); + style.innerHTML = `#check { transform: scale(0.5); transition: transform 1s; } `; - document.head.appendChild(style); + document.head.appendChild(style); - document.head.appendChild(link); - document.title = 'Pay With Bitcoin'; + document.head.appendChild(link); + document.title = "Pay With Bitcoin"; - let fiat = Shopify.checkout.payment_due; - let main = document.querySelector('main'); - main.style.fontFamily = 'Public Sans, sans-serif'; - main.innerHTML = 'Please Pay'; + let fiat = Shopify.checkout.payment_due; + let main = document.querySelector("main"); + main.style.fontFamily = "Public Sans, sans-serif"; + main.innerHTML = "Please Pay"; - let data = await fetch('https://dev.coinos.io/api/invoice', { - method: 'POST', - mode: 'cors', - headers: { - 'Content-Type': 'application/json', - accept: 'application/json' - }, - body: JSON.stringify({ - invoice: { - fiat, - type: 'lightning', - webhook: `https://dev.coinos.io/api/shopify/${Shopify.checkout.order_id}` - }, - user: { username: 'horseradish' } - }) - }) - .then(function (response) { - return response.json(); - }) - .catch(console.log); + let data = await fetch("https://dev.coinos.io/api/invoice", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json", + accept: "application/json", + }, + body: JSON.stringify({ + invoice: { + fiat, + type: "lightning", + webhook: `https://dev.coinos.io/api/shopify/${Shopify.checkout.order_id}`, + }, + user: { username: "horseradish" }, + }), + }) + .then(function (response) { + return response.json(); + }) + .catch(console.log); - main.innerHTML = `<a href="lightning:${data.hash}"> + main.innerHTML = `<a href="lightning:${data.hash}"> <div style="display: flex; margin-top: 50px; margin-bottom: 80px; position: relative;"> <img id="qrcode" src="${base64}" /> <div id="bg"></div> @@ -89,14 +90,14 @@ </a> <div style="width: 100%; text-align: center; "> <div style="font-size: 24px; font-weight: bold; margin-bottom: 12px;">${f( - (data.amount * data.rate) / 100000000, - data.currency - )}</div> + (data.amount * data.rate) / 100000000, + data.currency + )}</div> <div style="color: #666; font-size: 18px;">${sat(data.amount)}</div> </div> <div style="text-align: center; margin: 40px auto; max-width: 460px; word-break: break-all; line-height: 1.5rem">${ - data.hash - }</div> + data.hash + }</div> <div style="margin: 20px 0; display: flex; gap: 1rem; justify-content: center; align-items: center;"> <a href="lightning:${data.hash}" style="text-decoration: none"> <div style="color: #999; font-size: 18px; border-radius: 9999px; padding: 0.5rem 1rem; border: 1px solid #ccc; background: white;">Open</div> @@ -107,43 +108,43 @@ </div> `; - let copyButton = document.getElementById('copy'); - copyButton.addEventListener('click', (e) => { - e.preventDefault(); - copy(data.hash); - let copied = document.createElement('div'); - copied.textContent = 'Copied!'; - main.appendChild(copied); - setTimeout(() => copied.remove(), 3000); - }); + let copyButton = document.getElementById("copy"); + copyButton.addEventListener("click", (e) => { + e.preventDefault(); + copy(data.hash); + let copied = document.createElement("div"); + copied.textContent = "Copied!"; + main.appendChild(copied); + setTimeout(() => copied.remove(), 3000); + }); - let qr = document.getElementById('qrcode'); - qr.style.margin = 'auto'; - qr.style.marginTop = '40px'; - qr.style.border = '12px white solid'; - qr.style.zIndex = 10; + let qr = document.getElementById("qrcode"); + qr.style.margin = "auto"; + qr.style.marginTop = "40px"; + qr.style.border = "12px white solid"; + qr.style.zIndex = 10; - new QRCode(qr, data.hash); + new QRCode(qr, data.hash); - let bg = document.getElementById('bg'); - bg.style.position = 'absolute'; - bg.style.margin = 'auto'; - bg.style.left = '0'; - bg.style.right = '0'; - bg.style.width = '400px'; - bg.style.height = '400px'; - bg.style.borderRadius = '50%'; - bg.style.background = 'linear-gradient(to right, #F2F6FC, #E1E3FF)'; - bg.style.zIndex = '0'; + let bg = document.getElementById("bg"); + bg.style.position = "absolute"; + bg.style.margin = "auto"; + bg.style.left = "0"; + bg.style.right = "0"; + bg.style.width = "400px"; + bg.style.height = "400px"; + bg.style.borderRadius = "50%"; + bg.style.background = "linear-gradient(to right, #F2F6FC, #E1E3FF)"; + bg.style.zIndex = "0"; - let ws = new WebSocket('wss://dev.coinos.io/ws'); - ws.onmessage = ({ data }) => { - try { - let { type, data: d } = JSON.parse(data); - if (type === 'payment') { - main.innerHTML = - '<img id="check" src="https://dev.coinos.io/icons/check.svg" alt="Check" />' + - `<h1>Payment received!</h1> + let ws = new WebSocket("wss://dev.coinos.io/ws"); + ws.onmessage = ({ data }) => { + try { + let { type, data: d } = JSON.parse(data); + if (type === "payment") { + main.innerHTML = + '<img id="check" src="https://dev.coinos.io/icons/check.svg" alt="Check" />' + + `<h1>Payment received!</h1> <h2> ${((d.amount * d.rate) / 100000000).toFixed(2)} CAD </h2> @@ -151,17 +152,17 @@ ⚡️${d.amount} </h3>`; - var image = document.getElementById('check'); - image.addEventListener('load', function () { - image.style.transform = 'scale(1)'; - }); - } - } catch (e) { - console.log(e); - } - }; - ws.onopen = () => { - ws.send(JSON.stringify({ type: 'subscribe', data })); - }; - }); + var image = document.getElementById("check"); + image.addEventListener("load", function () { + image.style.transform = "scale(1)"; + }); + } + } catch (e) { + console.log(e); + } + }; + ws.onopen = () => { + ws.send(JSON.stringify({ type: "subscribe", data })); + }; + }); </script> |
