From fedece8a30179a0f6a8d91aedd5cd51f8d2878df Mon Sep 17 00:00:00 2001 From: Laud Bruce Tagoe Date: Fri, 17 Nov 2023 08:42:01 +0000 Subject: [PATCH 1/3] Check for both new and old ID types on product selection page. --- packages/embed/build/authentication.html | 47 + packages/embed/build/basic-kyc.html | 499 ++ packages/embed/build/basic_kyc.html | 56 + .../build/basic_kyc_pre_select_country.html | 57 + .../build/basic_kyc_pre_select_id_type.html | 57 + .../build/basic_kyc_preview_bvn_mfa.html | 55 + packages/embed/build/biometric-kyc.html | 646 ++ packages/embed/build/biometric_kyc.html | 44 + .../biometric_kyc_pre_select_country.html | 47 + .../biometric_kyc_pre_select_id_type.html | 47 + .../build/biometric_kyc_preview_bvn_mfa.html | 45 + .../embed/build/consent-not-required.html | 44 + packages/embed/build/consent-required.html | 47 + packages/embed/build/css/styles.css | 560 ++ packages/embed/build/demo.html | 45 + packages/embed/build/doc-verification.html | 417 + ...document-verification-legacy-id_types.html | 49 + ...ument-verification-pre-select-country.html | 47 + ...ument-verification-pre-select-id-type.html | 47 + .../embed/build/document-verification.html | 44 + .../embed/build/ekyc-consent-required.html | 47 + packages/embed/build/ekyc.html | 500 ++ .../build/enhanced-document-verification.html | 417 + .../build/enhanced_document_verification.html | 44 + packages/embed/build/enhanced_kyc.html | 44 + .../enhanced_kyc_pre_select_country.html | 47 + .../enhanced_kyc_pre_select_id_type.html | 47 + .../build/enhanced_kyc_preview_bvn_mfa.html | 45 + packages/embed/build/id-selection.html | 47 + .../embed/build/identity-verification.html | 47 + .../embed/build/img/icons/chevron-down.svg | 11 + packages/embed/build/img/icons/chevron-up.svg | 4 + packages/embed/build/index.html | 47 + packages/embed/build/js/basic-kyc.min.js | 3751 ++++++++ packages/embed/build/js/biometric-kyc.min.js | 7765 +++++++++++++++++ .../embed/build/js/components/.eslintrc.cjs | 5 + .../build/js/demo-ekyc-smartselfie.min.js | 41 + .../embed/build/js/doc-verification.min.js | 5423 ++++++++++++ packages/embed/build/js/ekyc.min.js | 3758 ++++++++ .../js/enhanced-document-verification.min.js | 4838 ++++++++++ .../embed/build/js/product-selection.min.js | 281 + packages/embed/build/js/script.min.js | 162 + .../embed/build/js/smartselfie-auth.min.js | 4693 ++++++++++ .../build/kra-verification-basic-kyc.html | 47 + .../embed/build/kra-verification-ekyc.html | 47 + packages/embed/build/product-selection.html | 226 + packages/embed/build/smartselfie-auth.html | 296 + packages/embed/build/smartselfie.html | 47 + ...tion-single-country-multiple-id-types.html | 60 + ...lection-single-country-single-id-type.html | 50 + .../build/verification-method-selection.html | 70 + .../pages/verification-method-selection.html | 5 + ...c sequence in a nested iframe (failed).png | Bin 0 -> 248717 bytes ...n sequence in a nested iframe (failed).png | Bin 0 -> 245352 bytes ...c sequence in a nested iframe (failed).png | Bin 0 -> 240613 bytes ...oes directly to the web embed (failed).png | Bin 0 -> 251446 bytes ...tor, allows id_type selection (failed).png | Bin 0 -> 254706 bytes .../verification-method-selection.cy.cjs | 21 + packages/embed/src/js/product-selection.js | 146 +- 59 files changed, 35946 insertions(+), 33 deletions(-) create mode 100644 packages/embed/build/authentication.html create mode 100644 packages/embed/build/basic-kyc.html create mode 100644 packages/embed/build/basic_kyc.html create mode 100644 packages/embed/build/basic_kyc_pre_select_country.html create mode 100644 packages/embed/build/basic_kyc_pre_select_id_type.html create mode 100644 packages/embed/build/basic_kyc_preview_bvn_mfa.html create mode 100644 packages/embed/build/biometric-kyc.html create mode 100644 packages/embed/build/biometric_kyc.html create mode 100644 packages/embed/build/biometric_kyc_pre_select_country.html create mode 100644 packages/embed/build/biometric_kyc_pre_select_id_type.html create mode 100644 packages/embed/build/biometric_kyc_preview_bvn_mfa.html create mode 100644 packages/embed/build/consent-not-required.html create mode 100644 packages/embed/build/consent-required.html create mode 100644 packages/embed/build/css/styles.css create mode 100644 packages/embed/build/demo.html create mode 100644 packages/embed/build/doc-verification.html create mode 100644 packages/embed/build/document-verification-legacy-id_types.html create mode 100644 packages/embed/build/document-verification-pre-select-country.html create mode 100644 packages/embed/build/document-verification-pre-select-id-type.html create mode 100644 packages/embed/build/document-verification.html create mode 100644 packages/embed/build/ekyc-consent-required.html create mode 100644 packages/embed/build/ekyc.html create mode 100644 packages/embed/build/enhanced-document-verification.html create mode 100644 packages/embed/build/enhanced_document_verification.html create mode 100644 packages/embed/build/enhanced_kyc.html create mode 100644 packages/embed/build/enhanced_kyc_pre_select_country.html create mode 100644 packages/embed/build/enhanced_kyc_pre_select_id_type.html create mode 100644 packages/embed/build/enhanced_kyc_preview_bvn_mfa.html create mode 100644 packages/embed/build/id-selection.html create mode 100644 packages/embed/build/identity-verification.html create mode 100644 packages/embed/build/img/icons/chevron-down.svg create mode 100644 packages/embed/build/img/icons/chevron-up.svg create mode 100644 packages/embed/build/index.html create mode 100644 packages/embed/build/js/basic-kyc.min.js create mode 100644 packages/embed/build/js/biometric-kyc.min.js create mode 100644 packages/embed/build/js/components/.eslintrc.cjs create mode 100644 packages/embed/build/js/demo-ekyc-smartselfie.min.js create mode 100644 packages/embed/build/js/doc-verification.min.js create mode 100644 packages/embed/build/js/ekyc.min.js create mode 100644 packages/embed/build/js/enhanced-document-verification.min.js create mode 100644 packages/embed/build/js/product-selection.min.js create mode 100644 packages/embed/build/js/script.min.js create mode 100644 packages/embed/build/js/smartselfie-auth.min.js create mode 100644 packages/embed/build/kra-verification-basic-kyc.html create mode 100644 packages/embed/build/kra-verification-ekyc.html create mode 100644 packages/embed/build/product-selection.html create mode 100644 packages/embed/build/smartselfie-auth.html create mode 100644 packages/embed/build/smartselfie.html create mode 100644 packages/embed/build/verification-method-selection-single-country-multiple-id-types.html create mode 100644 packages/embed/build/verification-method-selection-single-country-single-id-type.html create mode 100644 packages/embed/build/verification-method-selection.html create mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- biometric_kyc -- should redirect to the biometric kyc sequence in a nested iframe (failed).png create mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- doc_verification -- should redirect to the document verification sequence in a nested iframe (failed).png create mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- enhanced_kyc -- should redirect to the enhanced kyc sequence in a nested iframe (failed).png create mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- single country id_type -- goes directly to the web embed (failed).png create mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- single country multiple id_types -- disables country selector, allows id_type selection (failed).png diff --git a/packages/embed/build/authentication.html b/packages/embed/build/authentication.html new file mode 100644 index 00000000..eacaee86 --- /dev/null +++ b/packages/embed/build/authentication.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/basic-kyc.html b/packages/embed/build/basic-kyc.html new file mode 100644 index 00000000..58dcb3e5 --- /dev/null +++ b/packages/embed/build/basic-kyc.html @@ -0,0 +1,499 @@ + + + + + + SmileIdentity - Basic KYC + + + + + + + + + + + + + + +
+
+ +
+

+ +

Setting up

+ +

+ Just a few more seconds +
+ We are setting up your verification flow +

+ +

+ Powered by SmileID + +

+
+ + + + + + +
+ + + + diff --git a/packages/embed/build/basic_kyc.html b/packages/embed/build/basic_kyc.html new file mode 100644 index 00000000..4deba76b --- /dev/null +++ b/packages/embed/build/basic_kyc.html @@ -0,0 +1,56 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/basic_kyc_pre_select_country.html b/packages/embed/build/basic_kyc_pre_select_country.html new file mode 100644 index 00000000..0a7f2230 --- /dev/null +++ b/packages/embed/build/basic_kyc_pre_select_country.html @@ -0,0 +1,57 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/basic_kyc_pre_select_id_type.html b/packages/embed/build/basic_kyc_pre_select_id_type.html new file mode 100644 index 00000000..4678e57c --- /dev/null +++ b/packages/embed/build/basic_kyc_pre_select_id_type.html @@ -0,0 +1,57 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/basic_kyc_preview_bvn_mfa.html b/packages/embed/build/basic_kyc_preview_bvn_mfa.html new file mode 100644 index 00000000..295c8346 --- /dev/null +++ b/packages/embed/build/basic_kyc_preview_bvn_mfa.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/biometric-kyc.html b/packages/embed/build/biometric-kyc.html new file mode 100644 index 00000000..51eba6f3 --- /dev/null +++ b/packages/embed/build/biometric-kyc.html @@ -0,0 +1,646 @@ + + + + + + SmileIdentity - Biometric KYC + + + + + + + + + + + + + + +
+
+ +
+

+ +

Setting up

+ +

+ Just a few more seconds +
+ We are setting up your verification flow +

+ +

+ Powered by SmileID + +

+
+ + + +
+ +
+ + + + + + + + +
+ + + + diff --git a/packages/embed/build/biometric_kyc.html b/packages/embed/build/biometric_kyc.html new file mode 100644 index 00000000..fda22ee7 --- /dev/null +++ b/packages/embed/build/biometric_kyc.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/biometric_kyc_pre_select_country.html b/packages/embed/build/biometric_kyc_pre_select_country.html new file mode 100644 index 00000000..95e54d9b --- /dev/null +++ b/packages/embed/build/biometric_kyc_pre_select_country.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/biometric_kyc_pre_select_id_type.html b/packages/embed/build/biometric_kyc_pre_select_id_type.html new file mode 100644 index 00000000..c0e65417 --- /dev/null +++ b/packages/embed/build/biometric_kyc_pre_select_id_type.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/biometric_kyc_preview_bvn_mfa.html b/packages/embed/build/biometric_kyc_preview_bvn_mfa.html new file mode 100644 index 00000000..3526259a --- /dev/null +++ b/packages/embed/build/biometric_kyc_preview_bvn_mfa.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/consent-not-required.html b/packages/embed/build/consent-not-required.html new file mode 100644 index 00000000..28a8173b --- /dev/null +++ b/packages/embed/build/consent-not-required.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/consent-required.html b/packages/embed/build/consent-required.html new file mode 100644 index 00000000..29277c9a --- /dev/null +++ b/packages/embed/build/consent-required.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/css/styles.css b/packages/embed/build/css/styles.css new file mode 100644 index 00000000..0d8371a1 --- /dev/null +++ b/packages/embed/build/css/styles.css @@ -0,0 +1,560 @@ +:root { + --flow-space: 1rem; + --color-active: #001096; + --color-default: #2d2b2a; + --color-disabled: #848282; +} + +*, +::after, +::before { + box-sizing: border-box; +} + +blockquote, +body, +dd, +dl, +figure, +h1, +h2, +h3, +h4, +p { + margin: 0; +} + +ol[role="list"], +ul[role="list"] { + list-style: none; +} + +html:focus-within { + scroll-behavior: smooth; +} + +a:not([class]) { + text-decoration-skip-ink: auto; +} + +img, +picture { + max-width: 100%; + display: block; +} + +button, +input, +select, +textarea { + font: inherit; +} + +@media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + + *, + ::after, + ::before { + animation-duration: 0s !important; + animation-iteration-count: 1 !important; + transition-duration: 0s !important; + scroll-behavior: auto !important; + } +} + +[hidden] { + display: none !important; +} + +html { + font-family: "DM Sans", sans-serif; +} + +body { + min-height: 100vh; + text-rendering: optimizeSpeed; + color: #1c2334; + line-height: 1.5; + display: flex; + flex-direction: column; + position: relative; +} + +main { + width: 100%; + max-width: 40rem; + background: #ffffff; + border-radius: 2rem; + padding: 2rem; + overflow-y: scroll; + position: absolute; + max-height: 100vh; +} + +@media screen and (min-width: 40rem) { + main { + padding: 2rem 5rem; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } +} + +@media screen and (min-width: 80rem) { + main { + max-height: 80%; + } +} + +h1 { + font-size: 2.25rem; + font-weight: 600; +} + +section { + position: relative; +} + +form { + --flow-space: 4rem; +} + +form > * { + --flow-space: 1.5rem; +} + +fieldset { + border: none; + margin-left: 0; + margin-right: 0; + padding: 0; +} + +label, +input, +select, +textarea { + --flow-space: 0.5rem; + display: block; + width: 100%; +} + +label, +legend { + color: black; + font-weight: 500; + padding: 0; +} + +input, +select, +textarea { + border: 1px solid #d1d8d6; + border-radius: 0.5rem; + padding: 0.75rem 1rem; +} + +input, +select { + height: 3rem; +} + +textarea { + min-height: 10rem; +} + +select { + -webkit-appearance: none; + appearance: none; + background-image: url(../img/icons/chevron-down.svg); + background-repeat: no-repeat, repeat; + background-position: + right 10px top 50%, + 0 0; + background-size: + 24px auto, + 100%; +} + +button { + --button-color: var(--color-default); + --flow-space: 3rem; + -webkit-appearance: none; + -moz-appearance: none; + align-items: center; + appearance: none; + background-color: transparent; + border-radius: 2.5rem; + border: none; + color: #ffffff; + cursor: pointer; + display: inline-flex; + font-size: 20px; + font-weight: 500; + inline-size: 100%; + justify-content: center; + letter-spacing: 0.05ch; + line-height: 1; + padding: 1rem 2.5rem; + text-align: center; + text-decoration: none; +} + +button[data-variant="solid"] { + background-color: var(--button-color); + border: 2px solid var(--button-color); +} + +button[data-variant="outline"] { + color: var(--button-color); + border: 2px solid var(--button-color); +} + +button[data-variant="ghost"] { + color: var(--button-color); + padding: 0px; +} + +button:hover, +button:focus, +button:active { + --button-color: var(--color-active); +} + +button:disabled { + --button-color: var(--color-disabled); +} + +button[data-type="icon"] { + align-items: center; + background-color: transparent; + border: 0; + cursor: pointer; + display: flex; + padding: 0; + width: auto; +} + +[disabled] { + cursor: not-allowed; + filter: opacity(0.7); +} + +.visually-hidden { + border: 0; + clip: rect(1px 1px 1px 1px); + clip: rect(1px, 1px, 1px, 1px); + height: auto; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + white-space: nowrap; + width: 1px; +} + +.flow { +} + +.flow > * + * { + margin-top: var(--flow-space); +} + +.center { + text-align: center; +} + +.split-pair > * + * { + margin-top: var(--flow-space); +} + +@media screen and (min-width: 45em) { + .split-pair { + display: flex; + align-items: center; + gap: 2rem; + } + + .split-pair[data-variant="start"] { + align-items: start; + } + + .split-pair > * { + flex-grow: 1; + flex-basis: 50%; + } + + .split-pair > * + * { + margin-top: 0; + } +} + +.input-group { + --flow-space: 1.5rem; +} + +.input-group > * { + --flow-space: 1.5rem; +} + +.justify-right { + justify-content: end !important; +} + +.nav { + display: flex; + justify-content: space-between; +} + +.back-wrapper { + display: flex; + align-items: center; +} + +.back-button { + display: block !important; +} + +.back-button-text { + font-size: 11px; + line-height: 11px; + color: rgb(21, 31, 114); +} + +.user-details { + padding: 2rem 5rem; +} + +.demo-tip { + align-items: center; + background-color: #f5fcff; + border-radius: 0.75rem; + border: 1px solid #a9d1e8; + color: inherit; + display: flex; + font-size: 0.875rem; + max-width: 36rem; + padding: 1rem; + text-align: left; + text-decoration: none; +} + +.demo-tip[data-variant="yellow"] { + background-color: #fff8ee; + border: #fff8ee; +} + +.demo-tip > * + * { + margin-left: 0.5rem; +} + +#error, +.validation-message { + color: red; + text-transform: capitalize; +} + +.dob { + --flow-space: 1rem; + display: flex; + gap: 1rem; +} + +@media screen and (min-width: 40rem) { + .dob { + gap: 2rem; + } +} + +.credits { + --flow-space: 2rem; + margin-inline: auto; + max-inline-size: 10rem; +} + +.company-name { + text-transform: uppercase; + letter-spacing: 0.1rem; + border-left: 1px solid #cecece; + margin-left: 0.75rem; + padding-left: 0.75rem; + display: inline-flex; + align-items: center; +} + +.company-name svg { + margin-right: 0.5rem; +} + +@keyframes spin { + 0% { + transform: translate3d(-50%, -50%, 0) rotate(0deg); + } + 100% { + transform: translate3d(-50%, -50%, 0) rotate(360deg); + } +} + +.spinner { + animation: 1.5s linear infinite spin; + animation-play-state: inherit; + border: solid 1rem #cfd0d1; + border-bottom-color: var(--color-active); + border-radius: 50%; + content: ""; + display: block; + height: 10rem; + width: 10rem; + will-change: transform; + position: relative; + top: 5rem; + left: 50%; +} + +@keyframes rotate { + 100% { + transform: rotate(360deg); + } +} + +@keyframes dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35; + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124; + } +} + +/** + * Combobox Styles + */ +smileid-combobox { + display: block; + position: relative; + inline-size: 100%; +} + +smileid-combobox-trigger { + border: 1px solid #d1d8d6; + border-radius: 0.5rem; + display: block; + inline-size: 100%; +} + +smileid-combobox-trigger > * { + inline-size: 100%; + block-size: 3rem; + display: inline-flex; + align-items: center; + padding: 0.75rem 1rem; +} + +smileid-combobox-trigger svg { + margin-inline-end: 0.5rem; + flex-shrink: 0; +} + +smileid-combobox-trigger input { + appearance: none; + border: none; + background-color: transparent; + padding: 0; +} + +smileid-combobox-trigger button { + color: initial; + display: initial; + font-size: initial; + font-weight: initial; + text-align: initial; + background-repeat: no-repeat, repeat; + background-position: + right 1rem top 50%, + 0 0; + background-size: + 24px auto, + 100%; +} + +smileid-combobox-trigger input ~ button { + display: block; + padding: 0px; + flex-shrink: 0; + background-position: right 0px; + inline-size: 24px; + block-size: 24px; +} + +smileid-combobox-trigger[expanded="true"] button { + background-image: url(../img/icons/chevron-up.svg); +} + +smileid-combobox-trigger[expanded="false"] button { + background-image: url(../img/icons/chevron-down.svg); +} + +smileid-combobox-trigger:focus-within { + outline: 5px auto Highlight; + outline: 5px auto -webkit-focus-ring-color; +} + +smileid-combobox-trigger button:focus, +smileid-combobox-trigger input:focus { + outline: none; +} + +smileid-combobox-listbox { + background-color: white; + + inline-size: 100%; + max-block-size: 10rem; + + margin-block-start: 0.5rem; + flex-direction: column; + overflow-y: scroll; + border: 1px solid black; + border-radius: 0.25rem; + + position: absolute; + top: 3rem; + z-index: 1; +} + +smileid-combobox-trigger[expanded="false"] ~ smileid-combobox-listbox { + display: none; +} + +smileid-combobox-trigger[expanded="true"] ~ smileid-combobox-listbox { + display: flex; +} + +smileid-combobox-option { + box-sizing: border-box; + inline-size: 100%; + display: block; + padding: 0.75rem 1rem; +} + +smileid-combobox-option:hover, +smileid-combobox-option[tabindex="0"] { + background-color: #f9f0e7; +} + +smileid-combobox-option[aria-selected] { + background-color: #151f72; + color: #fff; +} + +smileid-combobox-option[hidden] { + display: none; +} diff --git a/packages/embed/build/demo.html b/packages/embed/build/demo.html new file mode 100644 index 00000000..f0af257b --- /dev/null +++ b/packages/embed/build/demo.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/doc-verification.html b/packages/embed/build/doc-verification.html new file mode 100644 index 00000000..3e5f72b6 --- /dev/null +++ b/packages/embed/build/doc-verification.html @@ -0,0 +1,417 @@ + + + + + + Document Verification — Smile Identity + + + + + + + + + + + + + + +
+
+ +
+

+ +

Setting up

+ +

+ Just a few more seconds +
+ We are setting up your verification flow +

+ +

+ Powered by SmileID + +

+
+ + + + + + + + + + +
+ + + + diff --git a/packages/embed/build/document-verification-legacy-id_types.html b/packages/embed/build/document-verification-legacy-id_types.html new file mode 100644 index 00000000..640bc0f3 --- /dev/null +++ b/packages/embed/build/document-verification-legacy-id_types.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/document-verification-pre-select-country.html b/packages/embed/build/document-verification-pre-select-country.html new file mode 100644 index 00000000..1889e2cf --- /dev/null +++ b/packages/embed/build/document-verification-pre-select-country.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/document-verification-pre-select-id-type.html b/packages/embed/build/document-verification-pre-select-id-type.html new file mode 100644 index 00000000..7d74eca3 --- /dev/null +++ b/packages/embed/build/document-verification-pre-select-id-type.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/document-verification.html b/packages/embed/build/document-verification.html new file mode 100644 index 00000000..a25b01fe --- /dev/null +++ b/packages/embed/build/document-verification.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/ekyc-consent-required.html b/packages/embed/build/ekyc-consent-required.html new file mode 100644 index 00000000..6d61cb48 --- /dev/null +++ b/packages/embed/build/ekyc-consent-required.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/ekyc.html b/packages/embed/build/ekyc.html new file mode 100644 index 00000000..a9180286 --- /dev/null +++ b/packages/embed/build/ekyc.html @@ -0,0 +1,500 @@ + + + + + + SmileIdentity - Enhanced KYC + + + + + + + + + + + + + + +
+
+ +
+

+ +

Setting up

+ +

+ Just a few more seconds +
+ We are setting up your verification flow +

+ +

+ Powered by SmileID + +

+
+ + + + + + +
+ + + + diff --git a/packages/embed/build/enhanced-document-verification.html b/packages/embed/build/enhanced-document-verification.html new file mode 100644 index 00000000..ff492f9e --- /dev/null +++ b/packages/embed/build/enhanced-document-verification.html @@ -0,0 +1,417 @@ + + + + + + Document Verification — Smile Identity + + + + + + + + + + + + + + +
+
+ +
+

+ +

Setting up

+ +

+ Just a few more seconds +
+ We are setting up your verification flow +

+ +

+ Powered by SmileID + +

+
+ + + + + + + + + + +
+ + + + diff --git a/packages/embed/build/enhanced_document_verification.html b/packages/embed/build/enhanced_document_verification.html new file mode 100644 index 00000000..1f8e6549 --- /dev/null +++ b/packages/embed/build/enhanced_document_verification.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/enhanced_kyc.html b/packages/embed/build/enhanced_kyc.html new file mode 100644 index 00000000..69b62ecd --- /dev/null +++ b/packages/embed/build/enhanced_kyc.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/enhanced_kyc_pre_select_country.html b/packages/embed/build/enhanced_kyc_pre_select_country.html new file mode 100644 index 00000000..25f7577b --- /dev/null +++ b/packages/embed/build/enhanced_kyc_pre_select_country.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/enhanced_kyc_pre_select_id_type.html b/packages/embed/build/enhanced_kyc_pre_select_id_type.html new file mode 100644 index 00000000..d984ee52 --- /dev/null +++ b/packages/embed/build/enhanced_kyc_pre_select_id_type.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/enhanced_kyc_preview_bvn_mfa.html b/packages/embed/build/enhanced_kyc_preview_bvn_mfa.html new file mode 100644 index 00000000..9465a038 --- /dev/null +++ b/packages/embed/build/enhanced_kyc_preview_bvn_mfa.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/id-selection.html b/packages/embed/build/id-selection.html new file mode 100644 index 00000000..06380f49 --- /dev/null +++ b/packages/embed/build/id-selection.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/identity-verification.html b/packages/embed/build/identity-verification.html new file mode 100644 index 00000000..f7b3c326 --- /dev/null +++ b/packages/embed/build/identity-verification.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/img/icons/chevron-down.svg b/packages/embed/build/img/icons/chevron-down.svg new file mode 100644 index 00000000..01d7949f --- /dev/null +++ b/packages/embed/build/img/icons/chevron-down.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/embed/build/img/icons/chevron-up.svg b/packages/embed/build/img/icons/chevron-up.svg new file mode 100644 index 00000000..be91aef3 --- /dev/null +++ b/packages/embed/build/img/icons/chevron-up.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/embed/build/index.html b/packages/embed/build/index.html new file mode 100644 index 00000000..6708f78f --- /dev/null +++ b/packages/embed/build/index.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/js/basic-kyc.min.js b/packages/embed/build/js/basic-kyc.min.js new file mode 100644 index 00000000..cc7ca198 --- /dev/null +++ b/packages/embed/build/js/basic-kyc.min.js @@ -0,0 +1,3751 @@ +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + + // ../../node_modules/validate.js/validate.js + var require_validate = __commonJS({ + "../../node_modules/validate.js/validate.js"(exports, module) { + (function(exports2, module2, define2) { + "use strict"; + var validate3 = function(attributes, constraints, options) { + options = v.extend({}, v.options, options); + var results = v.runValidations(attributes, constraints, options), attr, validator; + if (results.some(function(r) { + return v.isPromise(r.error); + })) { + throw new Error("Use validate.async if you want support for promises"); + } + return validate3.processValidationResults(results, options); + }; + var v = validate3; + v.extend = function(obj) { + [].slice.call(arguments, 1).forEach(function(source) { + for (var attr in source) { + obj[attr] = source[attr]; + } + }); + return obj; + }; + v.extend(validate3, { + // This is the version of the library as a semver. + // The toString function will allow it to be coerced into a string + version: { + major: 0, + minor: 13, + patch: 1, + metadata: null, + toString: function() { + var version2 = v.format("%{major}.%{minor}.%{patch}", v.version); + if (!v.isEmpty(v.version.metadata)) { + version2 += "+" + v.version.metadata; + } + return version2; + } + }, + // Below is the dependencies that are used in validate.js + // The constructor of the Promise implementation. + // If you are using Q.js, RSVP or any other A+ compatible implementation + // override this attribute to be the constructor of that promise. + // Since jQuery promises aren't A+ compatible they won't work. + Promise: typeof Promise !== "undefined" ? Promise : ( + /* istanbul ignore next */ + null + ), + EMPTY_STRING_REGEXP: /^\s*$/, + // Runs the validators specified by the constraints object. + // Will return an array of the format: + // [{attribute: "", error: ""}, ...] + runValidations: function(attributes, constraints, options) { + var results = [], attr, validatorName, value, validators, validator, validatorOptions, error; + if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) { + attributes = v.collectFormValues(attributes); + } + for (attr in constraints) { + value = v.getDeepObjectValue(attributes, attr); + validators = v.result(constraints[attr], value, attributes, attr, options, constraints); + for (validatorName in validators) { + validator = v.validators[validatorName]; + if (!validator) { + error = v.format("Unknown validator %{name}", { name: validatorName }); + throw new Error(error); + } + validatorOptions = validators[validatorName]; + validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints); + if (!validatorOptions) { + continue; + } + results.push({ + attribute: attr, + value, + validator: validatorName, + globalOptions: options, + attributes, + options: validatorOptions, + error: validator.call( + validator, + value, + validatorOptions, + attr, + attributes, + options + ) + }); + } + } + return results; + }, + // Takes the output from runValidations and converts it to the correct + // output format. + processValidationResults: function(errors, options) { + errors = v.pruneEmptyErrors(errors, options); + errors = v.expandMultipleErrors(errors, options); + errors = v.convertErrorMessages(errors, options); + var format = options.format || "grouped"; + if (typeof v.formatters[format] === "function") { + errors = v.formatters[format](errors); + } else { + throw new Error(v.format("Unknown format %{format}", options)); + } + return v.isEmpty(errors) ? void 0 : errors; + }, + // Runs the validations with support for promises. + // This function will return a promise that is settled when all the + // validation promises have been completed. + // It can be called even if no validations returned a promise. + async: function(attributes, constraints, options) { + options = v.extend({}, v.async.options, options); + var WrapErrors = options.wrapErrors || function(errors) { + return errors; + }; + if (options.cleanAttributes !== false) { + attributes = v.cleanAttributes(attributes, constraints); + } + var results = v.runValidations(attributes, constraints, options); + return new v.Promise(function(resolve, reject) { + v.waitForResults(results).then(function() { + var errors = v.processValidationResults(results, options); + if (errors) { + reject(new WrapErrors(errors, options, attributes, constraints)); + } else { + resolve(attributes); + } + }, function(err) { + reject(err); + }); + }); + }, + single: function(value, constraints, options) { + options = v.extend({}, v.single.options, options, { + format: "flat", + fullMessages: false + }); + return v({ single: value }, { single: constraints }, options); + }, + // Returns a promise that is resolved when all promises in the results array + // are settled. The promise returned from this function is always resolved, + // never rejected. + // This function modifies the input argument, it replaces the promises + // with the value returned from the promise. + waitForResults: function(results) { + return results.reduce(function(memo, result) { + if (!v.isPromise(result.error)) { + return memo; + } + return memo.then(function() { + return result.error.then(function(error) { + result.error = error || null; + }); + }); + }, new v.Promise(function(r) { + r(); + })); + }, + // If the given argument is a call: function the and: function return the value + // otherwise just return the value. Additional arguments will be passed as + // arguments to the function. + // Example: + // ``` + // result('foo') // 'foo' + // result(Math.max, 1, 2) // 2 + // ``` + result: function(value) { + var args = [].slice.call(arguments, 1); + if (typeof value === "function") { + value = value.apply(null, args); + } + return value; + }, + // Checks if the value is a number. This function does not consider NaN a + // number like many other `isNumber` functions do. + isNumber: function(value) { + return typeof value === "number" && !isNaN(value); + }, + // Returns false if the object is not a function + isFunction: function(value) { + return typeof value === "function"; + }, + // A simple check to verify that the value is an integer. Uses `isNumber` + // and a simple modulo check. + isInteger: function(value) { + return v.isNumber(value) && value % 1 === 0; + }, + // Checks if the value is a boolean + isBoolean: function(value) { + return typeof value === "boolean"; + }, + // Uses the `Object` function to check if the given argument is an object. + isObject: function(obj) { + return obj === Object(obj); + }, + // Simply checks if the object is an instance of a date + isDate: function(obj) { + return obj instanceof Date; + }, + // Returns false if the object is `null` of `undefined` + isDefined: function(obj) { + return obj !== null && obj !== void 0; + }, + // Checks if the given argument is a promise. Anything with a `then` + // function is considered a promise. + isPromise: function(p) { + return !!p && v.isFunction(p.then); + }, + isJqueryElement: function(o) { + return o && v.isString(o.jquery); + }, + isDomElement: function(o) { + if (!o) { + return false; + } + if (!o.querySelectorAll || !o.querySelector) { + return false; + } + if (v.isObject(document) && o === document) { + return true; + } + if (typeof HTMLElement === "object") { + return o instanceof HTMLElement; + } else { + return o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string"; + } + }, + isEmpty: function(value) { + var attr; + if (!v.isDefined(value)) { + return true; + } + if (v.isFunction(value)) { + return false; + } + if (v.isString(value)) { + return v.EMPTY_STRING_REGEXP.test(value); + } + if (v.isArray(value)) { + return value.length === 0; + } + if (v.isDate(value)) { + return false; + } + if (v.isObject(value)) { + for (attr in value) { + return false; + } + return true; + } + return false; + }, + // Formats the specified strings with the given values like so: + // ``` + // format("Foo: %{foo}", {foo: "bar"}) // "Foo bar" + // ``` + // If you want to write %{...} without having it replaced simply + // prefix it with % like this `Foo: %%{foo}` and it will be returned + // as `"Foo: %{foo}"` + format: v.extend(function(str, vals) { + if (!v.isString(str)) { + return str; + } + return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) { + if (m1 === "%") { + return "%{" + m2 + "}"; + } else { + return String(vals[m2]); + } + }); + }, { + // Finds %{key} style patterns in the given string + FORMAT_REGEXP: /(%?)%\{([^\}]+)\}/g + }), + // "Prettifies" the given string. + // Prettifying means replacing [.\_-] with spaces as well as splitting + // camel case words. + prettify: function(str) { + if (v.isNumber(str)) { + if (str * 100 % 1 === 0) { + return "" + str; + } else { + return parseFloat(Math.round(str * 100) / 100).toFixed(2); + } + } + if (v.isArray(str)) { + return str.map(function(s) { + return v.prettify(s); + }).join(", "); + } + if (v.isObject(str)) { + if (!v.isDefined(str.toString)) { + return JSON.stringify(str); + } + return str.toString(); + } + str = "" + str; + return str.replace(/([^\s])\.([^\s])/g, "$1 $2").replace(/\\+/g, "").replace(/[_-]/g, " ").replace(/([a-z])([A-Z])/g, function(m0, m1, m2) { + return "" + m1 + " " + m2.toLowerCase(); + }).toLowerCase(); + }, + stringifyValue: function(value, options) { + var prettify = options && options.prettify || v.prettify; + return prettify(value); + }, + isString: function(value) { + return typeof value === "string"; + }, + isArray: function(value) { + return {}.toString.call(value) === "[object Array]"; + }, + // Checks if the object is a hash, which is equivalent to an object that + // is neither an array nor a function. + isHash: function(value) { + return v.isObject(value) && !v.isArray(value) && !v.isFunction(value); + }, + contains: function(obj, value) { + if (!v.isDefined(obj)) { + return false; + } + if (v.isArray(obj)) { + return obj.indexOf(value) !== -1; + } + return value in obj; + }, + unique: function(array) { + if (!v.isArray(array)) { + return array; + } + return array.filter(function(el, index, array2) { + return array2.indexOf(el) == index; + }); + }, + forEachKeyInKeypath: function(object, keypath, callback) { + if (!v.isString(keypath)) { + return void 0; + } + var key = "", i, escape = false; + for (i = 0; i < keypath.length; ++i) { + switch (keypath[i]) { + case ".": + if (escape) { + escape = false; + key += "."; + } else { + object = callback(object, key, false); + key = ""; + } + break; + case "\\": + if (escape) { + escape = false; + key += "\\"; + } else { + escape = true; + } + break; + default: + escape = false; + key += keypath[i]; + break; + } + } + return callback(object, key, true); + }, + getDeepObjectValue: function(obj, keypath) { + if (!v.isObject(obj)) { + return void 0; + } + return v.forEachKeyInKeypath(obj, keypath, function(obj2, key) { + if (v.isObject(obj2)) { + return obj2[key]; + } + }); + }, + // This returns an object with all the values of the form. + // It uses the input name as key and the value as value + // So for example this: + // + // would return: + // {email: "foo@bar.com"} + collectFormValues: function(form, options) { + var values = {}, i, j, input, inputs, option, value; + if (v.isJqueryElement(form)) { + form = form[0]; + } + if (!form) { + return values; + } + options = options || {}; + inputs = form.querySelectorAll("input[name], textarea[name]"); + for (i = 0; i < inputs.length; ++i) { + input = inputs.item(i); + if (v.isDefined(input.getAttribute("data-ignored"))) { + continue; + } + var name = input.name.replace(/\./g, "\\\\."); + value = v.sanitizeFormValue(input.value, options); + if (input.type === "number") { + value = value ? +value : null; + } else if (input.type === "checkbox") { + if (input.attributes.value) { + if (!input.checked) { + value = values[name] || null; + } + } else { + value = input.checked; + } + } else if (input.type === "radio") { + if (!input.checked) { + value = values[name] || null; + } + } + values[name] = value; + } + inputs = form.querySelectorAll("select[name]"); + for (i = 0; i < inputs.length; ++i) { + input = inputs.item(i); + if (v.isDefined(input.getAttribute("data-ignored"))) { + continue; + } + if (input.multiple) { + value = []; + for (j in input.options) { + option = input.options[j]; + if (option && option.selected) { + value.push(v.sanitizeFormValue(option.value, options)); + } + } + } else { + var _val = typeof input.options[input.selectedIndex] !== "undefined" ? input.options[input.selectedIndex].value : ( + /* istanbul ignore next */ + "" + ); + value = v.sanitizeFormValue(_val, options); + } + values[input.name] = value; + } + return values; + }, + sanitizeFormValue: function(value, options) { + if (options.trim && v.isString(value)) { + value = value.trim(); + } + if (options.nullify !== false && value === "") { + return null; + } + return value; + }, + capitalize: function(str) { + if (!v.isString(str)) { + return str; + } + return str[0].toUpperCase() + str.slice(1); + }, + // Remove all errors who's error attribute is empty (null or undefined) + pruneEmptyErrors: function(errors) { + return errors.filter(function(error) { + return !v.isEmpty(error.error); + }); + }, + // In + // [{error: ["err1", "err2"], ...}] + // Out + // [{error: "err1", ...}, {error: "err2", ...}] + // + // All attributes in an error with multiple messages are duplicated + // when expanding the errors. + expandMultipleErrors: function(errors) { + var ret = []; + errors.forEach(function(error) { + if (v.isArray(error.error)) { + error.error.forEach(function(msg) { + ret.push(v.extend({}, error, { error: msg })); + }); + } else { + ret.push(error); + } + }); + return ret; + }, + // Converts the error mesages by prepending the attribute name unless the + // message is prefixed by ^ + convertErrorMessages: function(errors, options) { + options = options || {}; + var ret = [], prettify = options.prettify || v.prettify; + errors.forEach(function(errorInfo) { + var error = v.result( + errorInfo.error, + errorInfo.value, + errorInfo.attribute, + errorInfo.options, + errorInfo.attributes, + errorInfo.globalOptions + ); + if (!v.isString(error)) { + ret.push(errorInfo); + return; + } + if (error[0] === "^") { + error = error.slice(1); + } else if (options.fullMessages !== false) { + error = v.capitalize(prettify(errorInfo.attribute)) + " " + error; + } + error = error.replace(/\\\^/g, "^"); + error = v.format(error, { + value: v.stringifyValue(errorInfo.value, options) + }); + ret.push(v.extend({}, errorInfo, { error })); + }); + return ret; + }, + // In: + // [{attribute: "", ...}] + // Out: + // {"": [{attribute: "", ...}]} + groupErrorsByAttribute: function(errors) { + var ret = {}; + errors.forEach(function(error) { + var list = ret[error.attribute]; + if (list) { + list.push(error); + } else { + ret[error.attribute] = [error]; + } + }); + return ret; + }, + // In: + // [{error: "", ...}, {error: "", ...}] + // Out: + // ["", ""] + flattenErrorsToArray: function(errors) { + return errors.map(function(error) { + return error.error; + }).filter(function(value, index, self) { + return self.indexOf(value) === index; + }); + }, + cleanAttributes: function(attributes, whitelist) { + function whitelistCreator(obj, key, last) { + if (v.isObject(obj[key])) { + return obj[key]; + } + return obj[key] = last ? true : {}; + } + function buildObjectWhitelist(whitelist2) { + var ow = {}, lastObject, attr; + for (attr in whitelist2) { + if (!whitelist2[attr]) { + continue; + } + v.forEachKeyInKeypath(ow, attr, whitelistCreator); + } + return ow; + } + function cleanRecursive(attributes2, whitelist2) { + if (!v.isObject(attributes2)) { + return attributes2; + } + var ret = v.extend({}, attributes2), w, attribute; + for (attribute in attributes2) { + w = whitelist2[attribute]; + if (v.isObject(w)) { + ret[attribute] = cleanRecursive(ret[attribute], w); + } else if (!w) { + delete ret[attribute]; + } + } + return ret; + } + if (!v.isObject(whitelist) || !v.isObject(attributes)) { + return {}; + } + whitelist = buildObjectWhitelist(whitelist); + return cleanRecursive(attributes, whitelist); + }, + exposeModule: function(validate4, root, exports3, module3, define3) { + if (exports3) { + if (module3 && module3.exports) { + exports3 = module3.exports = validate4; + } + exports3.validate = validate4; + } else { + root.validate = validate4; + if (validate4.isFunction(define3) && define3.amd) { + define3([], function() { + return validate4; + }); + } + } + }, + warn: function(msg) { + if (typeof console !== "undefined" && console.warn) { + console.warn("[validate.js] " + msg); + } + }, + error: function(msg) { + if (typeof console !== "undefined" && console.error) { + console.error("[validate.js] " + msg); + } + } + }); + validate3.validators = { + // Presence validates that the value isn't empty + presence: function(value, options) { + options = v.extend({}, this.options, options); + if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) { + return options.message || this.message || "can't be blank"; + } + }, + length: function(value, options, attribute) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var is = options.is, maximum = options.maximum, minimum = options.minimum, tokenizer = options.tokenizer || function(val) { + return val; + }, err, errors = []; + value = tokenizer(value); + var length = value.length; + if (!v.isNumber(length)) { + return options.message || this.notValid || "has an incorrect length"; + } + if (v.isNumber(is) && length !== is) { + err = options.wrongLength || this.wrongLength || "is the wrong length (should be %{count} characters)"; + errors.push(v.format(err, { count: is })); + } + if (v.isNumber(minimum) && length < minimum) { + err = options.tooShort || this.tooShort || "is too short (minimum is %{count} characters)"; + errors.push(v.format(err, { count: minimum })); + } + if (v.isNumber(maximum) && length > maximum) { + err = options.tooLong || this.tooLong || "is too long (maximum is %{count} characters)"; + errors.push(v.format(err, { count: maximum })); + } + if (errors.length > 0) { + return options.message || errors; + } + }, + numericality: function(value, options, attribute, attributes, globalOptions) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var errors = [], name, count, checks = { + greaterThan: function(v2, c) { + return v2 > c; + }, + greaterThanOrEqualTo: function(v2, c) { + return v2 >= c; + }, + equalTo: function(v2, c) { + return v2 === c; + }, + lessThan: function(v2, c) { + return v2 < c; + }, + lessThanOrEqualTo: function(v2, c) { + return v2 <= c; + }, + divisibleBy: function(v2, c) { + return v2 % c === 0; + } + }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; + if (v.isString(value) && options.strict) { + var pattern = "^-?(0|[1-9]\\d*)"; + if (!options.onlyInteger) { + pattern += "(\\.\\d+)?"; + } + pattern += "$"; + if (!new RegExp(pattern).test(value)) { + return options.message || options.notValid || this.notValid || this.message || "must be a valid number"; + } + } + if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) { + value = +value; + } + if (!v.isNumber(value)) { + return options.message || options.notValid || this.notValid || this.message || "is not a number"; + } + if (options.onlyInteger && !v.isInteger(value)) { + return options.message || options.notInteger || this.notInteger || this.message || "must be an integer"; + } + for (name in checks) { + count = options[name]; + if (v.isNumber(count) && !checks[name](value, count)) { + var key = "not" + v.capitalize(name); + var msg = options[key] || this[key] || this.message || "must be %{type} %{count}"; + errors.push(v.format(msg, { + count, + type: prettify(name) + })); + } + } + if (options.odd && value % 2 !== 1) { + errors.push(options.notOdd || this.notOdd || this.message || "must be odd"); + } + if (options.even && value % 2 !== 0) { + errors.push(options.notEven || this.notEven || this.message || "must be even"); + } + if (errors.length) { + return options.message || errors; + } + }, + datetime: v.extend(function(value, options) { + if (!v.isFunction(this.parse) || !v.isFunction(this.format)) { + throw new Error("Both the parse and format functions needs to be set to use the datetime/date validator"); + } + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var err, errors = [], earliest = options.earliest ? this.parse(options.earliest, options) : NaN, latest = options.latest ? this.parse(options.latest, options) : NaN; + value = this.parse(value, options); + if (isNaN(value) || options.dateOnly && value % 864e5 !== 0) { + err = options.notValid || options.message || this.notValid || "must be a valid date"; + return v.format(err, { value: arguments[0] }); + } + if (!isNaN(earliest) && value < earliest) { + err = options.tooEarly || options.message || this.tooEarly || "must be no earlier than %{date}"; + err = v.format(err, { + value: this.format(value, options), + date: this.format(earliest, options) + }); + errors.push(err); + } + if (!isNaN(latest) && value > latest) { + err = options.tooLate || options.message || this.tooLate || "must be no later than %{date}"; + err = v.format(err, { + date: this.format(latest, options), + value: this.format(value, options) + }); + errors.push(err); + } + if (errors.length) { + return v.unique(errors); + } + }, { + parse: null, + format: null + }), + date: function(value, options) { + options = v.extend({}, options, { dateOnly: true }); + return v.validators.datetime.call(v.validators.datetime, value, options); + }, + format: function(value, options) { + if (v.isString(options) || options instanceof RegExp) { + options = { pattern: options }; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is invalid", pattern = options.pattern, match; + if (!v.isDefined(value)) { + return; + } + if (!v.isString(value)) { + return message; + } + if (v.isString(pattern)) { + pattern = new RegExp(options.pattern, options.flags); + } + match = pattern.exec(value); + if (!match || match[0].length != value.length) { + return message; + } + }, + inclusion: function(value, options) { + if (!v.isDefined(value)) { + return; + } + if (v.isArray(options)) { + options = { within: options }; + } + options = v.extend({}, this.options, options); + if (v.contains(options.within, value)) { + return; + } + var message = options.message || this.message || "^%{value} is not included in the list"; + return v.format(message, { value }); + }, + exclusion: function(value, options) { + if (!v.isDefined(value)) { + return; + } + if (v.isArray(options)) { + options = { within: options }; + } + options = v.extend({}, this.options, options); + if (!v.contains(options.within, value)) { + return; + } + var message = options.message || this.message || "^%{value} is restricted"; + if (v.isString(options.within[value])) { + value = options.within[value]; + } + return v.format(message, { value }); + }, + email: v.extend(function(value, options) { + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not a valid email"; + if (!v.isDefined(value)) { + return; + } + if (!v.isString(value)) { + return message; + } + if (!this.PATTERN.exec(value)) { + return message; + } + }, { + PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i + }), + equality: function(value, options, attribute, attributes, globalOptions) { + if (!v.isDefined(value)) { + return; + } + if (v.isString(options)) { + options = { attribute: options }; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not equal to %{attribute}"; + if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) { + throw new Error("The attribute must be a non empty string"); + } + var otherValue = v.getDeepObjectValue(attributes, options.attribute), comparator = options.comparator || function(v1, v2) { + return v1 === v2; + }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; + if (!comparator(value, otherValue, options, attribute, attributes)) { + return v.format(message, { attribute: prettify(options.attribute) }); + } + }, + // A URL validator that is used to validate URLs with the ability to + // restrict schemes and some domains. + url: function(value, options) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not a valid url", schemes = options.schemes || this.schemes || ["http", "https"], allowLocal = options.allowLocal || this.allowLocal || false, allowDataUrl = options.allowDataUrl || this.allowDataUrl || false; + if (!v.isString(value)) { + return message; + } + var regex = "^(?:(?:" + schemes.join("|") + ")://)(?:\\S+(?::\\S*)?@)?(?:"; + var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"; + if (allowLocal) { + tld += "?"; + } else { + regex += // IP address exclusion + // private & local networks + "(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})"; + } + regex += // IP address dotted notation octets + // excludes loopback network 0.0.0.0 + // excludes reserved space >= 224.0.0.0 + // excludes network & broacast addresses + // (first & last IP address of each class) + "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + tld + ")(?::\\d{2,5})?(?:[/?#]\\S*)?$"; + if (allowDataUrl) { + var mediaType = "\\w+\\/[-+.\\w]+(?:;[\\w=]+)*"; + var urlchar = "[A-Za-z0-9-_.!~\\*'();\\/?:@&=+$,%]*"; + var dataurl = "data:(?:" + mediaType + ")?(?:;base64)?," + urlchar; + regex = "(?:" + regex + ")|(?:^" + dataurl + "$)"; + } + var PATTERN = new RegExp(regex, "i"); + if (!PATTERN.exec(value)) { + return message; + } + }, + type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) { + if (v.isString(originalOptions)) { + originalOptions = { type: originalOptions }; + } + if (!v.isDefined(value)) { + return; + } + var options = v.extend({}, this.options, originalOptions); + var type = options.type; + if (!v.isDefined(type)) { + throw new Error("No type was specified"); + } + var check; + if (v.isFunction(type)) { + check = type; + } else { + check = this.types[type]; + } + if (!v.isFunction(check)) { + throw new Error("validate.validators.type.types." + type + " must be a function."); + } + if (!check(value, options, attribute, attributes, globalOptions)) { + var message = originalOptions.message || this.messages[type] || this.message || options.message || (v.isFunction(type) ? "must be of the correct type" : "must be of type %{type}"); + if (v.isFunction(message)) { + message = message(value, originalOptions, attribute, attributes, globalOptions); + } + return v.format(message, { attribute: v.prettify(attribute), type }); + } + }, { + types: { + object: function(value) { + return v.isObject(value) && !v.isArray(value); + }, + array: v.isArray, + integer: v.isInteger, + number: v.isNumber, + string: v.isString, + date: v.isDate, + boolean: v.isBoolean + }, + messages: {} + }) + }; + validate3.formatters = { + detailed: function(errors) { + return errors; + }, + flat: v.flattenErrorsToArray, + grouped: function(errors) { + var attr; + errors = v.groupErrorsByAttribute(errors); + for (attr in errors) { + errors[attr] = v.flattenErrorsToArray(errors[attr]); + } + return errors; + }, + constraint: function(errors) { + var attr; + errors = v.groupErrorsByAttribute(errors); + for (attr in errors) { + errors[attr] = errors[attr].map(function(result) { + return result.validator; + }).sort(); + } + return errors; + } + }; + validate3.exposeModule(validate3, this, exports2, module2, define2); + }).call( + exports, + typeof exports !== "undefined" ? ( + /* istanbul ignore next */ + exports + ) : null, + typeof module !== "undefined" ? ( + /* istanbul ignore next */ + module + ) : null, + typeof define !== "undefined" ? ( + /* istanbul ignore next */ + define + ) : null + ); + } + }); + + // src/js/basic-kyc.js + var import_validate2 = __toESM(require_validate(), 1); + + // src/js/components/ConsentScreen.js + function templateString() { + return ` + + + + + + + + `; + } + var EndUserConsent = class extends HTMLElement { + constructor() { + super(); + this.idRequiresTotpConsent = ["BVN_MFA"]; + this.templateString = templateString.bind(this); + this.render = () => { + return this.templateString(); + }; + this.attachShadow({ mode: "open" }); + } + connectedCallback() { + this.pages = []; + const template = document.createElement("template"); + template.innerHTML = this.render(); + this.shadowRoot.appendChild(template.content.cloneNode(true)); + this.consentScreen = this.shadowRoot.querySelector("#consent-screen"); + this.totpConsentApp = this.shadowRoot.querySelector("totp-consent-app"); + this.consentRejectedScreen = this.shadowRoot.querySelector( + "#consent-rejected-screen" + ); + this.allowButton = this.shadowRoot.querySelector("#allow"); + this.rejectButton = this.shadowRoot.querySelector("#cancel"); + this.backToConsentButton = this.shadowRoot.querySelector("#back-to-consent"); + this.confirmConsentRejectionButton = this.shadowRoot.querySelector( + "#confirm-consent-rejection" + ); + this.backButton = this.shadowRoot.querySelector("#back-button"); + const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + this.allowButton.addEventListener( + "click", + (e) => this.handleConsentGrant(e) + ); + this.rejectButton.addEventListener( + "click", + (e) => this.handleConsentGrant(e) + ); + this.backToConsentButton.addEventListener( + "click", + () => this.setActiveScreen(this.consentScreen) + ); + this.confirmConsentRejectionButton.addEventListener( + "click", + (e) => this.handleConsentRejection(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", + (e) => this.handleTotpConsentEvents(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentGranted::TOTP", + (e) => this.handleTotpConsentEvents(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentDenied::Back", + (e) => this.handleBackEvents(e) + ); + this.backButton.addEventListener("click", (e) => { + this.handleBackEvents(e); + }); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + this.closeWindow(); + }, + false + ); + }); + this.activeScreen = this.consentScreen; + } + setActiveScreen(screen) { + this.activeScreen.hidden = true; + screen.hidden = false; + this.activeScreen = screen; + } + get baseUrl() { + return this.getAttribute("base-url"); + } + get country() { + return this.getAttribute("country"); + } + get demoMode() { + return !!this.hasAttribute("demo-mode"); + } + get hideBack() { + return this.hasAttribute("hide-back-to-host"); + } + get idHint() { + return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; + } + get idRegex() { + return this.getAttribute("id-regex"); + } + get idType() { + return this.getAttribute("id-type"); + } + get idTypeLabel() { + return this.getAttribute("id-type-label"); + } + get partnerId() { + return this.getAttribute("partner-id"); + } + get partnerName() { + return this.getAttribute("partner-name"); + } + get partnerLogoURL() { + return this.getAttribute("partner-logo"); + } + get partnerPolicyURL() { + return this.getAttribute("policy-url"); + } + get themeColor() { + return this.getAttribute("theme-color") || "#043C93"; + } + get token() { + return this.getAttribute("token"); + } + handleConsentGrant(e) { + const granted = e.target === this.allowButton; + if (granted) { + if (this.idRequiresTotpConsent.includes(this.idType)) { + this.setActiveScreen(this.totpConsentApp); + this.pages.push(this.consentScreen); + } else { + this.dispatchEvent( + new CustomEvent("SmileIdentity::ConsentGranted", { + detail: { + consented: { + personal_details: granted, + contact_information: granted, + document_information: granted + } + } + }) + ); + } + } else { + this.setActiveScreen(this.consentRejectedScreen); + } + } + handleConsentRejection() { + this.dispatchEvent(new CustomEvent("SmileIdentity::ConsentDenied")); + } + handleTotpConsentEvents(e) { + const customEvent = new CustomEvent(e.type, { + detail: { + ...e.detail + } + }); + this.dispatchEvent(customEvent); + } + handleBackEvents() { + const page = this.pages.pop(); + if (page) { + this.setActiveScreen(page); + } else { + this.dispatchEvent(new CustomEvent("SmileIdentity::Exit")); + } + } + closeWindow() { + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + }; + var ConsentScreen_default = EndUserConsent; + + // src/js/components/TotpConsentApp.js + var import_validate = __toESM(require_validate(), 1); + function postData(url, data) { + return fetch(url, { + method: "POST", + mode: "cors", + cache: "no-cache", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + body: JSON.stringify(data) + }); + } + function markup() { + return ` + + +
+ +

+ Enter your ${this.idTypeLabel} +

+ +
+
+ + + + +

+ ${this.idHint} +

+
+ + +
+
+ + + + + `; + } + var TotpBasedConsent = class extends HTMLElement { + constructor() { + super(); + this.templateString = markup.bind(this); + this.render = () => { + return this.templateString(); + }; + this.attachShadow({ mode: "open" }); + this.modes = []; + this["otp-delivery-mode"] = ""; + this.queryOtpModes = this.queryOtpModes.bind(this); + this.selectOtpMode = this.selectOtpMode.bind(this); + this.submitOtp = this.submitOtp.bind(this); + this.switchContactMethod = this.switchContactMethod.bind(this); + this.handleTotpConsentGrant = this.handleTotpConsentGrant.bind(this); + this.handleTotpConsentContactMethodsOutdated = this.handleTotpConsentContactMethodsOutdated.bind(this); + this.pages = []; + } + static get observedAttributes() { + return ["modes", "otp-delivery-mode"]; + } + attributeChangedCallback(name) { + switch (name) { + case "modes": + case "otp-delivery-mode": { + const updatedTemplate = document.createElement("template"); + updatedTemplate.innerHTML = this.render(); + const updatedNode = updatedTemplate.content.cloneNode(true).querySelector(`#${this.activeScreen.id}`); + updatedNode.hidden = false; + this.shadowRoot.replaceChild(updatedNode, this.activeScreen); + this.setUpEventListeners(); + this.setActiveScreen(updatedNode); + break; + } + default: + break; + } + } + setUpEventListeners() { + this.idEntryScreen = this.shadowRoot.querySelector("#id-entry"); + this.selectModeScreen = this.shadowRoot.querySelector("#select-mode"); + this.otpVerificationScreen = this.shadowRoot.querySelector("#otp-verification"); + if (!this.activeScreen) { + this.activeScreen = this.idEntryScreen; + } + this.queryOtpModesButton = this.idEntryScreen.querySelector("#query-otp-modes"); + this.backButton = this.idEntryScreen.querySelector("#back-button"); + this.selectOtpModeButton = this.selectModeScreen.querySelector("#select-otp-mode"); + this.entryBackbutton = this.selectModeScreen.querySelector( + "#back-to-entry-button" + ); + this.contactMethodsOutdatedButton = this.selectModeScreen.querySelector( + "#contact-methods-outdated" + ); + this.submitOtpButton = this.otpVerificationScreen.querySelector("#submit-otp"); + this.switchContactMethodButton = this.otpVerificationScreen.querySelector( + ".try-another-method" + ); + const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + this.idNumberInput = this.idEntryScreen.querySelector("#id_number"); + this.modeInputs = this.selectModeScreen.querySelectorAll('[name="mode"]'); + this.otpInput = this.otpVerificationScreen.querySelector("#totp-token"); + this.queryOtpModesButton.addEventListener( + "click", + (e) => this.queryOtpModes(e) + ); + this.selectOtpModeButton.addEventListener( + "click", + (e) => this.selectOtpMode(e) + ); + this.submitOtpButton.addEventListener("click", (e) => this.submitOtp(e)); + this.switchContactMethodButton.addEventListener( + "click", + (e) => this.switchContactMethod(e) + ); + this.contactMethodsOutdatedButton.addEventListener( + "click", + (e) => this.handleTotpConsentContactMethodsOutdated(e) + ); + this.entryBackbutton.addEventListener("click", () => { + this.handleBackClick(); + }); + this.backButton.addEventListener("click", () => { + this.handleBackClick(); + }); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + this.closeWindow(); + }, + false + ); + }); + } + closeWindow() { + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + handleBackClick() { + const page = this.pages.pop(); + if (page) { + this.setActiveScreen(page); + } else { + this.dispatchEvent( + new CustomEvent("SmileIdentity::ConsentDenied::Back", {}) + ); + } + } + connectedCallback() { + const template = document.createElement("template"); + template.innerHTML = this.render(); + this.shadowRoot.appendChild(template.content.cloneNode(true)); + this.setUpEventListeners(); + } + switchContactMethod() { + this.queryOtpModes(); + } + resetForm() { + const invalidElements = this.activeScreen.querySelectorAll("[aria-invalid]"); + invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); + const validationMessages = this.activeScreen.querySelectorAll( + ".validation-message" + ); + validationMessages.forEach((el) => el.remove()); + } + handleIdNumberValidationErrors(errors) { + const fields = Object.keys(errors); + fields.forEach((field) => { + const input = this.activeScreen.querySelector(`#${field}`); + input.setAttribute("aria-invalid", "true"); + input.setAttribute("aria-describedby", `${field}-hint`); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("id", `${field}-hint`); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = errors[field][0]; + input.insertAdjacentElement("afterend", errorDiv); + }); + } + handleActiveScreenErrors(error) { + const submitButton = this.activeScreen.querySelector('[type="submit"]'); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = error; + submitButton.insertAdjacentElement("beforebegin", errorDiv); + } + validateIdNumber(idNumber) { + const validationConstraints = { + id_number: { + presence: { + allowEmpty: false, + message: "is required" + }, + format: new RegExp(this.idRegex) + } + }; + const errors = (0, import_validate.default)({ id_number: idNumber }, validationConstraints); + if (errors) { + this.handleIdNumberValidationErrors(errors); + } + return errors; + } + async queryOtpModes(event) { + if (event) { + event.preventDefault(); + this.resetForm(); + } + const validationErrors = this.validateIdNumber(this.idNumberInput.value); + localStorage.setItem("idNumber", this.idNumberInput.value || this.idNumber); + if (!validationErrors) { + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + partner_id: this.partnerId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.sessionId = json.session_id; + this.modes = json.modes; + this.setActiveScreen(this.selectModeScreen); + this.setAttribute("modes", json.modes); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + } + async selectOtpMode(event) { + event.preventDefault(); + this.resetForm(); + this.mode = Array.prototype.find.call( + this.modeInputs, + (node) => node.checked + ).value; + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + mode: this.mode, + partner_id: this.partnerId, + session_id: this.sessionId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent/mode`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.selectedOtpDeliveryMode = this.modes.filter( + (mode) => mode[this.mode] + )[0][this.mode]; + this.setActiveScreen(this.otpVerificationScreen); + this.setAttribute("otp-delivery-mode", this.selectedOtpDeliveryMode); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + async submitOtp(event) { + event.preventDefault(); + this.resetForm(); + this.otp = this.otpInput.value; + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + otp: this.otp, + partner_id: this.partnerId, + session_id: this.sessionId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent/otp`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.handleTotpConsentGrant(event); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + toggleLoading() { + const button = this.activeScreen.querySelector('button[type="submit"]'); + const text = button.querySelector(".text"); + const arrow = button.querySelector("svg"); + const spinner = button.querySelector(".spinner"); + button.toggleAttribute("disabled"); + text.toggleAttribute("hidden"); + arrow.toggleAttribute("hidden"); + spinner.toggleAttribute("hidden"); + } + setActiveScreen(screen) { + this.activeScreen.hidden = true; + screen.hidden = false; + this.activeScreen = screen; + } + get baseUrl() { + return this.getAttribute("base-url"); + } + get country() { + return this.getAttribute("country"); + } + get idHint() { + return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; + } + get idNumber() { + return localStorage.getItem("idNumber"); + } + get idRegex() { + return this.getAttribute("id-regex"); + } + get idType() { + return this.getAttribute("id-type"); + } + get idTypeLabel() { + return this.getAttribute("id-type-label"); + } + get partnerId() { + return this.getAttribute("partner-id"); + } + get partnerName() { + return this.getAttribute("partner-name"); + } + get token() { + return this.getAttribute("token"); + } + handleTotpConsentGrant() { + const customEvent = new CustomEvent("SmileIdentity::ConsentGranted::TOTP", { + detail: { + id_number: this.idNumber, + session_id: this.sessionId, + consented: { + personal_details: true, + contact_information: true, + document_information: true + } + } + }); + this.dispatchEvent(customEvent); + } + handleTotpConsentContactMethodsOutdated() { + const tag = "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated"; + const customEvent = new CustomEvent(tag, { + detail: { + message: tag, + data: { + id_number: this.idNumber, + session_id: this.sessionId + } + } + }); + this.dispatchEvent(customEvent); + } + }; + var TotpConsentApp_default = TotpBasedConsent; + + // src/js/components/Combobox.js + function generateId(prefix) { + const id = [...Array(30)].map(() => Math.random().toString(36)[3]).join(""); + return `${prefix}-${id}`; + } + function isElementInView(element) { + const bounding = element.getBoundingClientRect(); + return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth); + } + function isScrollable(element) { + return element && element.clientHeight < element.scrollHeight; + } + function maintainScrollVisibility(activeElement, scrollParent) { + const { offsetHeight, offsetTop } = activeElement; + const { offsetHeight: parentOffsetHeight, scrollTop } = scrollParent; + const isAbove = offsetTop < scrollTop; + const isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight; + if (isAbove) { + scrollParent.scrollTo(0, offsetTop); + } else if (isBelow) { + scrollParent.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight); + } + } + var ComboboxRoot = class extends HTMLElement { + constructor() { + super(); + this.handleRoaming = this.handleRoaming.bind(this); + } + connectedCallback() { + this.trigger = this.querySelector("smileid-combobox-trigger"); + document.addEventListener("click", this.handleRoaming); + this.addEventListener("focusout", this.handleRoaming); + this.addEventListener("blur", this.handleRoaming); + } + disconnectedCallback() { + document.removeEventListener("click", this.handleRoaming); + this.removeEventListener("focusout", this.handleRoaming); + this.removeEventListener("blur", this.handleRoaming); + } + handleRoaming(event) { + const target = event.relatedTarget || event.target; + if (this.contains(target)) { + return; + } + if (this.trigger.getAttribute("expanded") === "true") { + this.trigger.setAttribute("expanded", "false"); + } + } + }; + var ComboboxTrigger = class extends HTMLElement { + constructor() { + super(); + this.handleKeyUp = this.handleKeyUp.bind(this); + this.handleKeyDown = this.handleKeyDown.bind(this); + this.handleSelection = this.handleSelection.bind(this); + this.toggleExpansionState = this.toggleExpansionState.bind(this); + } + get type() { + return this.getAttribute("type") || "text"; + } + get label() { + return this.getAttribute("label") || ""; + } + get value() { + return this.getAttribute("value") || ""; + } + get disabled() { + return this.hasAttribute("disabled"); + } + connectedCallback() { + if (!this.label) { + throw new Error(": a label attribute is required"); + } + this.innerHTML = `${this.type === "text" ? ` +
+ + +
+ ` : ``}`; + this.setAttribute("expanded", false); + this.inputTrigger = this.querySelector("input"); + this.buttonTrigger = this.querySelector("button"); + this.buttonTrigger.setAttribute("aria-expanded", false); + this.buttonTrigger.setAttribute("role", "combobox"); + this.buttonTrigger.addEventListener("keydown", this.handleKeyDown); + this.buttonTrigger.addEventListener("click", this.toggleExpansionState); + if (this.inputTrigger) { + this.inputTrigger.setAttribute("aria-expanded", false); + this.inputTrigger.setAttribute("role", "combobox"); + this.inputTrigger.addEventListener("keydown", this.handleKeyDown); + this.inputTrigger.addEventListener("keyup", this.handleKeyUp); + this.inputTrigger.addEventListener("change", (e) => e.stopPropagation()); + } + this.listbox = this.parentElement.querySelector("smileid-combobox-listbox"); + this.options = Array.from( + this.parentElement.querySelectorAll("smileid-combobox-option") + ); + this.options.forEach((node) => { + node.addEventListener("Combobox::Option::Select", this.handleSelection); + }); + } + disconnectedCallback() { + this.buttonTrigger.removeEventListener("keydown", this.handleKeyDown); + this.buttonTrigger.removeEventListener("click", this.toggleExpansionState); + if (this.inputTrigger) { + this.inputTrigger.removeEventListener("keydown", this.handleKeyDown); + this.inputTrigger.removeEventListener("keyup", this.handleKeyUp); + this.inputTrigger.removeEventListener( + "change", + (e) => e.stopPropagation() + ); + } + if (this.options) { + this.options.forEach((node) => { + node.removeEventListener( + "Combobox::Option::Select", + this.handleSelection + ); + }); + } + } + handleKeyDown(event) { + if (event.ctrlKey || event.shiftKey) { + return; + } + const key = event.key; + switch (key) { + case "Enter": + case "Space": + case " ": + if (this.getAttribute("expanded") === "true") { + if (this.inputTrigger && (key === "Space" || key === " ")) { + this.resetListbox(); + } else { + event.preventDefault(); + const selectedOption = this.buttonTrigger.getAttribute( + "aria-activedescendant" + ); + if (selectedOption) { + document.getElementById(selectedOption).click(); + } + } + } else { + event.preventDefault(); + this.toggleExpansionState(); + } + break; + case "Esc": + case "Escape": + event.preventDefault(); + if (this.getAttribute("expanded") === "true") { + this.toggleExpansionState(); + } + break; + case "Down": + case "ArrowDown": + event.preventDefault(); + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + this.focusListbox("First"); + } else { + this.focusListbox("Down"); + } + break; + case "Up": + case "ArrowUp": + event.preventDefault(); + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + this.focusListbox("Last"); + } else { + this.focusListbox("Up"); + } + break; + case "Left": + case "ArrowLeft": + case "Right": + case "ArrowRight": + case "Home": + case "End": + this.resetListbox(); + break; + case "Tab": + break; + default: + break; + } + } + handleKeyUp(event) { + const key = event.key; + const isPrintableCharacter = (str) => str.length === 1 && str.match(/\S| /); + if (event.key === "Escape" || event.key === "Esc") { + event.preventDefault(); + if (this.getAttribute("expanded") === "true") { + this.toggleExpansionState(); + } else if (this.inputTrigger) { + this.inputTrigger.value = ""; + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Filter", { detail: "" }) + ); + } + } + if (isPrintableCharacter(key) || key === "Backspace") { + this.resetListbox(); + this.filterListbox(event.target.value); + } + } + toggleExpansionState() { + const listboxIsExpanded = this.getAttribute("expanded") === "true"; + this.setAttribute("expanded", !listboxIsExpanded); + this.buttonTrigger.setAttribute("aria-expanded", !listboxIsExpanded); + if (this.inputTrigger) { + this.inputTrigger.setAttribute("aria-expanded", !listboxIsExpanded); + } + } + handleSelection(event) { + if (this.inputTrigger) { + this.inputTrigger.value = event.detail.label; + } else { + this.buttonTrigger.textContent = event.detail.label; + } + this.toggleExpansionState(); + this.parentElement.dispatchEvent( + new CustomEvent("change", { + detail: { + value: event.detail.value + } + }) + ); + } + filterListbox(value) { + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + } + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Filter", { detail: value }) + ); + } + focusListbox(direction) { + this.resetListbox(); + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Focus", { + detail: { + direction + } + }) + ); + } + resetListbox() { + this.listbox.dispatchEvent(new CustomEvent("Combobox::Listbox::Reset")); + } + }; + var ComboboxListbox = class extends HTMLElement { + constructor() { + super(); + this.handleFilter = this.handleFilter.bind(this); + this.handleFocus = this.handleFocus.bind(this); + this.handleReset = this.handleReset.bind(this); + this.handleOptionSelection = this.handleOptionSelection.bind(this); + } + get emptyLabel() { + return this.getAttribute("empty-label"); + } + get emptyState() { + return ` +

+ ${this.emptyLabel || "No items"} +

+ `; + } + connectedCallback() { + this.setAttribute("role", "listbox"); + this.setAttribute("id", generateId("listbox")); + this.addEventListener("Combobox::Listbox::Filter", this.handleFilter); + this.addEventListener("Combobox::Listbox::Focus", this.handleFocus); + this.addEventListener("Combobox::Listbox::Reset", this.handleReset); + this.triggers = Array.from( + this.parentElement.querySelectorAll( + "smileid-combobox-trigger input, smileid-combobox-trigger button" + ) + ); + this.triggers.forEach( + (node) => node.setAttribute("aria-controls", this.getAttribute("id")) + ); + this.optionNodes = Array.from( + this.querySelectorAll("smileid-combobox-option") + ); + this.selectedNode = this.optionNodes.find( + (node) => !node.hasAttribute("hidden") && node.hasAttribute("aria-selected") + ) || this.optionNodes.filter((node) => !node.hasAttribute("hidden"))[0]; + this.selectedNode.setAttribute("tabindex", "0"); + this.optionNodes.forEach((node) => { + node.addEventListener( + "Combobox::Option::Select", + this.handleOptionSelection + ); + }); + if (this.optionNodes.length === 0) { + this.innerHTML = this.emptyState; + } + } + disconnectedCallback() { + this.removeEventListener("Combobox::Listbox::Filter", this.handleFilter); + this.removeEventListener("Combobox::Listbox::Focus", this.handleFocus); + this.removeEventListener("Combobox::Listbox::Reset", this.handleReset); + this.optionNodes.forEach((node) => { + node.removeEventListener( + "Combobox::Option::Select", + this.handleOptionSelection + ); + }); + } + static get observedAttributes() { + return ["search-term"]; + } + attributeChangedCallback(name, oldValue, newValue) { + switch (name) { + case "search-term": + if (oldValue && !newValue) { + this.optionNodes.forEach((node) => { + node.removeAttribute("hidden"); + }); + } else if (newValue) { + this.filterNodes(newValue); + } + break; + default: + break; + } + } + filterNodes(searchTerm) { + this.optionNodes.forEach((node) => { + const value = node.getAttribute("value").toLowerCase(); + const label = node.getAttribute("label").toLowerCase(); + const containsSearchTerm = value.includes(searchTerm.toLowerCase()) || label.includes(searchTerm.toLowerCase()); + if (containsSearchTerm) { + node.removeAttribute("hidden"); + } else { + node.setAttribute("hidden", true); + } + }); + const optionsVisible = this.optionNodes.find( + (node) => !node.hasAttribute("hidden") + ); + const emptyState = this.querySelector("#empty-state"); + if (!optionsVisible && !emptyState) { + this.insertAdjacentHTML("afterbegin", this.emptyState); + } else if (optionsVisible && emptyState) { + this.removeChild(emptyState); + } + } + handleFilter(event) { + const searchTerm = event.detail; + this.setAttribute("search-term", searchTerm); + } + handleFocus(event) { + this.setSelected(event.detail.direction); + } + handleReset() { + this.optionNodes.forEach((node) => node.setAttribute("tabindex", "-1")); + } + handleOptionSelection(event) { + const inputTrigger = this.triggers.filter( + (node) => node.tagName === "INPUT" + )[0]; + if (inputTrigger) { + this.setAttribute("search-term", event.detail.label); + } + } + setSelected(direction) { + const visibleOptions = this.optionNodes.filter( + (node) => !node.hasAttribute("hidden") + ); + this.selectedNode.setAttribute("tabindex", "0"); + const currentIndex = visibleOptions.findIndex( + (node) => node === this.selectedNode + ); + const lastIndex = visibleOptions.length - 1; + let nextIndex; + switch (direction) { + case "First": + nextIndex = 0; + break; + case "Last": + nextIndex = lastIndex; + break; + case "Up": + if (currentIndex === 0) { + nextIndex = lastIndex; + } else { + nextIndex = currentIndex - 1; + } + break; + default: + if (currentIndex === lastIndex) { + nextIndex = 0; + } else { + nextIndex = currentIndex + 1; + } + break; + } + if (currentIndex !== nextIndex) { + this.swapSelected(this.selectedNode, visibleOptions[nextIndex]); + } + } + swapSelected(currentNode, newNode) { + currentNode.setAttribute("tabindex", "-1"); + newNode.setAttribute("tabindex", "0"); + this.selectedNode = newNode; + if (isScrollable(this)) { + maintainScrollVisibility(this.selectedNode, this); + } + if (!isElementInView(newNode)) { + newNode.scrollIntoView({ behavior: "smooth", block: "nearest" }); + } + this.triggers.forEach( + (node) => node.setAttribute("aria-activedescendant", newNode.id) + ); + } + }; + var ComboboxOption = class extends HTMLElement { + connectedCallback() { + this.setAttribute("role", "option"); + this.setAttribute("tabindex", "-1"); + this.setAttribute("id", generateId("option")); + this.options = Array.from( + this.parentElement.querySelectorAll("smileid-combobox-option") + ); + this.addEventListener("click", this.select); + } + disconnectedCallback() { + this.removeEventListener("click", this.select); + } + get value() { + return this.getAttribute("value"); + } + get label() { + return this.getAttribute("label"); + } + select() { + const selectedOption = this.options.find( + (node) => node.getAttribute("aria-selected") + ); + if (selectedOption) { + selectedOption.removeAttribute("aria-selected"); + } + this.setAttribute("aria-selected", true); + this.dispatchEvent( + new CustomEvent("Combobox::Option::Select", { + detail: { + label: this.label, + value: this.value, + id: this.getAttribute("id") + } + }) + ); + } + }; + var Combobox_default = { + Root: ComboboxRoot, + Trigger: ComboboxTrigger, + List: ComboboxListbox, + Option: ComboboxOption + }; + + // package.json + var version = "v1.2.3"; + + // src/js/basic-kyc.js + (function basicKyc() { + "use strict"; + const endpoints = { + development: "https://devapi.smileidentity.com", + sandbox: "https://testapi.smileidentity.com", + live: "https://api.smileidentity.com", + production: "https://api.smileidentity.com" + }; + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); + window.customElements.define("end-user-consent", ConsentScreen_default); + window.customElements.define("totp-consent-app", TotpConsentApp_default); + window.customElements.define("smileid-combobox", Combobox_default.Root); + window.customElements.define("smileid-combobox-trigger", Combobox_default.Trigger); + window.customElements.define("smileid-combobox-listbox", Combobox_default.List); + window.customElements.define("smileid-combobox-option", Combobox_default.Option); + const pages = []; + let activeScreen; + let config; + let consent_information; + let id_info; + let partner_params; + let ngBankCodes; + let productConstraints; + let EndUserConsent2; + const LoadingScreen = document.querySelector("#loading-screen"); + const SelectIDType = document.querySelector("#select-id-type"); + const IDInfoForm = document.querySelector("#id-info"); + const CompleteScreen = document.querySelector("#complete-screen"); + let disableBackOnFirstScreen = false; + const CloseIframeButtons = document.querySelectorAll(".close-iframe"); + function postData2(url = "", data = {}) { + return fetch(url, { + method: "POST", + mode: "cors", + cache: "no-cache", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + body: JSON.stringify(data) + }); + } + async function getProductConstraints() { + try { + const productsConfigPayload = { + partner_id: config.partner_details.partner_id, + token: config.token, + partner_params + }; + const productsConfigUrl = `${endpoints[config.environment]}/v1/products_config`; + const productsConfigPromise = postData2( + productsConfigUrl, + productsConfigPayload + ); + const servicesPromise = fetch( + `${endpoints[config.environment]}/v1/services` + ); + const [productsConfigResponse, servicesResponse] = await Promise.all([ + productsConfigPromise, + servicesPromise + ]); + if (productsConfigResponse.ok && servicesResponse.ok) { + const partnerConstraints = await productsConfigResponse.json(); + const generalConstraints = await servicesResponse.json(); + ngBankCodes = generalConstraints.bank_codes; + const previewBvnMfa = config.previewBVNMFA; + if (previewBvnMfa) { + generalConstraints.hosted_web.basic_kyc.NG.id_types.BVN_MFA = { + id_number_regex: "^[0-9]{11}$", + label: "Bank Verification Number (with OTP)", + required_fields: [ + "country", + "id_type", + "session_id", + "user_id", + "job_id", + "first_name", + "last_name" + ], + test_data: "00000000000" + }; + } + return { + partnerConstraints, + generalConstraints: generalConstraints.hosted_web.basic_kyc + }; + } + throw new Error("Failed to get supported ID types"); + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + window.addEventListener( + "message", + async (event) => { + if (event.data && event.data.includes("SmileIdentity::Configuration")) { + config = JSON.parse(event.data); + activeScreen = LoadingScreen; + getPartnerParams(); + const { partnerConstraints, generalConstraints } = await getProductConstraints(); + productConstraints = generalConstraints; + initializeSession(generalConstraints, partnerConstraints); + } + }, + false + ); + function setInitialScreen(partnerConstraints) { + const { country: selectedCountry, id_type: selectedIDType } = id_info; + const selectedIdRequiresConsent = partnerConstraints.consentRequired[selectedCountry] ? partnerConstraints.consentRequired[selectedCountry].includes( + selectedIDType + ) : false; + if (selectedIdRequiresConsent || config.consent_required || config.demo_mode) { + const IDRequiresConsent = selectedIdRequiresConsent || config.consent_required && config.consent_required[selectedCountry] && config.consent_required[selectedCountry].includes(selectedIDType); + if (IDRequiresConsent || config.demo_mode) { + customizeConsentScreen(); + setActiveScreen(EndUserConsent2); + } else { + setActiveScreen(IDInfoForm); + } + } else { + hideIdFromBackExit(); + setActiveScreen(IDInfoForm); + } + customizeForm(); + } + function hideIdFromBackExit() { + if (!disableBackOnFirstScreen) + return; + IDInfoForm.querySelector(".nav").classList.add("justify-right"); + IDInfoForm.querySelector(".back-wrapper").style.display = "none"; + } + function initializeSession(generalConstraints, partnerConstraints) { + const supportedCountries = Object.keys(generalConstraints).map((countryCode) => ({ + code: countryCode, + name: generalConstraints[countryCode].name + })).sort((a, b) => { + if (a.name < b.name) { + return -1; + } + if (a.name > b.name) { + return 1; + } + return 0; + }).map((item) => item.code); + let validCountries = []; + if (config.id_selection) { + const selectedCountryList = Object.keys(config.id_selection); + validCountries = supportedCountries.filter( + (value) => selectedCountryList.includes(value) + ); + if (validCountries.length === 1) { + const selectedCountry = validCountries[0]; + id_info = { + country: validCountries[0] + }; + const idTypes = config.id_selection[selectedCountry]; + if (idTypes.length === 1 || typeof idTypes === "string") { + id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; + disableBackOnFirstScreen = true; + setInitialScreen(partnerConstraints); + } + } + } else { + validCountries = Object.keys(partnerConstraints.idSelection.basic_kyc); + } + if (!id_info || !id_info.id_type) { + const selectCountry = SelectIDType.querySelector("#country"); + const selectIDType = SelectIDType.querySelector("#id_type"); + const hostedWebConfigForm = document.querySelector( + 'form[name="hosted-web-config"]' + ); + selectCountry.disabled = false; + setActiveScreen(SelectIDType); + const loadIdTypes = (countryCode) => { + if (countryCode) { + const validIDTypes = config.id_selection ? config.id_selection : partnerConstraints.idSelection.basic_kyc; + const constrainedIDTypes = Object.keys( + generalConstraints[countryCode].id_types + ); + const selectedIDTypes = validIDTypes[countryCode].filter( + (value) => constrainedIDTypes.includes(value) + ); + selectIDType.innerHTML = ""; + const initialOption = document.createElement("option"); + initialOption.setAttribute("value", ""); + initialOption.textContent = "--Please Select--"; + selectIDType.appendChild(initialOption); + selectedIDTypes.forEach((IDType) => { + const option = document.createElement("option"); + option.setAttribute("value", IDType); + option.textContent = generalConstraints[countryCode].id_types[IDType].label; + selectIDType.appendChild(option); + }); + selectIDType.disabled = false; + } else { + selectIDType.innerHTML = ""; + const option = document.createElement("option"); + option.disabled = true; + option.setAttribute("value", ""); + option.textContent = "--Select Country First--"; + selectIDType.appendChild(option); + } + }; + selectCountry.addEventListener("change", (e) => { + loadIdTypes(e.target.value); + }); + validCountries.forEach((country) => { + const countryObject = generalConstraints[country]; + if (countryObject) { + const option = document.createElement("option"); + option.setAttribute("value", country); + option.textContent = countryObject.name; + if (id_info && id_info.country && country === id_info.country) { + option.setAttribute("selected", true); + selectCountry.value = country; + selectCountry.disabled = true; + loadIdTypes(country); + } + selectCountry.appendChild(option); + } + }); + hostedWebConfigForm.addEventListener("submit", (e) => { + e.preventDefault(); + const selectedCountry = selectCountry.value; + const selectedIDType = selectIDType.value; + id_info = { + country: selectedCountry, + id_type: selectedIDType + }; + setInitialScreen(partnerConstraints); + }); + } + } + function initiateDemoMode() { + const demoTips = document.querySelectorAll(".demo-tip"); + Array.prototype.forEach.call(demoTips, (tip) => { + tip.hidden = false; + }); + const script = document.createElement("script"); + script.type = "text/javascript"; + script.src = "js/demo-ekyc.min.js"; + document.body.appendChild(script); + } + IDInfoForm.querySelector("#submitForm").addEventListener( + "click", + (event) => { + handleFormSubmit(event); + }, + false + ); + IDInfoForm.querySelector("#back-button").addEventListener( + "click", + (event) => { + event.preventDefault(); + const page = pages.pop(); + setActiveScreen(page); + }, + false + ); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + closeWindow(true); + }, + false + ); + }); + function customizeConsentScreen() { + const partnerDetails = config.partner_details; + const main = document.querySelector("main"); + EndUserConsent2 = document.querySelector("end-user-consent"); + if (EndUserConsent2) { + main.removeChild(EndUserConsent2); + } + EndUserConsent2 = document.createElement("end-user-consent"); + EndUserConsent2.setAttribute( + "base-url", + `${endpoints[config.environment] || config.environment}/v1` + ); + EndUserConsent2.setAttribute("country", id_info.country); + EndUserConsent2.setAttribute( + "id-regex", + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ); + EndUserConsent2.setAttribute("id-type", id_info.id_type); + EndUserConsent2.setAttribute( + "id-type-label", + productConstraints[id_info.country].id_types[id_info.id_type].label + ); + EndUserConsent2.setAttribute("partner-id", partnerDetails.partner_id); + EndUserConsent2.setAttribute("partner-name", partnerDetails.name); + EndUserConsent2.setAttribute("partner-logo", partnerDetails.logo_url); + EndUserConsent2.setAttribute("policy-url", partnerDetails.policy_url); + EndUserConsent2.setAttribute("theme-color", partnerDetails.theme_color); + EndUserConsent2.setAttribute("token", config.token); + if (disableBackOnFirstScreen) { + EndUserConsent2.setAttribute("hide-back-to-host", true); + } + if (config.demo_mode) { + EndUserConsent2.setAttribute("demo-mode", config.demo_mode); + localStorage.setItem( + "SmileIdentityConstraints", + JSON.stringify(productConstraints, null, 2) + ); + initiateDemoMode(); + } + EndUserConsent2.addEventListener( + "SmileIdentity::Exit", + () => { + setActiveScreen(SelectIDType); + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentGranted", + (event) => { + consent_information = event.detail; + if (consent_information.consented.personal_details) { + setActiveScreen(IDInfoForm); + } + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentGranted::TOTP", + (event) => { + consent_information = event.detail; + if (consent_information.consented.personal_details) { + id_info.id_number = consent_information.id_number; + id_info.session_id = consent_information.session_id; + id_info.consent_information = consent_information; + setActiveScreen(IDInfoForm); + } + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentDenied", + () => { + referenceWindow.postMessage("SmileIdentity::ConsentDenied", "*"); + closeWindow(); + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", + (event) => { + referenceWindow.postMessage(event.detail, "*"); + closeWindow(); + }, + false + ); + main.appendChild(EndUserConsent2); + } + function customizeForm() { + setGuideTextForIDType(); + setFormInputs(); + } + function setGuideTextForIDType() { + const label = document.querySelector('[for="id_number"]'); + const input = document.querySelector("#id_number"); + label.innerHTML = productConstraints[id_info.country].id_types[id_info.id_type].label; + input.setAttribute( + "placeholder", + productConstraints[id_info.country].id_types[id_info.id_type].test_data + ); + input.setAttribute( + "pattern", + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ); + } + function loadBankCodes(bankCodes, placeholderElement) { + const autocomplete = document.createElement("smileid-combobox"); + autocomplete.setAttribute("id", "bank_code"); + autocomplete.innerHTML = ` + + + + + ${bankCodes.map( + (bank) => ` + + ${bank.name} + + ` + ).join("\n")} + + `; + placeholderElement.replaceWith(autocomplete); + autocomplete.addEventListener("change", (e) => { + id_info.bank_code = e.detail ? e.detail.value : ""; + }); + return autocomplete; + } + function setFormInputs() { + const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; + const showIdNumber = requiredFields.some( + (fieldName) => fieldName.includes("id_number") + ); + if (showIdNumber) { + const IdNumber = IDInfoForm.querySelector("div#id-number"); + IdNumber.hidden = false; + } + const showNames = requiredFields.some( + (fieldName) => fieldName.includes("name") + ); + if (showNames) { + const Names = IDInfoForm.querySelector("fieldset#names"); + Names.hidden = false; + } + const showDOB = requiredFields.some( + (fieldName) => fieldName.includes("dob") + ); + if (showDOB) { + const DOB = IDInfoForm.querySelector("fieldset#dob"); + DOB.hidden = false; + } + const showCitizenship = requiredFields.some( + (fieldName) => fieldName.includes("citizenship") + ); + if (showCitizenship) { + const Citizenship = IDInfoForm.querySelector("fieldset#citizenships"); + Citizenship.hidden = false; + } + const showBankCode = requiredFields.some( + (fieldName) => fieldName.includes("bank_code") + ); + if (showBankCode) { + const BankCode = IDInfoForm.querySelector("fieldset#bank-code"); + loadBankCodes(ngBankCodes, BankCode.querySelector("#bank_code")); + BankCode.hidden = false; + } + } + function getPartnerParams() { + function parseJWT(token) { + const base64Url = token.split(".")[1]; + const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); + const jsonPayload = decodeURIComponent( + atob(base64).split("").map(function(c) { + return `%${c.charCodeAt(0).toString(16)}`; + }).join("") + ); + return JSON.parse(jsonPayload); + } + const { partner_params: partnerParams } = parseJWT(config.token); + partner_params = { ...partnerParams, ...config.partner_params || {} }; + } + function setActiveScreen(node) { + activeScreen.hidden = true; + pages.push(activeScreen); + node.hidden = false; + activeScreen = node; + } + function resetForm() { + const invalidElements = IDInfoForm.querySelectorAll("[aria-invalid]"); + invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); + const validationMessages = document.querySelectorAll(".validation-message"); + validationMessages.forEach((el) => el.remove()); + } + function validateInputs(payload) { + const validationConstraints = {}; + const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; + const showIdNumber = requiredFields.some( + (fieldName) => fieldName.includes("id_number") + ); + if (showIdNumber) { + validationConstraints.id_number = { + presence: { + allowEmpty: false, + message: "is required" + }, + format: new RegExp( + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ) + }; + } + const showNames = requiredFields.some( + (fieldName) => fieldName.includes("name") + ); + if (showNames) { + validationConstraints.first_name = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.last_name = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const showDOB = requiredFields.some( + (fieldName) => fieldName.includes("dob") + ); + if (showDOB) { + validationConstraints.day = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.month = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.year = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const showCitizenship = requiredFields.some( + (fieldName) => fieldName.includes("citizenship") + ); + if (showCitizenship) { + validationConstraints.citizenship = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const showBankCode = requiredFields.some( + (fieldName) => fieldName.includes("bank_code") + ); + if (showBankCode) { + validationConstraints.bank_code = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const validation = (0, import_validate2.default)(payload, validationConstraints); + if (validation) { + handleValidationErrors(validation); + const submitButton = IDInfoForm.querySelector('[type="button"]'); + submitButton.removeAttribute("disabled"); + } + return validation; + } + function handleValidationErrors(errors) { + const fields = Object.keys(errors); + fields.forEach((field) => { + const input = IDInfoForm.querySelector(`#${field}`); + input.setAttribute("aria-invalid", "true"); + input.setAttribute("aria-describedby", `${field}-hint`); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("id", `${field}-hint`); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = errors[field][0]; + input.insertAdjacentElement("afterend", errorDiv); + }); + } + async function handleFormSubmit(event) { + event.preventDefault(); + resetForm(); + const form = IDInfoForm.querySelector("form"); + const formData = new FormData(form); + const payload = { ...id_info, ...Object.fromEntries(formData.entries()) }; + const isInvalid = validateInputs(payload); + if (isInvalid) { + return; + } + id_info = { + dob: `${payload.year}-${payload.month}-${payload.day}`, + entered: true, + ...payload, + ...id_info + }; + try { + event.target.disabled = true; + await submitIdInfoForm(); + complete(); + event.target.disabled = false; + } catch (error) { + event.target.disabled = false; + displayErrorMessage("Something went wrong"); + console.error( + `SmileIdentity - ${error.name || error.message}: ${error.cause}` + ); + } + } + function displayErrorMessage(message) { + const p = document.createElement("p"); + p.textContent = message; + p.classList.add("validation-message"); + p.style.fontSize = "1.5rem"; + p.style.textAlign = "center"; + const main = document.querySelector("main"); + main.prepend(p); + } + async function submitIdInfoForm() { + const { year, month, day, ...data } = id_info; + const dob = year && month && day ? `${year}-${month}-${day}` : void 0; + const { + callback_url, + token, + partner_details: { partner_id } + } = config; + const payload = { + ...data, + dob, + partner_id, + partner_params, + callback_url, + token, + source_sdk: config.sdk || "hosted_web", + source_sdk_version: config.sdk_version || version + }; + const URL = `${endpoints[config.environment]}/v2/verify_async`; + const response = await postData2(URL, payload); + const json = await response.json(); + if (json.error) + throw new Error(json.error); + } + function complete() { + const countryName = productConstraints[id_info.country].name; + const idTypeName = productConstraints[id_info.country].id_types[id_info.id_type].label; + const thankYouMessage = CompleteScreen.querySelector("#thank-you-message"); + thankYouMessage.textContent = `We will process your ${countryName} - ${idTypeName} information to verify your identity`; + setActiveScreen(CompleteScreen); + handleSuccess(); + window.setTimeout(closeWindow, 2e3); + } + function closeWindow(userTriggered) { + const message = userTriggered ? "SmileIdentity::Close" : "SmileIdentity::Close::System"; + referenceWindow.postMessage(message, "*"); + } + function handleSuccess() { + referenceWindow.postMessage("SmileIdentity::Success", "*"); + } + })(); +})(); +/*! Bundled license information: + +validate.js/validate.js: + (*! + * validate.js 0.13.1 + * + * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp + * Validate.js may be freely distributed under the MIT license. + * For all details and documentation: + * http://validatejs.org/ + *) +*/ diff --git a/packages/embed/build/js/biometric-kyc.min.js b/packages/embed/build/js/biometric-kyc.min.js new file mode 100644 index 00000000..90a96008 --- /dev/null +++ b/packages/embed/build/js/biometric-kyc.min.js @@ -0,0 +1,7765 @@ +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] + }) : x)(function(x) { + if (typeof require !== "undefined") + return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); + }); + var __commonJS = (cb, mod) => function __require2() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + + // ../../node_modules/jszip/dist/jszip.min.js + var require_jszip_min = __commonJS({ + "../../node_modules/jszip/dist/jszip.min.js"(exports, module) { + !function(e) { + if ("object" == typeof exports && "undefined" != typeof module) + module.exports = e(); + else if ("function" == typeof define && define.amd) + define([], e); + else { + ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e(); + } + }(function() { + return function s(a, o, h) { + function u(r, e2) { + if (!o[r]) { + if (!a[r]) { + var t = "function" == typeof __require && __require; + if (!e2 && t) + return t(r, true); + if (l) + return l(r, true); + var n = new Error("Cannot find module '" + r + "'"); + throw n.code = "MODULE_NOT_FOUND", n; + } + var i = o[r] = { exports: {} }; + a[r][0].call(i.exports, function(e3) { + var t2 = a[r][1][e3]; + return u(t2 || e3); + }, i, i.exports, s, a, o, h); + } + return o[r].exports; + } + for (var l = "function" == typeof __require && __require, e = 0; e < h.length; e++) + u(h[e]); + return u; + }({ 1: [function(e, t, r) { + "use strict"; + var d = e("./utils"), c = e("./support"), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + r.encode = function(e2) { + for (var t2, r2, n, i, s, a, o, h = [], u = 0, l = e2.length, f = l, c2 = "string" !== d.getTypeOf(e2); u < e2.length; ) + f = l - u, n = c2 ? (t2 = e2[u++], r2 = u < l ? e2[u++] : 0, u < l ? e2[u++] : 0) : (t2 = e2.charCodeAt(u++), r2 = u < l ? e2.charCodeAt(u++) : 0, u < l ? e2.charCodeAt(u++) : 0), i = t2 >> 2, s = (3 & t2) << 4 | r2 >> 4, a = 1 < f ? (15 & r2) << 2 | n >> 6 : 64, o = 2 < f ? 63 & n : 64, h.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)); + return h.join(""); + }, r.decode = function(e2) { + var t2, r2, n, i, s, a, o = 0, h = 0, u = "data:"; + if (e2.substr(0, u.length) === u) + throw new Error("Invalid base64 input, it looks like a data url."); + var l, f = 3 * (e2 = e2.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; + if (e2.charAt(e2.length - 1) === p.charAt(64) && f--, e2.charAt(e2.length - 2) === p.charAt(64) && f--, f % 1 != 0) + throw new Error("Invalid base64 input, bad content length."); + for (l = c.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e2.length; ) + t2 = p.indexOf(e2.charAt(o++)) << 2 | (i = p.indexOf(e2.charAt(o++))) >> 4, r2 = (15 & i) << 4 | (s = p.indexOf(e2.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e2.charAt(o++))), l[h++] = t2, 64 !== s && (l[h++] = r2), 64 !== a && (l[h++] = n); + return l; + }; + }, { "./support": 30, "./utils": 32 }], 2: [function(e, t, r) { + "use strict"; + var n = e("./external"), i = e("./stream/DataWorker"), s = e("./stream/Crc32Probe"), a = e("./stream/DataLengthProbe"); + function o(e2, t2, r2, n2, i2) { + this.compressedSize = e2, this.uncompressedSize = t2, this.crc32 = r2, this.compression = n2, this.compressedContent = i2; + } + o.prototype = { getContentWorker: function() { + var e2 = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), t2 = this; + return e2.on("end", function() { + if (this.streamInfo.data_length !== t2.uncompressedSize) + throw new Error("Bug : uncompressed data size mismatch"); + }), e2; + }, getCompressedWorker: function() { + return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); + } }, o.createWorkerFrom = function(e2, t2, r2) { + return e2.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t2.compressWorker(r2)).pipe(new a("compressedSize")).withStreamInfo("compression", t2); + }, t.exports = o; + }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e, t, r) { + "use strict"; + var n = e("./stream/GenericWorker"); + r.STORE = { magic: "\0\0", compressWorker: function() { + return new n("STORE compression"); + }, uncompressWorker: function() { + return new n("STORE decompression"); + } }, r.DEFLATE = e("./flate"); + }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e, t, r) { + "use strict"; + var n = e("./utils"); + var o = function() { + for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { + e2 = r2; + for (var n2 = 0; n2 < 8; n2++) + e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; + t2[r2] = e2; + } + return t2; + }(); + t.exports = function(e2, t2) { + return void 0 !== e2 && e2.length ? "string" !== n.getTypeOf(e2) ? function(e3, t3, r2, n2) { + var i = o, s = n2 + r2; + e3 ^= -1; + for (var a = n2; a < s; a++) + e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3[a])]; + return -1 ^ e3; + }(0 | t2, e2, e2.length, 0) : function(e3, t3, r2, n2) { + var i = o, s = n2 + r2; + e3 ^= -1; + for (var a = n2; a < s; a++) + e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3.charCodeAt(a))]; + return -1 ^ e3; + }(0 | t2, e2, e2.length, 0) : 0; + }; + }, { "./utils": 32 }], 5: [function(e, t, r) { + "use strict"; + r.base64 = false, r.binary = false, r.dir = false, r.createFolders = true, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null; + }, {}], 6: [function(e, t, r) { + "use strict"; + var n = null; + n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n }; + }, { lie: 37 }], 7: [function(e, t, r) { + "use strict"; + var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i = e("pako"), s = e("./utils"), a = e("./stream/GenericWorker"), o = n ? "uint8array" : "array"; + function h(e2, t2) { + a.call(this, "FlateWorker/" + e2), this._pako = null, this._pakoAction = e2, this._pakoOptions = t2, this.meta = {}; + } + r.magic = "\b\0", s.inherits(h, a), h.prototype.processChunk = function(e2) { + this.meta = e2.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e2.data), false); + }, h.prototype.flush = function() { + a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); + }, h.prototype.cleanUp = function() { + a.prototype.cleanUp.call(this), this._pako = null; + }, h.prototype._createPako = function() { + this._pako = new i[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); + var t2 = this; + this._pako.onData = function(e2) { + t2.push({ data: e2, meta: t2.meta }); + }; + }, r.compressWorker = function(e2) { + return new h("Deflate", e2); + }, r.uncompressWorker = function() { + return new h("Inflate", {}); + }; + }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e, t, r) { + "use strict"; + function A(e2, t2) { + var r2, n2 = ""; + for (r2 = 0; r2 < t2; r2++) + n2 += String.fromCharCode(255 & e2), e2 >>>= 8; + return n2; + } + function n(e2, t2, r2, n2, i2, s2) { + var a, o, h = e2.file, u = e2.compression, l = s2 !== O.utf8encode, f = I.transformTo("string", s2(h.name)), c = I.transformTo("string", O.utf8encode(h.name)), d = h.comment, p = I.transformTo("string", s2(d)), m = I.transformTo("string", O.utf8encode(d)), _ = c.length !== h.name.length, g = m.length !== d.length, b = "", v = "", y = "", w = h.dir, k = h.date, x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; + t2 && !r2 || (x.crc32 = e2.crc32, x.compressedSize = e2.compressedSize, x.uncompressedSize = e2.uncompressedSize); + var S = 0; + t2 && (S |= 8), l || !_ && !g || (S |= 2048); + var z = 0, C = 0; + w && (z |= 16), "UNIX" === i2 ? (C = 798, z |= function(e3, t3) { + var r3 = e3; + return e3 || (r3 = t3 ? 16893 : 33204), (65535 & r3) << 16; + }(h.unixPermissions, w)) : (C = 20, z |= function(e3) { + return 63 & (e3 || 0); + }(h.dosPermissions)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v = A(1, 1) + A(B(f), 4) + c, b += "up" + A(v.length, 2) + v), g && (y = A(1, 1) + A(B(p), 4) + m, b += "uc" + A(y.length, 2) + y); + var E = ""; + return E += "\n\0", E += A(S, 2), E += u.magic, E += A(a, 2), E += A(o, 2), E += A(x.crc32, 4), E += A(x.compressedSize, 4), E += A(x.uncompressedSize, 4), E += A(f.length, 2), E += A(b.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + E + f + b, dirRecord: R.CENTRAL_FILE_HEADER + A(C, 2) + E + A(p.length, 2) + "\0\0\0\0" + A(z, 4) + A(n2, 4) + f + b + p }; + } + var I = e("../utils"), i = e("../stream/GenericWorker"), O = e("../utf8"), B = e("../crc32"), R = e("../signature"); + function s(e2, t2, r2, n2) { + i.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t2, this.zipPlatform = r2, this.encodeFileName = n2, this.streamFiles = e2, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; + } + I.inherits(s, i), s.prototype.push = function(e2) { + var t2 = e2.meta.percent || 0, r2 = this.entriesCount, n2 = this._sources.length; + this.accumulate ? this.contentBuffer.push(e2) : (this.bytesWritten += e2.data.length, i.prototype.push.call(this, { data: e2.data, meta: { currentFile: this.currentFile, percent: r2 ? (t2 + 100 * (r2 - n2 - 1)) / r2 : 100 } })); + }, s.prototype.openedSource = function(e2) { + this.currentSourceOffset = this.bytesWritten, this.currentFile = e2.file.name; + var t2 = this.streamFiles && !e2.file.dir; + if (t2) { + var r2 = n(e2, t2, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + this.push({ data: r2.fileRecord, meta: { percent: 0 } }); + } else + this.accumulate = true; + }, s.prototype.closedSource = function(e2) { + this.accumulate = false; + var t2 = this.streamFiles && !e2.file.dir, r2 = n(e2, t2, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + if (this.dirRecords.push(r2.dirRecord), t2) + this.push({ data: function(e3) { + return R.DATA_DESCRIPTOR + A(e3.crc32, 4) + A(e3.compressedSize, 4) + A(e3.uncompressedSize, 4); + }(e2), meta: { percent: 100 } }); + else + for (this.push({ data: r2.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) + this.push(this.contentBuffer.shift()); + this.currentFile = null; + }, s.prototype.flush = function() { + for (var e2 = this.bytesWritten, t2 = 0; t2 < this.dirRecords.length; t2++) + this.push({ data: this.dirRecords[t2], meta: { percent: 100 } }); + var r2 = this.bytesWritten - e2, n2 = function(e3, t3, r3, n3, i2) { + var s2 = I.transformTo("string", i2(n3)); + return R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A(e3, 2) + A(e3, 2) + A(t3, 4) + A(r3, 4) + A(s2.length, 2) + s2; + }(this.dirRecords.length, r2, e2, this.zipComment, this.encodeFileName); + this.push({ data: n2, meta: { percent: 100 } }); + }, s.prototype.prepareNextSource = function() { + this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); + }, s.prototype.registerPrevious = function(e2) { + this._sources.push(e2); + var t2 = this; + return e2.on("data", function(e3) { + t2.processChunk(e3); + }), e2.on("end", function() { + t2.closedSource(t2.previous.streamInfo), t2._sources.length ? t2.prepareNextSource() : t2.end(); + }), e2.on("error", function(e3) { + t2.error(e3); + }), this; + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true)); + }, s.prototype.error = function(e2) { + var t2 = this._sources; + if (!i.prototype.error.call(this, e2)) + return false; + for (var r2 = 0; r2 < t2.length; r2++) + try { + t2[r2].error(e2); + } catch (e3) { + } + return true; + }, s.prototype.lock = function() { + i.prototype.lock.call(this); + for (var e2 = this._sources, t2 = 0; t2 < e2.length; t2++) + e2[t2].lock(); + }, t.exports = s; + }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e, t, r) { + "use strict"; + var u = e("../compressions"), n = e("./ZipFileWorker"); + r.generateWorker = function(e2, a, t2) { + var o = new n(a.streamFiles, t2, a.platform, a.encodeFileName), h = 0; + try { + e2.forEach(function(e3, t3) { + h++; + var r2 = function(e4, t4) { + var r3 = e4 || t4, n3 = u[r3]; + if (!n3) + throw new Error(r3 + " is not a valid compression method !"); + return n3; + }(t3.options.compression, a.compression), n2 = t3.options.compressionOptions || a.compressionOptions || {}, i = t3.dir, s = t3.date; + t3._compressWorker(r2, n2).withStreamInfo("file", { name: e3, dir: i, date: s, comment: t3.comment || "", unixPermissions: t3.unixPermissions, dosPermissions: t3.dosPermissions }).pipe(o); + }), o.entriesCount = h; + } catch (e3) { + o.error(e3); + } + return o; + }; + }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e, t, r) { + "use strict"; + function n() { + if (!(this instanceof n)) + return new n(); + if (arguments.length) + throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); + this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { + var e2 = new n(); + for (var t2 in this) + "function" != typeof this[t2] && (e2[t2] = this[t2]); + return e2; + }; + } + (n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.10.1", n.loadAsync = function(e2, t2) { + return new n().loadAsync(e2, t2); + }, n.external = e("./external"), t.exports = n; + }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e, t, r) { + "use strict"; + var u = e("./utils"), i = e("./external"), n = e("./utf8"), s = e("./zipEntries"), a = e("./stream/Crc32Probe"), l = e("./nodejsUtils"); + function f(n2) { + return new i.Promise(function(e2, t2) { + var r2 = n2.decompressed.getContentWorker().pipe(new a()); + r2.on("error", function(e3) { + t2(e3); + }).on("end", function() { + r2.streamInfo.crc32 !== n2.decompressed.crc32 ? t2(new Error("Corrupted zip : CRC32 mismatch")) : e2(); + }).resume(); + }); + } + t.exports = function(e2, o) { + var h = this; + return o = u.extend(o || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n.utf8decode }), l.isNode && l.isStream(e2) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u.prepareContent("the loaded zip file", e2, true, o.optimizedBinaryString, o.base64).then(function(e3) { + var t2 = new s(o); + return t2.load(e3), t2; + }).then(function(e3) { + var t2 = [i.Promise.resolve(e3)], r2 = e3.files; + if (o.checkCRC32) + for (var n2 = 0; n2 < r2.length; n2++) + t2.push(f(r2[n2])); + return i.Promise.all(t2); + }).then(function(e3) { + for (var t2 = e3.shift(), r2 = t2.files, n2 = 0; n2 < r2.length; n2++) { + var i2 = r2[n2], s2 = i2.fileNameStr, a2 = u.resolve(i2.fileNameStr); + h.file(a2, i2.decompressed, { binary: true, optimizedBinaryString: true, date: i2.date, dir: i2.dir, comment: i2.fileCommentStr.length ? i2.fileCommentStr : null, unixPermissions: i2.unixPermissions, dosPermissions: i2.dosPermissions, createFolders: o.createFolders }), i2.dir || (h.file(a2).unsafeOriginalName = s2); + } + return t2.zipComment.length && (h.comment = t2.zipComment), h; + }); + }; + }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("../stream/GenericWorker"); + function s(e2, t2) { + i.call(this, "Nodejs stream input adapter for " + e2), this._upstreamEnded = false, this._bindStream(t2); + } + n.inherits(s, i), s.prototype._bindStream = function(e2) { + var t2 = this; + (this._stream = e2).pause(), e2.on("data", function(e3) { + t2.push({ data: e3, meta: { percent: 0 } }); + }).on("error", function(e3) { + t2.isPaused ? this.generatedError = e3 : t2.error(e3); + }).on("end", function() { + t2.isPaused ? t2._upstreamEnded = true : t2.end(); + }); + }, s.prototype.pause = function() { + return !!i.prototype.pause.call(this) && (this._stream.pause(), true); + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); + }, t.exports = s; + }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e, t, r) { + "use strict"; + var i = e("readable-stream").Readable; + function n(e2, t2, r2) { + i.call(this, t2), this._helper = e2; + var n2 = this; + e2.on("data", function(e3, t3) { + n2.push(e3) || n2._helper.pause(), r2 && r2(t3); + }).on("error", function(e3) { + n2.emit("error", e3); + }).on("end", function() { + n2.push(null); + }); + } + e("../utils").inherits(n, i), n.prototype._read = function() { + this._helper.resume(); + }, t.exports = n; + }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e, t, r) { + "use strict"; + t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e2, t2) { + if (Buffer.from && Buffer.from !== Uint8Array.from) + return Buffer.from(e2, t2); + if ("number" == typeof e2) + throw new Error('The "data" argument must not be a number'); + return new Buffer(e2, t2); + }, allocBuffer: function(e2) { + if (Buffer.alloc) + return Buffer.alloc(e2); + var t2 = new Buffer(e2); + return t2.fill(0), t2; + }, isBuffer: function(e2) { + return Buffer.isBuffer(e2); + }, isStream: function(e2) { + return e2 && "function" == typeof e2.on && "function" == typeof e2.pause && "function" == typeof e2.resume; + } }; + }, {}], 15: [function(e, t, r) { + "use strict"; + function s(e2, t2, r2) { + var n2, i2 = u.getTypeOf(t2), s2 = u.extend(r2 || {}, f); + s2.date = s2.date || /* @__PURE__ */ new Date(), null !== s2.compression && (s2.compression = s2.compression.toUpperCase()), "string" == typeof s2.unixPermissions && (s2.unixPermissions = parseInt(s2.unixPermissions, 8)), s2.unixPermissions && 16384 & s2.unixPermissions && (s2.dir = true), s2.dosPermissions && 16 & s2.dosPermissions && (s2.dir = true), s2.dir && (e2 = g(e2)), s2.createFolders && (n2 = _(e2)) && b.call(this, n2, true); + var a2 = "string" === i2 && false === s2.binary && false === s2.base64; + r2 && void 0 !== r2.binary || (s2.binary = !a2), (t2 instanceof c && 0 === t2.uncompressedSize || s2.dir || !t2 || 0 === t2.length) && (s2.base64 = false, s2.binary = true, t2 = "", s2.compression = "STORE", i2 = "string"); + var o2 = null; + o2 = t2 instanceof c || t2 instanceof l ? t2 : p.isNode && p.isStream(t2) ? new m(e2, t2) : u.prepareContent(e2, t2, s2.binary, s2.optimizedBinaryString, s2.base64); + var h2 = new d(e2, o2, s2); + this.files[e2] = h2; + } + var i = e("./utf8"), u = e("./utils"), l = e("./stream/GenericWorker"), a = e("./stream/StreamHelper"), f = e("./defaults"), c = e("./compressedObject"), d = e("./zipObject"), o = e("./generate"), p = e("./nodejsUtils"), m = e("./nodejs/NodejsStreamInputAdapter"), _ = function(e2) { + "/" === e2.slice(-1) && (e2 = e2.substring(0, e2.length - 1)); + var t2 = e2.lastIndexOf("/"); + return 0 < t2 ? e2.substring(0, t2) : ""; + }, g = function(e2) { + return "/" !== e2.slice(-1) && (e2 += "/"), e2; + }, b = function(e2, t2) { + return t2 = void 0 !== t2 ? t2 : f.createFolders, e2 = g(e2), this.files[e2] || s.call(this, e2, null, { dir: true, createFolders: t2 }), this.files[e2]; + }; + function h(e2) { + return "[object RegExp]" === Object.prototype.toString.call(e2); + } + var n = { load: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, forEach: function(e2) { + var t2, r2, n2; + for (t2 in this.files) + n2 = this.files[t2], (r2 = t2.slice(this.root.length, t2.length)) && t2.slice(0, this.root.length) === this.root && e2(r2, n2); + }, filter: function(r2) { + var n2 = []; + return this.forEach(function(e2, t2) { + r2(e2, t2) && n2.push(t2); + }), n2; + }, file: function(e2, t2, r2) { + if (1 !== arguments.length) + return e2 = this.root + e2, s.call(this, e2, t2, r2), this; + if (h(e2)) { + var n2 = e2; + return this.filter(function(e3, t3) { + return !t3.dir && n2.test(e3); + }); + } + var i2 = this.files[this.root + e2]; + return i2 && !i2.dir ? i2 : null; + }, folder: function(r2) { + if (!r2) + return this; + if (h(r2)) + return this.filter(function(e3, t3) { + return t3.dir && r2.test(e3); + }); + var e2 = this.root + r2, t2 = b.call(this, e2), n2 = this.clone(); + return n2.root = t2.name, n2; + }, remove: function(r2) { + r2 = this.root + r2; + var e2 = this.files[r2]; + if (e2 || ("/" !== r2.slice(-1) && (r2 += "/"), e2 = this.files[r2]), e2 && !e2.dir) + delete this.files[r2]; + else + for (var t2 = this.filter(function(e3, t3) { + return t3.name.slice(0, r2.length) === r2; + }), n2 = 0; n2 < t2.length; n2++) + delete this.files[t2[n2].name]; + return this; + }, generate: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, generateInternalStream: function(e2) { + var t2, r2 = {}; + try { + if ((r2 = u.extend(e2 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r2.type.toLowerCase(), r2.compression = r2.compression.toUpperCase(), "binarystring" === r2.type && (r2.type = "string"), !r2.type) + throw new Error("No output type specified."); + u.checkSupport(r2.type), "darwin" !== r2.platform && "freebsd" !== r2.platform && "linux" !== r2.platform && "sunos" !== r2.platform || (r2.platform = "UNIX"), "win32" === r2.platform && (r2.platform = "DOS"); + var n2 = r2.comment || this.comment || ""; + t2 = o.generateWorker(this, r2, n2); + } catch (e3) { + (t2 = new l("error")).error(e3); + } + return new a(t2, r2.type || "string", r2.mimeType); + }, generateAsync: function(e2, t2) { + return this.generateInternalStream(e2).accumulate(t2); + }, generateNodeStream: function(e2, t2) { + return (e2 = e2 || {}).type || (e2.type = "nodebuffer"), this.generateInternalStream(e2).toNodejsStream(t2); + } }; + t.exports = n; + }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e, t, r) { + "use strict"; + t.exports = e("stream"); + }, { stream: void 0 }], 17: [function(e, t, r) { + "use strict"; + var n = e("./DataReader"); + function i(e2) { + n.call(this, e2); + for (var t2 = 0; t2 < this.data.length; t2++) + e2[t2] = 255 & e2[t2]; + } + e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { + return this.data[this.zero + e2]; + }, i.prototype.lastIndexOfSignature = function(e2) { + for (var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.length - 4; 0 <= s; --s) + if (this.data[s] === t2 && this.data[s + 1] === r2 && this.data[s + 2] === n2 && this.data[s + 3] === i2) + return s - this.zero; + return -1; + }, i.prototype.readAndCheckSignature = function(e2) { + var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.readData(4); + return t2 === s[0] && r2 === s[1] && n2 === s[2] && i2 === s[3]; + }, i.prototype.readData = function(e2) { + if (this.checkOffset(e2), 0 === e2) + return []; + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e, t, r) { + "use strict"; + var n = e("../utils"); + function i(e2) { + this.data = e2, this.length = e2.length, this.index = 0, this.zero = 0; + } + i.prototype = { checkOffset: function(e2) { + this.checkIndex(this.index + e2); + }, checkIndex: function(e2) { + if (this.length < this.zero + e2 || e2 < 0) + throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e2 + "). Corrupted zip ?"); + }, setIndex: function(e2) { + this.checkIndex(e2), this.index = e2; + }, skip: function(e2) { + this.setIndex(this.index + e2); + }, byteAt: function() { + }, readInt: function(e2) { + var t2, r2 = 0; + for (this.checkOffset(e2), t2 = this.index + e2 - 1; t2 >= this.index; t2--) + r2 = (r2 << 8) + this.byteAt(t2); + return this.index += e2, r2; + }, readString: function(e2) { + return n.transformTo("string", this.readData(e2)); + }, readData: function() { + }, lastIndexOfSignature: function() { + }, readAndCheckSignature: function() { + }, readDate: function() { + var e2 = this.readInt(4); + return new Date(Date.UTC(1980 + (e2 >> 25 & 127), (e2 >> 21 & 15) - 1, e2 >> 16 & 31, e2 >> 11 & 31, e2 >> 5 & 63, (31 & e2) << 1)); + } }, t.exports = i; + }, { "../utils": 32 }], 19: [function(e, t, r) { + "use strict"; + var n = e("./Uint8ArrayReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.readData = function(e2) { + this.checkOffset(e2); + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e, t, r) { + "use strict"; + var n = e("./DataReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { + return this.data.charCodeAt(this.zero + e2); + }, i.prototype.lastIndexOfSignature = function(e2) { + return this.data.lastIndexOf(e2) - this.zero; + }, i.prototype.readAndCheckSignature = function(e2) { + return e2 === this.readData(4); + }, i.prototype.readData = function(e2) { + this.checkOffset(e2); + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e, t, r) { + "use strict"; + var n = e("./ArrayReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.readData = function(e2) { + if (this.checkOffset(e2), 0 === e2) + return new Uint8Array(0); + var t2 = this.data.subarray(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("../support"), s = e("./ArrayReader"), a = e("./StringReader"), o = e("./NodeBufferReader"), h = e("./Uint8ArrayReader"); + t.exports = function(e2) { + var t2 = n.getTypeOf(e2); + return n.checkSupport(t2), "string" !== t2 || i.uint8array ? "nodebuffer" === t2 ? new o(e2) : i.uint8array ? new h(n.transformTo("uint8array", e2)) : new s(n.transformTo("array", e2)) : new a(e2); + }; + }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e, t, r) { + "use strict"; + r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\x07\b"; + }, {}], 24: [function(e, t, r) { + "use strict"; + var n = e("./GenericWorker"), i = e("../utils"); + function s(e2) { + n.call(this, "ConvertWorker to " + e2), this.destType = e2; + } + i.inherits(s, n), s.prototype.processChunk = function(e2) { + this.push({ data: i.transformTo(this.destType, e2.data), meta: e2.meta }); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e, t, r) { + "use strict"; + var n = e("./GenericWorker"), i = e("../crc32"); + function s() { + n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); + } + e("../utils").inherits(s, n), s.prototype.processChunk = function(e2) { + this.streamInfo.crc32 = i(e2.data, this.streamInfo.crc32 || 0), this.push(e2); + }, t.exports = s; + }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("./GenericWorker"); + function s(e2) { + i.call(this, "DataLengthProbe for " + e2), this.propName = e2, this.withStreamInfo(e2, 0); + } + n.inherits(s, i), s.prototype.processChunk = function(e2) { + if (e2) { + var t2 = this.streamInfo[this.propName] || 0; + this.streamInfo[this.propName] = t2 + e2.data.length; + } + i.prototype.processChunk.call(this, e2); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("./GenericWorker"); + function s(e2) { + i.call(this, "DataWorker"); + var t2 = this; + this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e2.then(function(e3) { + t2.dataIsReady = true, t2.data = e3, t2.max = e3 && e3.length || 0, t2.type = n.getTypeOf(e3), t2.isPaused || t2._tickAndRepeat(); + }, function(e3) { + t2.error(e3); + }); + } + n.inherits(s, i), s.prototype.cleanUp = function() { + i.prototype.cleanUp.call(this), this.data = null; + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n.delay(this._tickAndRepeat, [], this)), true); + }, s.prototype._tickAndRepeat = function() { + this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); + }, s.prototype._tick = function() { + if (this.isPaused || this.isFinished) + return false; + var e2 = null, t2 = Math.min(this.max, this.index + 16384); + if (this.index >= this.max) + return this.end(); + switch (this.type) { + case "string": + e2 = this.data.substring(this.index, t2); + break; + case "uint8array": + e2 = this.data.subarray(this.index, t2); + break; + case "array": + case "nodebuffer": + e2 = this.data.slice(this.index, t2); + } + return this.index = t2, this.push({ data: e2, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e, t, r) { + "use strict"; + function n(e2) { + this.name = e2 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; + } + n.prototype = { push: function(e2) { + this.emit("data", e2); + }, end: function() { + if (this.isFinished) + return false; + this.flush(); + try { + this.emit("end"), this.cleanUp(), this.isFinished = true; + } catch (e2) { + this.emit("error", e2); + } + return true; + }, error: function(e2) { + return !this.isFinished && (this.isPaused ? this.generatedError = e2 : (this.isFinished = true, this.emit("error", e2), this.previous && this.previous.error(e2), this.cleanUp()), true); + }, on: function(e2, t2) { + return this._listeners[e2].push(t2), this; + }, cleanUp: function() { + this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; + }, emit: function(e2, t2) { + if (this._listeners[e2]) + for (var r2 = 0; r2 < this._listeners[e2].length; r2++) + this._listeners[e2][r2].call(this, t2); + }, pipe: function(e2) { + return e2.registerPrevious(this); + }, registerPrevious: function(e2) { + if (this.isLocked) + throw new Error("The stream '" + this + "' has already been used."); + this.streamInfo = e2.streamInfo, this.mergeStreamInfo(), this.previous = e2; + var t2 = this; + return e2.on("data", function(e3) { + t2.processChunk(e3); + }), e2.on("end", function() { + t2.end(); + }), e2.on("error", function(e3) { + t2.error(e3); + }), this; + }, pause: function() { + return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); + }, resume: function() { + if (!this.isPaused || this.isFinished) + return false; + var e2 = this.isPaused = false; + return this.generatedError && (this.error(this.generatedError), e2 = true), this.previous && this.previous.resume(), !e2; + }, flush: function() { + }, processChunk: function(e2) { + this.push(e2); + }, withStreamInfo: function(e2, t2) { + return this.extraStreamInfo[e2] = t2, this.mergeStreamInfo(), this; + }, mergeStreamInfo: function() { + for (var e2 in this.extraStreamInfo) + Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e2) && (this.streamInfo[e2] = this.extraStreamInfo[e2]); + }, lock: function() { + if (this.isLocked) + throw new Error("The stream '" + this + "' has already been used."); + this.isLocked = true, this.previous && this.previous.lock(); + }, toString: function() { + var e2 = "Worker " + this.name; + return this.previous ? this.previous + " -> " + e2 : e2; + } }, t.exports = n; + }, {}], 29: [function(e, t, r) { + "use strict"; + var h = e("../utils"), i = e("./ConvertWorker"), s = e("./GenericWorker"), u = e("../base64"), n = e("../support"), a = e("../external"), o = null; + if (n.nodestream) + try { + o = e("../nodejs/NodejsStreamOutputAdapter"); + } catch (e2) { + } + function l(e2, o2) { + return new a.Promise(function(t2, r2) { + var n2 = [], i2 = e2._internalType, s2 = e2._outputType, a2 = e2._mimeType; + e2.on("data", function(e3, t3) { + n2.push(e3), o2 && o2(t3); + }).on("error", function(e3) { + n2 = [], r2(e3); + }).on("end", function() { + try { + var e3 = function(e4, t3, r3) { + switch (e4) { + case "blob": + return h.newBlob(h.transformTo("arraybuffer", t3), r3); + case "base64": + return u.encode(t3); + default: + return h.transformTo(e4, t3); + } + }(s2, function(e4, t3) { + var r3, n3 = 0, i3 = null, s3 = 0; + for (r3 = 0; r3 < t3.length; r3++) + s3 += t3[r3].length; + switch (e4) { + case "string": + return t3.join(""); + case "array": + return Array.prototype.concat.apply([], t3); + case "uint8array": + for (i3 = new Uint8Array(s3), r3 = 0; r3 < t3.length; r3++) + i3.set(t3[r3], n3), n3 += t3[r3].length; + return i3; + case "nodebuffer": + return Buffer.concat(t3); + default: + throw new Error("concat : unsupported type '" + e4 + "'"); + } + }(i2, n2), a2); + t2(e3); + } catch (e4) { + r2(e4); + } + n2 = []; + }).resume(); + }); + } + function f(e2, t2, r2) { + var n2 = t2; + switch (t2) { + case "blob": + case "arraybuffer": + n2 = "uint8array"; + break; + case "base64": + n2 = "string"; + } + try { + this._internalType = n2, this._outputType = t2, this._mimeType = r2, h.checkSupport(n2), this._worker = e2.pipe(new i(n2)), e2.lock(); + } catch (e3) { + this._worker = new s("error"), this._worker.error(e3); + } + } + f.prototype = { accumulate: function(e2) { + return l(this, e2); + }, on: function(e2, t2) { + var r2 = this; + return "data" === e2 ? this._worker.on(e2, function(e3) { + t2.call(r2, e3.data, e3.meta); + }) : this._worker.on(e2, function() { + h.delay(t2, arguments, r2); + }), this; + }, resume: function() { + return h.delay(this._worker.resume, [], this._worker), this; + }, pause: function() { + return this._worker.pause(), this; + }, toNodejsStream: function(e2) { + if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) + throw new Error(this._outputType + " is not supported by this method"); + return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e2); + } }, t.exports = f; + }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e, t, r) { + "use strict"; + if (r.base64 = true, r.array = true, r.string = true, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) + r.blob = false; + else { + var n = new ArrayBuffer(0); + try { + r.blob = 0 === new Blob([n], { type: "application/zip" }).size; + } catch (e2) { + try { + var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); + i.append(n), r.blob = 0 === i.getBlob("application/zip").size; + } catch (e3) { + r.blob = false; + } + } + } + try { + r.nodestream = !!e("readable-stream").Readable; + } catch (e2) { + r.nodestream = false; + } + }, { "readable-stream": 16 }], 31: [function(e, t, s) { + "use strict"; + for (var o = e("./utils"), h = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), u = new Array(256), i = 0; i < 256; i++) + u[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1; + u[254] = u[254] = 1; + function a() { + n.call(this, "utf-8 decode"), this.leftOver = null; + } + function l() { + n.call(this, "utf-8 encode"); + } + s.utf8encode = function(e2) { + return h.nodebuffer ? r.newBufferFrom(e2, "utf-8") : function(e3) { + var t2, r2, n2, i2, s2, a2 = e3.length, o2 = 0; + for (i2 = 0; i2 < a2; i2++) + 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o2 += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; + for (t2 = h.uint8array ? new Uint8Array(o2) : new Array(o2), i2 = s2 = 0; s2 < o2; i2++) + 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); + return t2; + }(e2); + }, s.utf8decode = function(e2) { + return h.nodebuffer ? o.transformTo("nodebuffer", e2).toString("utf-8") : function(e3) { + var t2, r2, n2, i2, s2 = e3.length, a2 = new Array(2 * s2); + for (t2 = r2 = 0; t2 < s2; ) + if ((n2 = e3[t2++]) < 128) + a2[r2++] = n2; + else if (4 < (i2 = u[n2])) + a2[r2++] = 65533, t2 += i2 - 1; + else { + for (n2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && t2 < s2; ) + n2 = n2 << 6 | 63 & e3[t2++], i2--; + 1 < i2 ? a2[r2++] = 65533 : n2 < 65536 ? a2[r2++] = n2 : (n2 -= 65536, a2[r2++] = 55296 | n2 >> 10 & 1023, a2[r2++] = 56320 | 1023 & n2); + } + return a2.length !== r2 && (a2.subarray ? a2 = a2.subarray(0, r2) : a2.length = r2), o.applyFromCharCode(a2); + }(e2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2)); + }, o.inherits(a, n), a.prototype.processChunk = function(e2) { + var t2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2.data); + if (this.leftOver && this.leftOver.length) { + if (h.uint8array) { + var r2 = t2; + (t2 = new Uint8Array(r2.length + this.leftOver.length)).set(this.leftOver, 0), t2.set(r2, this.leftOver.length); + } else + t2 = this.leftOver.concat(t2); + this.leftOver = null; + } + var n2 = function(e3, t3) { + var r3; + for ((t3 = t3 || e3.length) > e3.length && (t3 = e3.length), r3 = t3 - 1; 0 <= r3 && 128 == (192 & e3[r3]); ) + r3--; + return r3 < 0 ? t3 : 0 === r3 ? t3 : r3 + u[e3[r3]] > t3 ? r3 : t3; + }(t2), i2 = t2; + n2 !== t2.length && (h.uint8array ? (i2 = t2.subarray(0, n2), this.leftOver = t2.subarray(n2, t2.length)) : (i2 = t2.slice(0, n2), this.leftOver = t2.slice(n2, t2.length))), this.push({ data: s.utf8decode(i2), meta: e2.meta }); + }, a.prototype.flush = function() { + this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); + }, s.Utf8DecodeWorker = a, o.inherits(l, n), l.prototype.processChunk = function(e2) { + this.push({ data: s.utf8encode(e2.data), meta: e2.meta }); + }, s.Utf8EncodeWorker = l; + }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e, t, a) { + "use strict"; + var o = e("./support"), h = e("./base64"), r = e("./nodejsUtils"), u = e("./external"); + function n(e2) { + return e2; + } + function l(e2, t2) { + for (var r2 = 0; r2 < e2.length; ++r2) + t2[r2] = 255 & e2.charCodeAt(r2); + return t2; + } + e("setimmediate"), a.newBlob = function(t2, r2) { + a.checkSupport("blob"); + try { + return new Blob([t2], { type: r2 }); + } catch (e2) { + try { + var n2 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); + return n2.append(t2), n2.getBlob(r2); + } catch (e3) { + throw new Error("Bug : can't construct the Blob."); + } + } + }; + var i = { stringifyByChunk: function(e2, t2, r2) { + var n2 = [], i2 = 0, s2 = e2.length; + if (s2 <= r2) + return String.fromCharCode.apply(null, e2); + for (; i2 < s2; ) + "array" === t2 || "nodebuffer" === t2 ? n2.push(String.fromCharCode.apply(null, e2.slice(i2, Math.min(i2 + r2, s2)))) : n2.push(String.fromCharCode.apply(null, e2.subarray(i2, Math.min(i2 + r2, s2)))), i2 += r2; + return n2.join(""); + }, stringifyByChar: function(e2) { + for (var t2 = "", r2 = 0; r2 < e2.length; r2++) + t2 += String.fromCharCode(e2[r2]); + return t2; + }, applyCanBeUsed: { uint8array: function() { + try { + return o.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; + } catch (e2) { + return false; + } + }(), nodebuffer: function() { + try { + return o.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length; + } catch (e2) { + return false; + } + }() } }; + function s(e2) { + var t2 = 65536, r2 = a.getTypeOf(e2), n2 = true; + if ("uint8array" === r2 ? n2 = i.applyCanBeUsed.uint8array : "nodebuffer" === r2 && (n2 = i.applyCanBeUsed.nodebuffer), n2) + for (; 1 < t2; ) + try { + return i.stringifyByChunk(e2, r2, t2); + } catch (e3) { + t2 = Math.floor(t2 / 2); + } + return i.stringifyByChar(e2); + } + function f(e2, t2) { + for (var r2 = 0; r2 < e2.length; r2++) + t2[r2] = e2[r2]; + return t2; + } + a.applyFromCharCode = s; + var c = {}; + c.string = { string: n, array: function(e2) { + return l(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return c.string.uint8array(e2).buffer; + }, uint8array: function(e2) { + return l(e2, new Uint8Array(e2.length)); + }, nodebuffer: function(e2) { + return l(e2, r.allocBuffer(e2.length)); + } }, c.array = { string: s, array: n, arraybuffer: function(e2) { + return new Uint8Array(e2).buffer; + }, uint8array: function(e2) { + return new Uint8Array(e2); + }, nodebuffer: function(e2) { + return r.newBufferFrom(e2); + } }, c.arraybuffer = { string: function(e2) { + return s(new Uint8Array(e2)); + }, array: function(e2) { + return f(new Uint8Array(e2), new Array(e2.byteLength)); + }, arraybuffer: n, uint8array: function(e2) { + return new Uint8Array(e2); + }, nodebuffer: function(e2) { + return r.newBufferFrom(new Uint8Array(e2)); + } }, c.uint8array = { string: s, array: function(e2) { + return f(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return e2.buffer; + }, uint8array: n, nodebuffer: function(e2) { + return r.newBufferFrom(e2); + } }, c.nodebuffer = { string: s, array: function(e2) { + return f(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return c.nodebuffer.uint8array(e2).buffer; + }, uint8array: function(e2) { + return f(e2, new Uint8Array(e2.length)); + }, nodebuffer: n }, a.transformTo = function(e2, t2) { + if (t2 = t2 || "", !e2) + return t2; + a.checkSupport(e2); + var r2 = a.getTypeOf(t2); + return c[r2][e2](t2); + }, a.resolve = function(e2) { + for (var t2 = e2.split("/"), r2 = [], n2 = 0; n2 < t2.length; n2++) { + var i2 = t2[n2]; + "." === i2 || "" === i2 && 0 !== n2 && n2 !== t2.length - 1 || (".." === i2 ? r2.pop() : r2.push(i2)); + } + return r2.join("/"); + }, a.getTypeOf = function(e2) { + return "string" == typeof e2 ? "string" : "[object Array]" === Object.prototype.toString.call(e2) ? "array" : o.nodebuffer && r.isBuffer(e2) ? "nodebuffer" : o.uint8array && e2 instanceof Uint8Array ? "uint8array" : o.arraybuffer && e2 instanceof ArrayBuffer ? "arraybuffer" : void 0; + }, a.checkSupport = function(e2) { + if (!o[e2.toLowerCase()]) + throw new Error(e2 + " is not supported by this platform"); + }, a.MAX_VALUE_16BITS = 65535, a.MAX_VALUE_32BITS = -1, a.pretty = function(e2) { + var t2, r2, n2 = ""; + for (r2 = 0; r2 < (e2 || "").length; r2++) + n2 += "\\x" + ((t2 = e2.charCodeAt(r2)) < 16 ? "0" : "") + t2.toString(16).toUpperCase(); + return n2; + }, a.delay = function(e2, t2, r2) { + setImmediate(function() { + e2.apply(r2 || null, t2 || []); + }); + }, a.inherits = function(e2, t2) { + function r2() { + } + r2.prototype = t2.prototype, e2.prototype = new r2(); + }, a.extend = function() { + var e2, t2, r2 = {}; + for (e2 = 0; e2 < arguments.length; e2++) + for (t2 in arguments[e2]) + Object.prototype.hasOwnProperty.call(arguments[e2], t2) && void 0 === r2[t2] && (r2[t2] = arguments[e2][t2]); + return r2; + }, a.prepareContent = function(r2, e2, n2, i2, s2) { + return u.Promise.resolve(e2).then(function(n3) { + return o.blob && (n3 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n3))) && "undefined" != typeof FileReader ? new u.Promise(function(t2, r3) { + var e3 = new FileReader(); + e3.onload = function(e4) { + t2(e4.target.result); + }, e3.onerror = function(e4) { + r3(e4.target.error); + }, e3.readAsArrayBuffer(n3); + }) : n3; + }).then(function(e3) { + var t2 = a.getTypeOf(e3); + return t2 ? ("arraybuffer" === t2 ? e3 = a.transformTo("uint8array", e3) : "string" === t2 && (s2 ? e3 = h.decode(e3) : n2 && true !== i2 && (e3 = function(e4) { + return l(e4, o.uint8array ? new Uint8Array(e4.length) : new Array(e4.length)); + }(e3))), e3) : u.Promise.reject(new Error("Can't read the data of '" + r2 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); + }); + }; + }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e, t, r) { + "use strict"; + var n = e("./reader/readerFor"), i = e("./utils"), s = e("./signature"), a = e("./zipEntry"), o = e("./support"); + function h(e2) { + this.files = [], this.loadOptions = e2; + } + h.prototype = { checkSignature: function(e2) { + if (!this.reader.readAndCheckSignature(e2)) { + this.reader.index -= 4; + var t2 = this.reader.readString(4); + throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t2) + ", expected " + i.pretty(e2) + ")"); + } + }, isSignature: function(e2, t2) { + var r2 = this.reader.index; + this.reader.setIndex(e2); + var n2 = this.reader.readString(4) === t2; + return this.reader.setIndex(r2), n2; + }, readBlockEndOfCentral: function() { + this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); + var e2 = this.reader.readData(this.zipCommentLength), t2 = o.uint8array ? "uint8array" : "array", r2 = i.transformTo(t2, e2); + this.zipComment = this.loadOptions.decodeFileName(r2); + }, readBlockZip64EndOfCentral: function() { + this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; + for (var e2, t2, r2, n2 = this.zip64EndOfCentralSize - 44; 0 < n2; ) + e2 = this.reader.readInt(2), t2 = this.reader.readInt(4), r2 = this.reader.readData(t2), this.zip64ExtensibleData[e2] = { id: e2, length: t2, value: r2 }; + }, readBlockZip64EndOfCentralLocator: function() { + if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) + throw new Error("Multi-volumes zip are not supported"); + }, readLocalFiles: function() { + var e2, t2; + for (e2 = 0; e2 < this.files.length; e2++) + t2 = this.files[e2], this.reader.setIndex(t2.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t2.readLocalPart(this.reader), t2.handleUTF8(), t2.processAttributes(); + }, readCentralDir: function() { + var e2; + for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER); ) + (e2 = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e2); + if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) + throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); + }, readEndOfCentral: function() { + var e2 = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END); + if (e2 < 0) + throw !this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); + this.reader.setIndex(e2); + var t2 = e2; + if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) { + if (this.zip64 = true, (e2 = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); + if (this.reader.setIndex(e2), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); + this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); + } + var r2 = this.centralDirOffset + this.centralDirSize; + this.zip64 && (r2 += 20, r2 += 12 + this.zip64EndOfCentralSize); + var n2 = t2 - r2; + if (0 < n2) + this.isSignature(t2, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n2); + else if (n2 < 0) + throw new Error("Corrupted zip: missing " + Math.abs(n2) + " bytes."); + }, prepareReader: function(e2) { + this.reader = n(e2); + }, load: function(e2) { + this.prepareReader(e2), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); + } }, t.exports = h; + }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e, t, r) { + "use strict"; + var n = e("./reader/readerFor"), s = e("./utils"), i = e("./compressedObject"), a = e("./crc32"), o = e("./utf8"), h = e("./compressions"), u = e("./support"); + function l(e2, t2) { + this.options = e2, this.loadOptions = t2; + } + l.prototype = { isEncrypted: function() { + return 1 == (1 & this.bitFlag); + }, useUTF8: function() { + return 2048 == (2048 & this.bitFlag); + }, readLocalPart: function(e2) { + var t2, r2; + if (e2.skip(22), this.fileNameLength = e2.readInt(2), r2 = e2.readInt(2), this.fileName = e2.readData(this.fileNameLength), e2.skip(r2), -1 === this.compressedSize || -1 === this.uncompressedSize) + throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); + if (null === (t2 = function(e3) { + for (var t3 in h) + if (Object.prototype.hasOwnProperty.call(h, t3) && h[t3].magic === e3) + return h[t3]; + return null; + }(this.compressionMethod))) + throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")"); + this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t2, e2.readData(this.compressedSize)); + }, readCentralPart: function(e2) { + this.versionMadeBy = e2.readInt(2), e2.skip(2), this.bitFlag = e2.readInt(2), this.compressionMethod = e2.readString(2), this.date = e2.readDate(), this.crc32 = e2.readInt(4), this.compressedSize = e2.readInt(4), this.uncompressedSize = e2.readInt(4); + var t2 = e2.readInt(2); + if (this.extraFieldsLength = e2.readInt(2), this.fileCommentLength = e2.readInt(2), this.diskNumberStart = e2.readInt(2), this.internalFileAttributes = e2.readInt(2), this.externalFileAttributes = e2.readInt(4), this.localHeaderOffset = e2.readInt(4), this.isEncrypted()) + throw new Error("Encrypted zip are not supported"); + e2.skip(t2), this.readExtraFields(e2), this.parseZIP64ExtraField(e2), this.fileComment = e2.readData(this.fileCommentLength); + }, processAttributes: function() { + this.unixPermissions = null, this.dosPermissions = null; + var e2 = this.versionMadeBy >> 8; + this.dir = !!(16 & this.externalFileAttributes), 0 == e2 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e2 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); + }, parseZIP64ExtraField: function() { + if (this.extraFields[1]) { + var e2 = n(this.extraFields[1].value); + this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = e2.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = e2.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = e2.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = e2.readInt(4)); + } + }, readExtraFields: function(e2) { + var t2, r2, n2, i2 = e2.index + this.extraFieldsLength; + for (this.extraFields || (this.extraFields = {}); e2.index + 4 < i2; ) + t2 = e2.readInt(2), r2 = e2.readInt(2), n2 = e2.readData(r2), this.extraFields[t2] = { id: t2, length: r2, value: n2 }; + e2.setIndex(i2); + }, handleUTF8: function() { + var e2 = u.uint8array ? "uint8array" : "array"; + if (this.useUTF8()) + this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment); + else { + var t2 = this.findExtraFieldUnicodePath(); + if (null !== t2) + this.fileNameStr = t2; + else { + var r2 = s.transformTo(e2, this.fileName); + this.fileNameStr = this.loadOptions.decodeFileName(r2); + } + var n2 = this.findExtraFieldUnicodeComment(); + if (null !== n2) + this.fileCommentStr = n2; + else { + var i2 = s.transformTo(e2, this.fileComment); + this.fileCommentStr = this.loadOptions.decodeFileName(i2); + } + } + }, findExtraFieldUnicodePath: function() { + var e2 = this.extraFields[28789]; + if (e2) { + var t2 = n(e2.value); + return 1 !== t2.readInt(1) ? null : a(this.fileName) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); + } + return null; + }, findExtraFieldUnicodeComment: function() { + var e2 = this.extraFields[25461]; + if (e2) { + var t2 = n(e2.value); + return 1 !== t2.readInt(1) ? null : a(this.fileComment) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); + } + return null; + } }, t.exports = l; + }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e, t, r) { + "use strict"; + function n(e2, t2, r2) { + this.name = e2, this.dir = r2.dir, this.date = r2.date, this.comment = r2.comment, this.unixPermissions = r2.unixPermissions, this.dosPermissions = r2.dosPermissions, this._data = t2, this._dataBinary = r2.binary, this.options = { compression: r2.compression, compressionOptions: r2.compressionOptions }; + } + var s = e("./stream/StreamHelper"), i = e("./stream/DataWorker"), a = e("./utf8"), o = e("./compressedObject"), h = e("./stream/GenericWorker"); + n.prototype = { internalStream: function(e2) { + var t2 = null, r2 = "string"; + try { + if (!e2) + throw new Error("No output type specified."); + var n2 = "string" === (r2 = e2.toLowerCase()) || "text" === r2; + "binarystring" !== r2 && "text" !== r2 || (r2 = "string"), t2 = this._decompressWorker(); + var i2 = !this._dataBinary; + i2 && !n2 && (t2 = t2.pipe(new a.Utf8EncodeWorker())), !i2 && n2 && (t2 = t2.pipe(new a.Utf8DecodeWorker())); + } catch (e3) { + (t2 = new h("error")).error(e3); + } + return new s(t2, r2, ""); + }, async: function(e2, t2) { + return this.internalStream(e2).accumulate(t2); + }, nodeStream: function(e2, t2) { + return this.internalStream(e2 || "nodebuffer").toNodejsStream(t2); + }, _compressWorker: function(e2, t2) { + if (this._data instanceof o && this._data.compression.magic === e2.magic) + return this._data.getCompressedWorker(); + var r2 = this._decompressWorker(); + return this._dataBinary || (r2 = r2.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r2, e2, t2); + }, _decompressWorker: function() { + return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof h ? this._data : new i(this._data); + } }; + for (var u = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, f = 0; f < u.length; f++) + n.prototype[u[f]] = l; + t.exports = n; + }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e, l, t) { + (function(t2) { + "use strict"; + var r, n, e2 = t2.MutationObserver || t2.WebKitMutationObserver; + if (e2) { + var i = 0, s = new e2(u), a = t2.document.createTextNode(""); + s.observe(a, { characterData: true }), r = function() { + a.data = i = ++i % 2; + }; + } else if (t2.setImmediate || void 0 === t2.MessageChannel) + r = "document" in t2 && "onreadystatechange" in t2.document.createElement("script") ? function() { + var e3 = t2.document.createElement("script"); + e3.onreadystatechange = function() { + u(), e3.onreadystatechange = null, e3.parentNode.removeChild(e3), e3 = null; + }, t2.document.documentElement.appendChild(e3); + } : function() { + setTimeout(u, 0); + }; + else { + var o = new t2.MessageChannel(); + o.port1.onmessage = u, r = function() { + o.port2.postMessage(0); + }; + } + var h = []; + function u() { + var e3, t3; + n = true; + for (var r2 = h.length; r2; ) { + for (t3 = h, h = [], e3 = -1; ++e3 < r2; ) + t3[e3](); + r2 = h.length; + } + n = false; + } + l.exports = function(e3) { + 1 !== h.push(e3) || n || r(); + }; + }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); + }, {}], 37: [function(e, t, r) { + "use strict"; + var i = e("immediate"); + function u() { + } + var l = {}, s = ["REJECTED"], a = ["FULFILLED"], n = ["PENDING"]; + function o(e2) { + if ("function" != typeof e2) + throw new TypeError("resolver must be a function"); + this.state = n, this.queue = [], this.outcome = void 0, e2 !== u && d(this, e2); + } + function h(e2, t2, r2) { + this.promise = e2, "function" == typeof t2 && (this.onFulfilled = t2, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r2 && (this.onRejected = r2, this.callRejected = this.otherCallRejected); + } + function f(t2, r2, n2) { + i(function() { + var e2; + try { + e2 = r2(n2); + } catch (e3) { + return l.reject(t2, e3); + } + e2 === t2 ? l.reject(t2, new TypeError("Cannot resolve promise with itself")) : l.resolve(t2, e2); + }); + } + function c(e2) { + var t2 = e2 && e2.then; + if (e2 && ("object" == typeof e2 || "function" == typeof e2) && "function" == typeof t2) + return function() { + t2.apply(e2, arguments); + }; + } + function d(t2, e2) { + var r2 = false; + function n2(e3) { + r2 || (r2 = true, l.reject(t2, e3)); + } + function i2(e3) { + r2 || (r2 = true, l.resolve(t2, e3)); + } + var s2 = p(function() { + e2(i2, n2); + }); + "error" === s2.status && n2(s2.value); + } + function p(e2, t2) { + var r2 = {}; + try { + r2.value = e2(t2), r2.status = "success"; + } catch (e3) { + r2.status = "error", r2.value = e3; + } + return r2; + } + (t.exports = o).prototype.finally = function(t2) { + if ("function" != typeof t2) + return this; + var r2 = this.constructor; + return this.then(function(e2) { + return r2.resolve(t2()).then(function() { + return e2; + }); + }, function(e2) { + return r2.resolve(t2()).then(function() { + throw e2; + }); + }); + }, o.prototype.catch = function(e2) { + return this.then(null, e2); + }, o.prototype.then = function(e2, t2) { + if ("function" != typeof e2 && this.state === a || "function" != typeof t2 && this.state === s) + return this; + var r2 = new this.constructor(u); + this.state !== n ? f(r2, this.state === a ? e2 : t2, this.outcome) : this.queue.push(new h(r2, e2, t2)); + return r2; + }, h.prototype.callFulfilled = function(e2) { + l.resolve(this.promise, e2); + }, h.prototype.otherCallFulfilled = function(e2) { + f(this.promise, this.onFulfilled, e2); + }, h.prototype.callRejected = function(e2) { + l.reject(this.promise, e2); + }, h.prototype.otherCallRejected = function(e2) { + f(this.promise, this.onRejected, e2); + }, l.resolve = function(e2, t2) { + var r2 = p(c, t2); + if ("error" === r2.status) + return l.reject(e2, r2.value); + var n2 = r2.value; + if (n2) + d(e2, n2); + else { + e2.state = a, e2.outcome = t2; + for (var i2 = -1, s2 = e2.queue.length; ++i2 < s2; ) + e2.queue[i2].callFulfilled(t2); + } + return e2; + }, l.reject = function(e2, t2) { + e2.state = s, e2.outcome = t2; + for (var r2 = -1, n2 = e2.queue.length; ++r2 < n2; ) + e2.queue[r2].callRejected(t2); + return e2; + }, o.resolve = function(e2) { + if (e2 instanceof this) + return e2; + return l.resolve(new this(u), e2); + }, o.reject = function(e2) { + var t2 = new this(u); + return l.reject(t2, e2); + }, o.all = function(e2) { + var r2 = this; + if ("[object Array]" !== Object.prototype.toString.call(e2)) + return this.reject(new TypeError("must be an array")); + var n2 = e2.length, i2 = false; + if (!n2) + return this.resolve([]); + var s2 = new Array(n2), a2 = 0, t2 = -1, o2 = new this(u); + for (; ++t2 < n2; ) + h2(e2[t2], t2); + return o2; + function h2(e3, t3) { + r2.resolve(e3).then(function(e4) { + s2[t3] = e4, ++a2 !== n2 || i2 || (i2 = true, l.resolve(o2, s2)); + }, function(e4) { + i2 || (i2 = true, l.reject(o2, e4)); + }); + } + }, o.race = function(e2) { + var t2 = this; + if ("[object Array]" !== Object.prototype.toString.call(e2)) + return this.reject(new TypeError("must be an array")); + var r2 = e2.length, n2 = false; + if (!r2) + return this.resolve([]); + var i2 = -1, s2 = new this(u); + for (; ++i2 < r2; ) + a2 = e2[i2], t2.resolve(a2).then(function(e3) { + n2 || (n2 = true, l.resolve(s2, e3)); + }, function(e3) { + n2 || (n2 = true, l.reject(s2, e3)); + }); + var a2; + return s2; + }; + }, { immediate: 36 }], 38: [function(e, t, r) { + "use strict"; + var n = {}; + (0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n; + }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e, t, r) { + "use strict"; + var a = e("./zlib/deflate"), o = e("./utils/common"), h = e("./utils/strings"), i = e("./zlib/messages"), s = e("./zlib/zstream"), u = Object.prototype.toString, l = 0, f = -1, c = 0, d = 8; + function p(e2) { + if (!(this instanceof p)) + return new p(e2); + this.options = o.assign({ level: f, method: d, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c, to: "" }, e2 || {}); + var t2 = this.options; + t2.raw && 0 < t2.windowBits ? t2.windowBits = -t2.windowBits : t2.gzip && 0 < t2.windowBits && t2.windowBits < 16 && (t2.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0; + var r2 = a.deflateInit2(this.strm, t2.level, t2.method, t2.windowBits, t2.memLevel, t2.strategy); + if (r2 !== l) + throw new Error(i[r2]); + if (t2.header && a.deflateSetHeader(this.strm, t2.header), t2.dictionary) { + var n2; + if (n2 = "string" == typeof t2.dictionary ? h.string2buf(t2.dictionary) : "[object ArrayBuffer]" === u.call(t2.dictionary) ? new Uint8Array(t2.dictionary) : t2.dictionary, (r2 = a.deflateSetDictionary(this.strm, n2)) !== l) + throw new Error(i[r2]); + this._dict_set = true; + } + } + function n(e2, t2) { + var r2 = new p(t2); + if (r2.push(e2, true), r2.err) + throw r2.msg || i[r2.err]; + return r2.result; + } + p.prototype.push = function(e2, t2) { + var r2, n2, i2 = this.strm, s2 = this.options.chunkSize; + if (this.ended) + return false; + n2 = t2 === ~~t2 ? t2 : true === t2 ? 4 : 0, "string" == typeof e2 ? i2.input = h.string2buf(e2) : "[object ArrayBuffer]" === u.call(e2) ? i2.input = new Uint8Array(e2) : i2.input = e2, i2.next_in = 0, i2.avail_in = i2.input.length; + do { + if (0 === i2.avail_out && (i2.output = new o.Buf8(s2), i2.next_out = 0, i2.avail_out = s2), 1 !== (r2 = a.deflate(i2, n2)) && r2 !== l) + return this.onEnd(r2), !(this.ended = true); + 0 !== i2.avail_out && (0 !== i2.avail_in || 4 !== n2 && 2 !== n2) || ("string" === this.options.to ? this.onData(h.buf2binstring(o.shrinkBuf(i2.output, i2.next_out))) : this.onData(o.shrinkBuf(i2.output, i2.next_out))); + } while ((0 < i2.avail_in || 0 === i2.avail_out) && 1 !== r2); + return 4 === n2 ? (r2 = a.deflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === l) : 2 !== n2 || (this.onEnd(l), !(i2.avail_out = 0)); + }, p.prototype.onData = function(e2) { + this.chunks.push(e2); + }, p.prototype.onEnd = function(e2) { + e2 === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; + }, r.Deflate = p, r.deflate = n, r.deflateRaw = function(e2, t2) { + return (t2 = t2 || {}).raw = true, n(e2, t2); + }, r.gzip = function(e2, t2) { + return (t2 = t2 || {}).gzip = true, n(e2, t2); + }; + }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e, t, r) { + "use strict"; + var c = e("./zlib/inflate"), d = e("./utils/common"), p = e("./utils/strings"), m = e("./zlib/constants"), n = e("./zlib/messages"), i = e("./zlib/zstream"), s = e("./zlib/gzheader"), _ = Object.prototype.toString; + function a(e2) { + if (!(this instanceof a)) + return new a(e2); + this.options = d.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {}); + var t2 = this.options; + t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0; + var r2 = c.inflateInit2(this.strm, t2.windowBits); + if (r2 !== m.Z_OK) + throw new Error(n[r2]); + this.header = new s(), c.inflateGetHeader(this.strm, this.header); + } + function o(e2, t2) { + var r2 = new a(t2); + if (r2.push(e2, true), r2.err) + throw r2.msg || n[r2.err]; + return r2.result; + } + a.prototype.push = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h = this.strm, u = this.options.chunkSize, l = this.options.dictionary, f = false; + if (this.ended) + return false; + n2 = t2 === ~~t2 ? t2 : true === t2 ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e2 ? h.input = p.binstring2buf(e2) : "[object ArrayBuffer]" === _.call(e2) ? h.input = new Uint8Array(e2) : h.input = e2, h.next_in = 0, h.avail_in = h.input.length; + do { + if (0 === h.avail_out && (h.output = new d.Buf8(u), h.next_out = 0, h.avail_out = u), (r2 = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && l && (o2 = "string" == typeof l ? p.string2buf(l) : "[object ArrayBuffer]" === _.call(l) ? new Uint8Array(l) : l, r2 = c.inflateSetDictionary(this.strm, o2)), r2 === m.Z_BUF_ERROR && true === f && (r2 = m.Z_OK, f = false), r2 !== m.Z_STREAM_END && r2 !== m.Z_OK) + return this.onEnd(r2), !(this.ended = true); + h.next_out && (0 !== h.avail_out && r2 !== m.Z_STREAM_END && (0 !== h.avail_in || n2 !== m.Z_FINISH && n2 !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i2 = p.utf8border(h.output, h.next_out), s2 = h.next_out - i2, a2 = p.buf2string(h.output, i2), h.next_out = s2, h.avail_out = u - s2, s2 && d.arraySet(h.output, h.output, i2, s2, 0), this.onData(a2)) : this.onData(d.shrinkBuf(h.output, h.next_out)))), 0 === h.avail_in && 0 === h.avail_out && (f = true); + } while ((0 < h.avail_in || 0 === h.avail_out) && r2 !== m.Z_STREAM_END); + return r2 === m.Z_STREAM_END && (n2 = m.Z_FINISH), n2 === m.Z_FINISH ? (r2 = c.inflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === m.Z_OK) : n2 !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(h.avail_out = 0)); + }, a.prototype.onData = function(e2) { + this.chunks.push(e2); + }, a.prototype.onEnd = function(e2) { + e2 === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; + }, r.Inflate = a, r.inflate = o, r.inflateRaw = function(e2, t2) { + return (t2 = t2 || {}).raw = true, o(e2, t2); + }, r.ungzip = o; + }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e, t, r) { + "use strict"; + var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; + r.assign = function(e2) { + for (var t2 = Array.prototype.slice.call(arguments, 1); t2.length; ) { + var r2 = t2.shift(); + if (r2) { + if ("object" != typeof r2) + throw new TypeError(r2 + "must be non-object"); + for (var n2 in r2) + r2.hasOwnProperty(n2) && (e2[n2] = r2[n2]); + } + } + return e2; + }, r.shrinkBuf = function(e2, t2) { + return e2.length === t2 ? e2 : e2.subarray ? e2.subarray(0, t2) : (e2.length = t2, e2); + }; + var i = { arraySet: function(e2, t2, r2, n2, i2) { + if (t2.subarray && e2.subarray) + e2.set(t2.subarray(r2, r2 + n2), i2); + else + for (var s2 = 0; s2 < n2; s2++) + e2[i2 + s2] = t2[r2 + s2]; + }, flattenChunks: function(e2) { + var t2, r2, n2, i2, s2, a; + for (t2 = n2 = 0, r2 = e2.length; t2 < r2; t2++) + n2 += e2[t2].length; + for (a = new Uint8Array(n2), t2 = i2 = 0, r2 = e2.length; t2 < r2; t2++) + s2 = e2[t2], a.set(s2, i2), i2 += s2.length; + return a; + } }, s = { arraySet: function(e2, t2, r2, n2, i2) { + for (var s2 = 0; s2 < n2; s2++) + e2[i2 + s2] = t2[r2 + s2]; + }, flattenChunks: function(e2) { + return [].concat.apply([], e2); + } }; + r.setTyped = function(e2) { + e2 ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s)); + }, r.setTyped(n); + }, {}], 42: [function(e, t, r) { + "use strict"; + var h = e("./common"), i = true, s = true; + try { + String.fromCharCode.apply(null, [0]); + } catch (e2) { + i = false; + } + try { + String.fromCharCode.apply(null, new Uint8Array(1)); + } catch (e2) { + s = false; + } + for (var u = new h.Buf8(256), n = 0; n < 256; n++) + u[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; + function l(e2, t2) { + if (t2 < 65537 && (e2.subarray && s || !e2.subarray && i)) + return String.fromCharCode.apply(null, h.shrinkBuf(e2, t2)); + for (var r2 = "", n2 = 0; n2 < t2; n2++) + r2 += String.fromCharCode(e2[n2]); + return r2; + } + u[254] = u[254] = 1, r.string2buf = function(e2) { + var t2, r2, n2, i2, s2, a = e2.length, o = 0; + for (i2 = 0; i2 < a; i2++) + 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; + for (t2 = new h.Buf8(o), i2 = s2 = 0; s2 < o; i2++) + 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); + return t2; + }, r.buf2binstring = function(e2) { + return l(e2, e2.length); + }, r.binstring2buf = function(e2) { + for (var t2 = new h.Buf8(e2.length), r2 = 0, n2 = t2.length; r2 < n2; r2++) + t2[r2] = e2.charCodeAt(r2); + return t2; + }, r.buf2string = function(e2, t2) { + var r2, n2, i2, s2, a = t2 || e2.length, o = new Array(2 * a); + for (r2 = n2 = 0; r2 < a; ) + if ((i2 = e2[r2++]) < 128) + o[n2++] = i2; + else if (4 < (s2 = u[i2])) + o[n2++] = 65533, r2 += s2 - 1; + else { + for (i2 &= 2 === s2 ? 31 : 3 === s2 ? 15 : 7; 1 < s2 && r2 < a; ) + i2 = i2 << 6 | 63 & e2[r2++], s2--; + 1 < s2 ? o[n2++] = 65533 : i2 < 65536 ? o[n2++] = i2 : (i2 -= 65536, o[n2++] = 55296 | i2 >> 10 & 1023, o[n2++] = 56320 | 1023 & i2); + } + return l(o, n2); + }, r.utf8border = function(e2, t2) { + var r2; + for ((t2 = t2 || e2.length) > e2.length && (t2 = e2.length), r2 = t2 - 1; 0 <= r2 && 128 == (192 & e2[r2]); ) + r2--; + return r2 < 0 ? t2 : 0 === r2 ? t2 : r2 + u[e2[r2]] > t2 ? r2 : t2; + }; + }, { "./common": 41 }], 43: [function(e, t, r) { + "use strict"; + t.exports = function(e2, t2, r2, n) { + for (var i = 65535 & e2 | 0, s = e2 >>> 16 & 65535 | 0, a = 0; 0 !== r2; ) { + for (r2 -= a = 2e3 < r2 ? 2e3 : r2; s = s + (i = i + t2[n++] | 0) | 0, --a; ) + ; + i %= 65521, s %= 65521; + } + return i | s << 16 | 0; + }; + }, {}], 44: [function(e, t, r) { + "use strict"; + t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; + }, {}], 45: [function(e, t, r) { + "use strict"; + var o = function() { + for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { + e2 = r2; + for (var n = 0; n < 8; n++) + e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; + t2[r2] = e2; + } + return t2; + }(); + t.exports = function(e2, t2, r2, n) { + var i = o, s = n + r2; + e2 ^= -1; + for (var a = n; a < s; a++) + e2 = e2 >>> 8 ^ i[255 & (e2 ^ t2[a])]; + return -1 ^ e2; + }; + }, {}], 46: [function(e, t, r) { + "use strict"; + var h, c = e("../utils/common"), u = e("./trees"), d = e("./adler32"), p = e("./crc32"), n = e("./messages"), l = 0, f = 4, m = 0, _ = -2, g = -1, b = 4, i = 2, v = 8, y = 9, s = 286, a = 30, o = 19, w = 2 * s + 1, k = 15, x = 3, S = 258, z = S + x + 1, C = 42, E = 113, A = 1, I = 2, O = 3, B = 4; + function R(e2, t2) { + return e2.msg = n[t2], t2; + } + function T(e2) { + return (e2 << 1) - (4 < e2 ? 9 : 0); + } + function D(e2) { + for (var t2 = e2.length; 0 <= --t2; ) + e2[t2] = 0; + } + function F(e2) { + var t2 = e2.state, r2 = t2.pending; + r2 > e2.avail_out && (r2 = e2.avail_out), 0 !== r2 && (c.arraySet(e2.output, t2.pending_buf, t2.pending_out, r2, e2.next_out), e2.next_out += r2, t2.pending_out += r2, e2.total_out += r2, e2.avail_out -= r2, t2.pending -= r2, 0 === t2.pending && (t2.pending_out = 0)); + } + function N(e2, t2) { + u._tr_flush_block(e2, 0 <= e2.block_start ? e2.block_start : -1, e2.strstart - e2.block_start, t2), e2.block_start = e2.strstart, F(e2.strm); + } + function U(e2, t2) { + e2.pending_buf[e2.pending++] = t2; + } + function P(e2, t2) { + e2.pending_buf[e2.pending++] = t2 >>> 8 & 255, e2.pending_buf[e2.pending++] = 255 & t2; + } + function L(e2, t2) { + var r2, n2, i2 = e2.max_chain_length, s2 = e2.strstart, a2 = e2.prev_length, o2 = e2.nice_match, h2 = e2.strstart > e2.w_size - z ? e2.strstart - (e2.w_size - z) : 0, u2 = e2.window, l2 = e2.w_mask, f2 = e2.prev, c2 = e2.strstart + S, d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; + e2.prev_length >= e2.good_match && (i2 >>= 2), o2 > e2.lookahead && (o2 = e2.lookahead); + do { + if (u2[(r2 = t2) + a2] === p2 && u2[r2 + a2 - 1] === d2 && u2[r2] === u2[s2] && u2[++r2] === u2[s2 + 1]) { + s2 += 2, r2++; + do { + } while (u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && s2 < c2); + if (n2 = S - (c2 - s2), s2 = c2 - S, a2 < n2) { + if (e2.match_start = t2, o2 <= (a2 = n2)) + break; + d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; + } + } + } while ((t2 = f2[t2 & l2]) > h2 && 0 != --i2); + return a2 <= e2.lookahead ? a2 : e2.lookahead; + } + function j(e2) { + var t2, r2, n2, i2, s2, a2, o2, h2, u2, l2, f2 = e2.w_size; + do { + if (i2 = e2.window_size - e2.lookahead - e2.strstart, e2.strstart >= f2 + (f2 - z)) { + for (c.arraySet(e2.window, e2.window, f2, f2, 0), e2.match_start -= f2, e2.strstart -= f2, e2.block_start -= f2, t2 = r2 = e2.hash_size; n2 = e2.head[--t2], e2.head[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) + ; + for (t2 = r2 = f2; n2 = e2.prev[--t2], e2.prev[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) + ; + i2 += f2; + } + if (0 === e2.strm.avail_in) + break; + if (a2 = e2.strm, o2 = e2.window, h2 = e2.strstart + e2.lookahead, u2 = i2, l2 = void 0, l2 = a2.avail_in, u2 < l2 && (l2 = u2), r2 = 0 === l2 ? 0 : (a2.avail_in -= l2, c.arraySet(o2, a2.input, a2.next_in, l2, h2), 1 === a2.state.wrap ? a2.adler = d(a2.adler, o2, l2, h2) : 2 === a2.state.wrap && (a2.adler = p(a2.adler, o2, l2, h2)), a2.next_in += l2, a2.total_in += l2, l2), e2.lookahead += r2, e2.lookahead + e2.insert >= x) + for (s2 = e2.strstart - e2.insert, e2.ins_h = e2.window[s2], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + 1]) & e2.hash_mask; e2.insert && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + x - 1]) & e2.hash_mask, e2.prev[s2 & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = s2, s2++, e2.insert--, !(e2.lookahead + e2.insert < x)); ) + ; + } while (e2.lookahead < z && 0 !== e2.strm.avail_in); + } + function Z(e2, t2) { + for (var r2, n2; ; ) { + if (e2.lookahead < z) { + if (j(e2), e2.lookahead < z && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 !== r2 && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2)), e2.match_length >= x) + if (n2 = u._tr_tally(e2, e2.strstart - e2.match_start, e2.match_length - x), e2.lookahead -= e2.match_length, e2.match_length <= e2.max_lazy_match && e2.lookahead >= x) { + for (e2.match_length--; e2.strstart++, e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart, 0 != --e2.match_length; ) + ; + e2.strstart++; + } else + e2.strstart += e2.match_length, e2.match_length = 0, e2.ins_h = e2.window[e2.strstart], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + 1]) & e2.hash_mask; + else + n2 = u._tr_tally(e2, 0, e2.window[e2.strstart]), e2.lookahead--, e2.strstart++; + if (n2 && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } + return e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; + } + function W(e2, t2) { + for (var r2, n2, i2; ; ) { + if (e2.lookahead < z) { + if (j(e2), e2.lookahead < z && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), e2.prev_length = e2.match_length, e2.prev_match = e2.match_start, e2.match_length = x - 1, 0 !== r2 && e2.prev_length < e2.max_lazy_match && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2), e2.match_length <= 5 && (1 === e2.strategy || e2.match_length === x && 4096 < e2.strstart - e2.match_start) && (e2.match_length = x - 1)), e2.prev_length >= x && e2.match_length <= e2.prev_length) { + for (i2 = e2.strstart + e2.lookahead - x, n2 = u._tr_tally(e2, e2.strstart - 1 - e2.prev_match, e2.prev_length - x), e2.lookahead -= e2.prev_length - 1, e2.prev_length -= 2; ++e2.strstart <= i2 && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 != --e2.prev_length; ) + ; + if (e2.match_available = 0, e2.match_length = x - 1, e2.strstart++, n2 && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } else if (e2.match_available) { + if ((n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1])) && N(e2, false), e2.strstart++, e2.lookahead--, 0 === e2.strm.avail_out) + return A; + } else + e2.match_available = 1, e2.strstart++, e2.lookahead--; + } + return e2.match_available && (n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1]), e2.match_available = 0), e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; + } + function M(e2, t2, r2, n2, i2) { + this.good_length = e2, this.max_lazy = t2, this.nice_length = r2, this.max_chain = n2, this.func = i2; + } + function H() { + this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c.Buf16(2 * w), this.dyn_dtree = new c.Buf16(2 * (2 * a + 1)), this.bl_tree = new c.Buf16(2 * (2 * o + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c.Buf16(k + 1), this.heap = new c.Buf16(2 * s + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c.Buf16(2 * s + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; + } + function G(e2) { + var t2; + return e2 && e2.state ? (e2.total_in = e2.total_out = 0, e2.data_type = i, (t2 = e2.state).pending = 0, t2.pending_out = 0, t2.wrap < 0 && (t2.wrap = -t2.wrap), t2.status = t2.wrap ? C : E, e2.adler = 2 === t2.wrap ? 0 : 1, t2.last_flush = l, u._tr_init(t2), m) : R(e2, _); + } + function K(e2) { + var t2 = G(e2); + return t2 === m && function(e3) { + e3.window_size = 2 * e3.w_size, D(e3.head), e3.max_lazy_match = h[e3.level].max_lazy, e3.good_match = h[e3.level].good_length, e3.nice_match = h[e3.level].nice_length, e3.max_chain_length = h[e3.level].max_chain, e3.strstart = 0, e3.block_start = 0, e3.lookahead = 0, e3.insert = 0, e3.match_length = e3.prev_length = x - 1, e3.match_available = 0, e3.ins_h = 0; + }(e2.state), t2; + } + function Y(e2, t2, r2, n2, i2, s2) { + if (!e2) + return _; + var a2 = 1; + if (t2 === g && (t2 = 6), n2 < 0 ? (a2 = 0, n2 = -n2) : 15 < n2 && (a2 = 2, n2 -= 16), i2 < 1 || y < i2 || r2 !== v || n2 < 8 || 15 < n2 || t2 < 0 || 9 < t2 || s2 < 0 || b < s2) + return R(e2, _); + 8 === n2 && (n2 = 9); + var o2 = new H(); + return (e2.state = o2).strm = e2, o2.wrap = a2, o2.gzhead = null, o2.w_bits = n2, o2.w_size = 1 << o2.w_bits, o2.w_mask = o2.w_size - 1, o2.hash_bits = i2 + 7, o2.hash_size = 1 << o2.hash_bits, o2.hash_mask = o2.hash_size - 1, o2.hash_shift = ~~((o2.hash_bits + x - 1) / x), o2.window = new c.Buf8(2 * o2.w_size), o2.head = new c.Buf16(o2.hash_size), o2.prev = new c.Buf16(o2.w_size), o2.lit_bufsize = 1 << i2 + 6, o2.pending_buf_size = 4 * o2.lit_bufsize, o2.pending_buf = new c.Buf8(o2.pending_buf_size), o2.d_buf = 1 * o2.lit_bufsize, o2.l_buf = 3 * o2.lit_bufsize, o2.level = t2, o2.strategy = s2, o2.method = r2, K(e2); + } + h = [new M(0, 0, 0, 0, function(e2, t2) { + var r2 = 65535; + for (r2 > e2.pending_buf_size - 5 && (r2 = e2.pending_buf_size - 5); ; ) { + if (e2.lookahead <= 1) { + if (j(e2), 0 === e2.lookahead && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + e2.strstart += e2.lookahead, e2.lookahead = 0; + var n2 = e2.block_start + r2; + if ((0 === e2.strstart || e2.strstart >= n2) && (e2.lookahead = e2.strstart - n2, e2.strstart = n2, N(e2, false), 0 === e2.strm.avail_out)) + return A; + if (e2.strstart - e2.block_start >= e2.w_size - z && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } + return e2.insert = 0, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : (e2.strstart > e2.block_start && (N(e2, false), e2.strm.avail_out), A); + }), new M(4, 4, 8, 4, Z), new M(4, 5, 16, 8, Z), new M(4, 6, 32, 32, Z), new M(4, 4, 16, 16, W), new M(8, 16, 32, 32, W), new M(8, 16, 128, 128, W), new M(8, 32, 128, 256, W), new M(32, 128, 258, 1024, W), new M(32, 258, 258, 4096, W)], r.deflateInit = function(e2, t2) { + return Y(e2, t2, v, 15, 8, 0); + }, r.deflateInit2 = Y, r.deflateReset = K, r.deflateResetKeep = G, r.deflateSetHeader = function(e2, t2) { + return e2 && e2.state ? 2 !== e2.state.wrap ? _ : (e2.state.gzhead = t2, m) : _; + }, r.deflate = function(e2, t2) { + var r2, n2, i2, s2; + if (!e2 || !e2.state || 5 < t2 || t2 < 0) + return e2 ? R(e2, _) : _; + if (n2 = e2.state, !e2.output || !e2.input && 0 !== e2.avail_in || 666 === n2.status && t2 !== f) + return R(e2, 0 === e2.avail_out ? -5 : _); + if (n2.strm = e2, r2 = n2.last_flush, n2.last_flush = t2, n2.status === C) + if (2 === n2.wrap) + e2.adler = 0, U(n2, 31), U(n2, 139), U(n2, 8), n2.gzhead ? (U(n2, (n2.gzhead.text ? 1 : 0) + (n2.gzhead.hcrc ? 2 : 0) + (n2.gzhead.extra ? 4 : 0) + (n2.gzhead.name ? 8 : 0) + (n2.gzhead.comment ? 16 : 0)), U(n2, 255 & n2.gzhead.time), U(n2, n2.gzhead.time >> 8 & 255), U(n2, n2.gzhead.time >> 16 & 255), U(n2, n2.gzhead.time >> 24 & 255), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 255 & n2.gzhead.os), n2.gzhead.extra && n2.gzhead.extra.length && (U(n2, 255 & n2.gzhead.extra.length), U(n2, n2.gzhead.extra.length >> 8 & 255)), n2.gzhead.hcrc && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending, 0)), n2.gzindex = 0, n2.status = 69) : (U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 3), n2.status = E); + else { + var a2 = v + (n2.w_bits - 8 << 4) << 8; + a2 |= (2 <= n2.strategy || n2.level < 2 ? 0 : n2.level < 6 ? 1 : 6 === n2.level ? 2 : 3) << 6, 0 !== n2.strstart && (a2 |= 32), a2 += 31 - a2 % 31, n2.status = E, P(n2, a2), 0 !== n2.strstart && (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), e2.adler = 1; + } + if (69 === n2.status) + if (n2.gzhead.extra) { + for (i2 = n2.pending; n2.gzindex < (65535 & n2.gzhead.extra.length) && (n2.pending !== n2.pending_buf_size || (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending !== n2.pending_buf_size)); ) + U(n2, 255 & n2.gzhead.extra[n2.gzindex]), n2.gzindex++; + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), n2.gzindex === n2.gzhead.extra.length && (n2.gzindex = 0, n2.status = 73); + } else + n2.status = 73; + if (73 === n2.status) + if (n2.gzhead.name) { + i2 = n2.pending; + do { + if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { + s2 = 1; + break; + } + s2 = n2.gzindex < n2.gzhead.name.length ? 255 & n2.gzhead.name.charCodeAt(n2.gzindex++) : 0, U(n2, s2); + } while (0 !== s2); + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.gzindex = 0, n2.status = 91); + } else + n2.status = 91; + if (91 === n2.status) + if (n2.gzhead.comment) { + i2 = n2.pending; + do { + if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { + s2 = 1; + break; + } + s2 = n2.gzindex < n2.gzhead.comment.length ? 255 & n2.gzhead.comment.charCodeAt(n2.gzindex++) : 0, U(n2, s2); + } while (0 !== s2); + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.status = 103); + } else + n2.status = 103; + if (103 === n2.status && (n2.gzhead.hcrc ? (n2.pending + 2 > n2.pending_buf_size && F(e2), n2.pending + 2 <= n2.pending_buf_size && (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), e2.adler = 0, n2.status = E)) : n2.status = E), 0 !== n2.pending) { + if (F(e2), 0 === e2.avail_out) + return n2.last_flush = -1, m; + } else if (0 === e2.avail_in && T(t2) <= T(r2) && t2 !== f) + return R(e2, -5); + if (666 === n2.status && 0 !== e2.avail_in) + return R(e2, -5); + if (0 !== e2.avail_in || 0 !== n2.lookahead || t2 !== l && 666 !== n2.status) { + var o2 = 2 === n2.strategy ? function(e3, t3) { + for (var r3; ; ) { + if (0 === e3.lookahead && (j(e3), 0 === e3.lookahead)) { + if (t3 === l) + return A; + break; + } + if (e3.match_length = 0, r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++, r3 && (N(e3, false), 0 === e3.strm.avail_out)) + return A; + } + return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; + }(n2, t2) : 3 === n2.strategy ? function(e3, t3) { + for (var r3, n3, i3, s3, a3 = e3.window; ; ) { + if (e3.lookahead <= S) { + if (j(e3), e3.lookahead <= S && t3 === l) + return A; + if (0 === e3.lookahead) + break; + } + if (e3.match_length = 0, e3.lookahead >= x && 0 < e3.strstart && (n3 = a3[i3 = e3.strstart - 1]) === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3]) { + s3 = e3.strstart + S; + do { + } while (n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && i3 < s3); + e3.match_length = S - (s3 - i3), e3.match_length > e3.lookahead && (e3.match_length = e3.lookahead); + } + if (e3.match_length >= x ? (r3 = u._tr_tally(e3, 1, e3.match_length - x), e3.lookahead -= e3.match_length, e3.strstart += e3.match_length, e3.match_length = 0) : (r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++), r3 && (N(e3, false), 0 === e3.strm.avail_out)) + return A; + } + return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; + }(n2, t2) : h[n2.level].func(n2, t2); + if (o2 !== O && o2 !== B || (n2.status = 666), o2 === A || o2 === O) + return 0 === e2.avail_out && (n2.last_flush = -1), m; + if (o2 === I && (1 === t2 ? u._tr_align(n2) : 5 !== t2 && (u._tr_stored_block(n2, 0, 0, false), 3 === t2 && (D(n2.head), 0 === n2.lookahead && (n2.strstart = 0, n2.block_start = 0, n2.insert = 0))), F(e2), 0 === e2.avail_out)) + return n2.last_flush = -1, m; + } + return t2 !== f ? m : n2.wrap <= 0 ? 1 : (2 === n2.wrap ? (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), U(n2, e2.adler >> 16 & 255), U(n2, e2.adler >> 24 & 255), U(n2, 255 & e2.total_in), U(n2, e2.total_in >> 8 & 255), U(n2, e2.total_in >> 16 & 255), U(n2, e2.total_in >> 24 & 255)) : (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), F(e2), 0 < n2.wrap && (n2.wrap = -n2.wrap), 0 !== n2.pending ? m : 1); + }, r.deflateEnd = function(e2) { + var t2; + return e2 && e2.state ? (t2 = e2.state.status) !== C && 69 !== t2 && 73 !== t2 && 91 !== t2 && 103 !== t2 && t2 !== E && 666 !== t2 ? R(e2, _) : (e2.state = null, t2 === E ? R(e2, -3) : m) : _; + }, r.deflateSetDictionary = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h2, u2, l2 = t2.length; + if (!e2 || !e2.state) + return _; + if (2 === (s2 = (r2 = e2.state).wrap) || 1 === s2 && r2.status !== C || r2.lookahead) + return _; + for (1 === s2 && (e2.adler = d(e2.adler, t2, l2, 0)), r2.wrap = 0, l2 >= r2.w_size && (0 === s2 && (D(r2.head), r2.strstart = 0, r2.block_start = 0, r2.insert = 0), u2 = new c.Buf8(r2.w_size), c.arraySet(u2, t2, l2 - r2.w_size, r2.w_size, 0), t2 = u2, l2 = r2.w_size), a2 = e2.avail_in, o2 = e2.next_in, h2 = e2.input, e2.avail_in = l2, e2.next_in = 0, e2.input = t2, j(r2); r2.lookahead >= x; ) { + for (n2 = r2.strstart, i2 = r2.lookahead - (x - 1); r2.ins_h = (r2.ins_h << r2.hash_shift ^ r2.window[n2 + x - 1]) & r2.hash_mask, r2.prev[n2 & r2.w_mask] = r2.head[r2.ins_h], r2.head[r2.ins_h] = n2, n2++, --i2; ) + ; + r2.strstart = n2, r2.lookahead = x - 1, j(r2); + } + return r2.strstart += r2.lookahead, r2.block_start = r2.strstart, r2.insert = r2.lookahead, r2.lookahead = 0, r2.match_length = r2.prev_length = x - 1, r2.match_available = 0, e2.next_in = o2, e2.input = h2, e2.avail_in = a2, r2.wrap = s2, m; + }, r.deflateInfo = "pako deflate (from Nodeca project)"; + }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e, t, r) { + "use strict"; + t.exports = function() { + this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; + }; + }, {}], 48: [function(e, t, r) { + "use strict"; + t.exports = function(e2, t2) { + var r2, n, i, s, a, o, h, u, l, f, c, d, p, m, _, g, b, v, y, w, k, x, S, z, C; + r2 = e2.state, n = e2.next_in, z = e2.input, i = n + (e2.avail_in - 5), s = e2.next_out, C = e2.output, a = s - (t2 - e2.avail_out), o = s + (e2.avail_out - 257), h = r2.dmax, u = r2.wsize, l = r2.whave, f = r2.wnext, c = r2.window, d = r2.hold, p = r2.bits, m = r2.lencode, _ = r2.distcode, g = (1 << r2.lenbits) - 1, b = (1 << r2.distbits) - 1; + e: + do { + p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = m[d & g]; + t: + for (; ; ) { + if (d >>>= y = v >>> 24, p -= y, 0 === (y = v >>> 16 & 255)) + C[s++] = 65535 & v; + else { + if (!(16 & y)) { + if (0 == (64 & y)) { + v = m[(65535 & v) + (d & (1 << y) - 1)]; + continue t; + } + if (32 & y) { + r2.mode = 12; + break e; + } + e2.msg = "invalid literal/length code", r2.mode = 30; + break e; + } + w = 65535 & v, (y &= 15) && (p < y && (d += z[n++] << p, p += 8), w += d & (1 << y) - 1, d >>>= y, p -= y), p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = _[d & b]; + r: + for (; ; ) { + if (d >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) { + if (0 == (64 & y)) { + v = _[(65535 & v) + (d & (1 << y) - 1)]; + continue r; + } + e2.msg = "invalid distance code", r2.mode = 30; + break e; + } + if (k = 65535 & v, p < (y &= 15) && (d += z[n++] << p, (p += 8) < y && (d += z[n++] << p, p += 8)), h < (k += d & (1 << y) - 1)) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break e; + } + if (d >>>= y, p -= y, (y = s - a) < k) { + if (l < (y = k - y) && r2.sane) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break e; + } + if (S = c, (x = 0) === f) { + if (x += u - y, y < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + } else if (f < y) { + if (x += u + f - y, (y -= f) < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + if (x = 0, f < w) { + for (w -= y = f; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + } + } else if (x += f - y, y < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + for (; 2 < w; ) + C[s++] = S[x++], C[s++] = S[x++], C[s++] = S[x++], w -= 3; + w && (C[s++] = S[x++], 1 < w && (C[s++] = S[x++])); + } else { + for (x = s - k; C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], 2 < (w -= 3); ) + ; + w && (C[s++] = C[x++], 1 < w && (C[s++] = C[x++])); + } + break; + } + } + break; + } + } while (n < i && s < o); + n -= w = p >> 3, d &= (1 << (p -= w << 3)) - 1, e2.next_in = n, e2.next_out = s, e2.avail_in = n < i ? i - n + 5 : 5 - (n - i), e2.avail_out = s < o ? o - s + 257 : 257 - (s - o), r2.hold = d, r2.bits = p; + }; + }, {}], 49: [function(e, t, r) { + "use strict"; + var I = e("../utils/common"), O = e("./adler32"), B = e("./crc32"), R = e("./inffast"), T = e("./inftrees"), D = 1, F = 2, N = 0, U = -2, P = 1, n = 852, i = 592; + function L(e2) { + return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24); + } + function s() { + this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; + } + function a(e2) { + var t2; + return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = P, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new I.Buf32(n), t2.distcode = t2.distdyn = new I.Buf32(i), t2.sane = 1, t2.back = -1, N) : U; + } + function o(e2) { + var t2; + return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, a(e2)) : U; + } + function h(e2, t2) { + var r2, n2; + return e2 && e2.state ? (n2 = e2.state, t2 < 0 ? (r2 = 0, t2 = -t2) : (r2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? U : (null !== n2.window && n2.wbits !== t2 && (n2.window = null), n2.wrap = r2, n2.wbits = t2, o(e2))) : U; + } + function u(e2, t2) { + var r2, n2; + return e2 ? (n2 = new s(), (e2.state = n2).window = null, (r2 = h(e2, t2)) !== N && (e2.state = null), r2) : U; + } + var l, f, c = true; + function j(e2) { + if (c) { + var t2; + for (l = new I.Buf32(512), f = new I.Buf32(32), t2 = 0; t2 < 144; ) + e2.lens[t2++] = 8; + for (; t2 < 256; ) + e2.lens[t2++] = 9; + for (; t2 < 280; ) + e2.lens[t2++] = 7; + for (; t2 < 288; ) + e2.lens[t2++] = 8; + for (T(D, e2.lens, 0, 288, l, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; ) + e2.lens[t2++] = 5; + T(F, e2.lens, 0, 32, f, 0, e2.work, { bits: 5 }), c = false; + } + e2.lencode = l, e2.lenbits = 9, e2.distcode = f, e2.distbits = 5; + } + function Z(e2, t2, r2, n2) { + var i2, s2 = e2.state; + return null === s2.window && (s2.wsize = 1 << s2.wbits, s2.wnext = 0, s2.whave = 0, s2.window = new I.Buf8(s2.wsize)), n2 >= s2.wsize ? (I.arraySet(s2.window, t2, r2 - s2.wsize, s2.wsize, 0), s2.wnext = 0, s2.whave = s2.wsize) : (n2 < (i2 = s2.wsize - s2.wnext) && (i2 = n2), I.arraySet(s2.window, t2, r2 - n2, i2, s2.wnext), (n2 -= i2) ? (I.arraySet(s2.window, t2, r2 - n2, n2, 0), s2.wnext = n2, s2.whave = s2.wsize) : (s2.wnext += i2, s2.wnext === s2.wsize && (s2.wnext = 0), s2.whave < s2.wsize && (s2.whave += i2))), 0; + } + r.inflateReset = o, r.inflateReset2 = h, r.inflateResetKeep = a, r.inflateInit = function(e2) { + return u(e2, 15); + }, r.inflateInit2 = u, r.inflate = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h2, u2, l2, f2, c2, d, p, m, _, g, b, v, y, w, k, x, S, z, C = 0, E = new I.Buf8(4), A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; + if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in) + return U; + 12 === (r2 = e2.state).mode && (r2.mode = 13), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, f2 = o2, c2 = h2, x = N; + e: + for (; ; ) + switch (r2.mode) { + case P: + if (0 === r2.wrap) { + r2.mode = 13; + break; + } + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (2 & r2.wrap && 35615 === u2) { + E[r2.check = 0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0), l2 = u2 = 0, r2.mode = 2; + break; + } + if (r2.flags = 0, r2.head && (r2.head.done = false), !(1 & r2.wrap) || (((255 & u2) << 8) + (u2 >> 8)) % 31) { + e2.msg = "incorrect header check", r2.mode = 30; + break; + } + if (8 != (15 & u2)) { + e2.msg = "unknown compression method", r2.mode = 30; + break; + } + if (l2 -= 4, k = 8 + (15 & (u2 >>>= 4)), 0 === r2.wbits) + r2.wbits = k; + else if (k > r2.wbits) { + e2.msg = "invalid window size", r2.mode = 30; + break; + } + r2.dmax = 1 << k, e2.adler = r2.check = 1, r2.mode = 512 & u2 ? 10 : 12, l2 = u2 = 0; + break; + case 2: + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (r2.flags = u2, 8 != (255 & r2.flags)) { + e2.msg = "unknown compression method", r2.mode = 30; + break; + } + if (57344 & r2.flags) { + e2.msg = "unknown header flags set", r2.mode = 30; + break; + } + r2.head && (r2.head.text = u2 >> 8 & 1), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 3; + case 3: + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.head && (r2.head.time = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, E[2] = u2 >>> 16 & 255, E[3] = u2 >>> 24 & 255, r2.check = B(r2.check, E, 4, 0)), l2 = u2 = 0, r2.mode = 4; + case 4: + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.head && (r2.head.xflags = 255 & u2, r2.head.os = u2 >> 8), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 5; + case 5: + if (1024 & r2.flags) { + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.length = u2, r2.head && (r2.head.extra_len = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0; + } else + r2.head && (r2.head.extra = null); + r2.mode = 6; + case 6: + if (1024 & r2.flags && (o2 < (d = r2.length) && (d = o2), d && (r2.head && (k = r2.head.extra_len - r2.length, r2.head.extra || (r2.head.extra = new Array(r2.head.extra_len)), I.arraySet(r2.head.extra, n2, s2, d, k)), 512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, r2.length -= d), r2.length)) + break e; + r2.length = 0, r2.mode = 7; + case 7: + if (2048 & r2.flags) { + if (0 === o2) + break e; + for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.name += String.fromCharCode(k)), k && d < o2; ) + ; + if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) + break e; + } else + r2.head && (r2.head.name = null); + r2.length = 0, r2.mode = 8; + case 8: + if (4096 & r2.flags) { + if (0 === o2) + break e; + for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.comment += String.fromCharCode(k)), k && d < o2; ) + ; + if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) + break e; + } else + r2.head && (r2.head.comment = null); + r2.mode = 9; + case 9: + if (512 & r2.flags) { + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 !== (65535 & r2.check)) { + e2.msg = "header crc mismatch", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.head && (r2.head.hcrc = r2.flags >> 9 & 1, r2.head.done = true), e2.adler = r2.check = 0, r2.mode = 12; + break; + case 10: + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + e2.adler = r2.check = L(u2), l2 = u2 = 0, r2.mode = 11; + case 11: + if (0 === r2.havedict) + return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, 2; + e2.adler = r2.check = 1, r2.mode = 12; + case 12: + if (5 === t2 || 6 === t2) + break e; + case 13: + if (r2.last) { + u2 >>>= 7 & l2, l2 -= 7 & l2, r2.mode = 27; + break; + } + for (; l2 < 3; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + switch (r2.last = 1 & u2, l2 -= 1, 3 & (u2 >>>= 1)) { + case 0: + r2.mode = 14; + break; + case 1: + if (j(r2), r2.mode = 20, 6 !== t2) + break; + u2 >>>= 2, l2 -= 2; + break e; + case 2: + r2.mode = 17; + break; + case 3: + e2.msg = "invalid block type", r2.mode = 30; + } + u2 >>>= 2, l2 -= 2; + break; + case 14: + for (u2 >>>= 7 & l2, l2 -= 7 & l2; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if ((65535 & u2) != (u2 >>> 16 ^ 65535)) { + e2.msg = "invalid stored block lengths", r2.mode = 30; + break; + } + if (r2.length = 65535 & u2, l2 = u2 = 0, r2.mode = 15, 6 === t2) + break e; + case 15: + r2.mode = 16; + case 16: + if (d = r2.length) { + if (o2 < d && (d = o2), h2 < d && (d = h2), 0 === d) + break e; + I.arraySet(i2, n2, s2, d, a2), o2 -= d, s2 += d, h2 -= d, a2 += d, r2.length -= d; + break; + } + r2.mode = 12; + break; + case 17: + for (; l2 < 14; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (r2.nlen = 257 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ndist = 1 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ncode = 4 + (15 & u2), u2 >>>= 4, l2 -= 4, 286 < r2.nlen || 30 < r2.ndist) { + e2.msg = "too many length or distance symbols", r2.mode = 30; + break; + } + r2.have = 0, r2.mode = 18; + case 18: + for (; r2.have < r2.ncode; ) { + for (; l2 < 3; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.lens[A[r2.have++]] = 7 & u2, u2 >>>= 3, l2 -= 3; + } + for (; r2.have < 19; ) + r2.lens[A[r2.have++]] = 0; + if (r2.lencode = r2.lendyn, r2.lenbits = 7, S = { bits: r2.lenbits }, x = T(0, r2.lens, 0, 19, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { + e2.msg = "invalid code lengths set", r2.mode = 30; + break; + } + r2.have = 0, r2.mode = 19; + case 19: + for (; r2.have < r2.nlen + r2.ndist; ) { + for (; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (b < 16) + u2 >>>= _, l2 -= _, r2.lens[r2.have++] = b; + else { + if (16 === b) { + for (z = _ + 2; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 >>>= _, l2 -= _, 0 === r2.have) { + e2.msg = "invalid bit length repeat", r2.mode = 30; + break; + } + k = r2.lens[r2.have - 1], d = 3 + (3 & u2), u2 >>>= 2, l2 -= 2; + } else if (17 === b) { + for (z = _ + 3; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + l2 -= _, k = 0, d = 3 + (7 & (u2 >>>= _)), u2 >>>= 3, l2 -= 3; + } else { + for (z = _ + 7; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + l2 -= _, k = 0, d = 11 + (127 & (u2 >>>= _)), u2 >>>= 7, l2 -= 7; + } + if (r2.have + d > r2.nlen + r2.ndist) { + e2.msg = "invalid bit length repeat", r2.mode = 30; + break; + } + for (; d--; ) + r2.lens[r2.have++] = k; + } + } + if (30 === r2.mode) + break; + if (0 === r2.lens[256]) { + e2.msg = "invalid code -- missing end-of-block", r2.mode = 30; + break; + } + if (r2.lenbits = 9, S = { bits: r2.lenbits }, x = T(D, r2.lens, 0, r2.nlen, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { + e2.msg = "invalid literal/lengths set", r2.mode = 30; + break; + } + if (r2.distbits = 6, r2.distcode = r2.distdyn, S = { bits: r2.distbits }, x = T(F, r2.lens, r2.nlen, r2.ndist, r2.distcode, 0, r2.work, S), r2.distbits = S.bits, x) { + e2.msg = "invalid distances set", r2.mode = 30; + break; + } + if (r2.mode = 20, 6 === t2) + break e; + case 20: + r2.mode = 21; + case 21: + if (6 <= o2 && 258 <= h2) { + e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, R(e2, c2), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, 12 === r2.mode && (r2.back = -1); + break; + } + for (r2.back = 0; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (g && 0 == (240 & g)) { + for (v = _, y = g, w = b; g = (C = r2.lencode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + u2 >>>= v, l2 -= v, r2.back += v; + } + if (u2 >>>= _, l2 -= _, r2.back += _, r2.length = b, 0 === g) { + r2.mode = 26; + break; + } + if (32 & g) { + r2.back = -1, r2.mode = 12; + break; + } + if (64 & g) { + e2.msg = "invalid literal/length code", r2.mode = 30; + break; + } + r2.extra = 15 & g, r2.mode = 22; + case 22: + if (r2.extra) { + for (z = r2.extra; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.length += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; + } + r2.was = r2.length, r2.mode = 23; + case 23: + for (; g = (C = r2.distcode[u2 & (1 << r2.distbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (0 == (240 & g)) { + for (v = _, y = g, w = b; g = (C = r2.distcode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + u2 >>>= v, l2 -= v, r2.back += v; + } + if (u2 >>>= _, l2 -= _, r2.back += _, 64 & g) { + e2.msg = "invalid distance code", r2.mode = 30; + break; + } + r2.offset = b, r2.extra = 15 & g, r2.mode = 24; + case 24: + if (r2.extra) { + for (z = r2.extra; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.offset += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; + } + if (r2.offset > r2.dmax) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break; + } + r2.mode = 25; + case 25: + if (0 === h2) + break e; + if (d = c2 - h2, r2.offset > d) { + if ((d = r2.offset - d) > r2.whave && r2.sane) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break; + } + p = d > r2.wnext ? (d -= r2.wnext, r2.wsize - d) : r2.wnext - d, d > r2.length && (d = r2.length), m = r2.window; + } else + m = i2, p = a2 - r2.offset, d = r2.length; + for (h2 < d && (d = h2), h2 -= d, r2.length -= d; i2[a2++] = m[p++], --d; ) + ; + 0 === r2.length && (r2.mode = 21); + break; + case 26: + if (0 === h2) + break e; + i2[a2++] = r2.length, h2--, r2.mode = 21; + break; + case 27: + if (r2.wrap) { + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 |= n2[s2++] << l2, l2 += 8; + } + if (c2 -= h2, e2.total_out += c2, r2.total += c2, c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, a2 - c2) : O(r2.check, i2, c2, a2 - c2)), c2 = h2, (r2.flags ? u2 : L(u2)) !== r2.check) { + e2.msg = "incorrect data check", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.mode = 28; + case 28: + if (r2.wrap && r2.flags) { + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 !== (4294967295 & r2.total)) { + e2.msg = "incorrect length check", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.mode = 29; + case 29: + x = 1; + break e; + case 30: + x = -3; + break e; + case 31: + return -4; + case 32: + default: + return U; + } + return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, (r2.wsize || c2 !== e2.avail_out && r2.mode < 30 && (r2.mode < 27 || 4 !== t2)) && Z(e2, e2.output, e2.next_out, c2 - e2.avail_out) ? (r2.mode = 31, -4) : (f2 -= e2.avail_in, c2 -= e2.avail_out, e2.total_in += f2, e2.total_out += c2, r2.total += c2, r2.wrap && c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, e2.next_out - c2) : O(r2.check, i2, c2, e2.next_out - c2)), e2.data_type = r2.bits + (r2.last ? 64 : 0) + (12 === r2.mode ? 128 : 0) + (20 === r2.mode || 15 === r2.mode ? 256 : 0), (0 == f2 && 0 === c2 || 4 === t2) && x === N && (x = -5), x); + }, r.inflateEnd = function(e2) { + if (!e2 || !e2.state) + return U; + var t2 = e2.state; + return t2.window && (t2.window = null), e2.state = null, N; + }, r.inflateGetHeader = function(e2, t2) { + var r2; + return e2 && e2.state ? 0 == (2 & (r2 = e2.state).wrap) ? U : ((r2.head = t2).done = false, N) : U; + }, r.inflateSetDictionary = function(e2, t2) { + var r2, n2 = t2.length; + return e2 && e2.state ? 0 !== (r2 = e2.state).wrap && 11 !== r2.mode ? U : 11 === r2.mode && O(1, t2, n2, 0) !== r2.check ? -3 : Z(e2, t2, n2, n2) ? (r2.mode = 31, -4) : (r2.havedict = 1, N) : U; + }, r.inflateInfo = "pako inflate (from Nodeca project)"; + }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e, t, r) { + "use strict"; + var D = e("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; + t.exports = function(e2, t2, r2, n, i, s, a, o) { + var h, u, l, f, c, d, p, m, _, g = o.bits, b = 0, v = 0, y = 0, w = 0, k = 0, x = 0, S = 0, z = 0, C = 0, E = 0, A = null, I = 0, O = new D.Buf16(16), B = new D.Buf16(16), R = null, T = 0; + for (b = 0; b <= 15; b++) + O[b] = 0; + for (v = 0; v < n; v++) + O[t2[r2 + v]]++; + for (k = g, w = 15; 1 <= w && 0 === O[w]; w--) + ; + if (w < k && (k = w), 0 === w) + return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0; + for (y = 1; y < w && 0 === O[y]; y++) + ; + for (k < y && (k = y), b = z = 1; b <= 15; b++) + if (z <<= 1, (z -= O[b]) < 0) + return -1; + if (0 < z && (0 === e2 || 1 !== w)) + return -1; + for (B[1] = 0, b = 1; b < 15; b++) + B[b + 1] = B[b] + O[b]; + for (v = 0; v < n; v++) + 0 !== t2[r2 + v] && (a[B[t2[r2 + v]]++] = v); + if (d = 0 === e2 ? (A = R = a, 19) : 1 === e2 ? (A = F, I -= 257, R = N, T -= 257, 256) : (A = U, R = P, -1), b = y, c = s, S = v = E = 0, l = -1, f = (C = 1 << (x = k)) - 1, 1 === e2 && 852 < C || 2 === e2 && 592 < C) + return 1; + for (; ; ) { + for (p = b - S, _ = a[v] < d ? (m = 0, a[v]) : a[v] > d ? (m = R[T + a[v]], A[I + a[v]]) : (m = 96, 0), h = 1 << b - S, y = u = 1 << x; i[c + (E >> S) + (u -= h)] = p << 24 | m << 16 | _ | 0, 0 !== u; ) + ; + for (h = 1 << b - 1; E & h; ) + h >>= 1; + if (0 !== h ? (E &= h - 1, E += h) : E = 0, v++, 0 == --O[b]) { + if (b === w) + break; + b = t2[r2 + a[v]]; + } + if (k < b && (E & f) !== l) { + for (0 === S && (S = k), c += y, z = 1 << (x = b - S); x + S < w && !((z -= O[x + S]) <= 0); ) + x++, z <<= 1; + if (C += 1 << x, 1 === e2 && 852 < C || 2 === e2 && 592 < C) + return 1; + i[l = E & f] = k << 24 | x << 16 | c - s | 0; + } + } + return 0 !== E && (i[c + E] = b - S << 24 | 64 << 16 | 0), o.bits = k, 0; + }; + }, { "../utils/common": 41 }], 51: [function(e, t, r) { + "use strict"; + t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; + }, {}], 52: [function(e, t, r) { + "use strict"; + var i = e("../utils/common"), o = 0, h = 1; + function n(e2) { + for (var t2 = e2.length; 0 <= --t2; ) + e2[t2] = 0; + } + var s = 0, a = 29, u = 256, l = u + 1 + a, f = 30, c = 19, _ = 2 * l + 1, g = 15, d = 16, p = 7, m = 256, b = 16, v = 17, y = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z = new Array(2 * (l + 2)); + n(z); + var C = new Array(2 * f); + n(C); + var E = new Array(512); + n(E); + var A = new Array(256); + n(A); + var I = new Array(a); + n(I); + var O, B, R, T = new Array(f); + function D(e2, t2, r2, n2, i2) { + this.static_tree = e2, this.extra_bits = t2, this.extra_base = r2, this.elems = n2, this.max_length = i2, this.has_stree = e2 && e2.length; + } + function F(e2, t2) { + this.dyn_tree = e2, this.max_code = 0, this.stat_desc = t2; + } + function N(e2) { + return e2 < 256 ? E[e2] : E[256 + (e2 >>> 7)]; + } + function U(e2, t2) { + e2.pending_buf[e2.pending++] = 255 & t2, e2.pending_buf[e2.pending++] = t2 >>> 8 & 255; + } + function P(e2, t2, r2) { + e2.bi_valid > d - r2 ? (e2.bi_buf |= t2 << e2.bi_valid & 65535, U(e2, e2.bi_buf), e2.bi_buf = t2 >> d - e2.bi_valid, e2.bi_valid += r2 - d) : (e2.bi_buf |= t2 << e2.bi_valid & 65535, e2.bi_valid += r2); + } + function L(e2, t2, r2) { + P(e2, r2[2 * t2], r2[2 * t2 + 1]); + } + function j(e2, t2) { + for (var r2 = 0; r2 |= 1 & e2, e2 >>>= 1, r2 <<= 1, 0 < --t2; ) + ; + return r2 >>> 1; + } + function Z(e2, t2, r2) { + var n2, i2, s2 = new Array(g + 1), a2 = 0; + for (n2 = 1; n2 <= g; n2++) + s2[n2] = a2 = a2 + r2[n2 - 1] << 1; + for (i2 = 0; i2 <= t2; i2++) { + var o2 = e2[2 * i2 + 1]; + 0 !== o2 && (e2[2 * i2] = j(s2[o2]++, o2)); + } + } + function W(e2) { + var t2; + for (t2 = 0; t2 < l; t2++) + e2.dyn_ltree[2 * t2] = 0; + for (t2 = 0; t2 < f; t2++) + e2.dyn_dtree[2 * t2] = 0; + for (t2 = 0; t2 < c; t2++) + e2.bl_tree[2 * t2] = 0; + e2.dyn_ltree[2 * m] = 1, e2.opt_len = e2.static_len = 0, e2.last_lit = e2.matches = 0; + } + function M(e2) { + 8 < e2.bi_valid ? U(e2, e2.bi_buf) : 0 < e2.bi_valid && (e2.pending_buf[e2.pending++] = e2.bi_buf), e2.bi_buf = 0, e2.bi_valid = 0; + } + function H(e2, t2, r2, n2) { + var i2 = 2 * t2, s2 = 2 * r2; + return e2[i2] < e2[s2] || e2[i2] === e2[s2] && n2[t2] <= n2[r2]; + } + function G(e2, t2, r2) { + for (var n2 = e2.heap[r2], i2 = r2 << 1; i2 <= e2.heap_len && (i2 < e2.heap_len && H(t2, e2.heap[i2 + 1], e2.heap[i2], e2.depth) && i2++, !H(t2, n2, e2.heap[i2], e2.depth)); ) + e2.heap[r2] = e2.heap[i2], r2 = i2, i2 <<= 1; + e2.heap[r2] = n2; + } + function K(e2, t2, r2) { + var n2, i2, s2, a2, o2 = 0; + if (0 !== e2.last_lit) + for (; n2 = e2.pending_buf[e2.d_buf + 2 * o2] << 8 | e2.pending_buf[e2.d_buf + 2 * o2 + 1], i2 = e2.pending_buf[e2.l_buf + o2], o2++, 0 === n2 ? L(e2, i2, t2) : (L(e2, (s2 = A[i2]) + u + 1, t2), 0 !== (a2 = w[s2]) && P(e2, i2 -= I[s2], a2), L(e2, s2 = N(--n2), r2), 0 !== (a2 = k[s2]) && P(e2, n2 -= T[s2], a2)), o2 < e2.last_lit; ) + ; + L(e2, m, t2); + } + function Y(e2, t2) { + var r2, n2, i2, s2 = t2.dyn_tree, a2 = t2.stat_desc.static_tree, o2 = t2.stat_desc.has_stree, h2 = t2.stat_desc.elems, u2 = -1; + for (e2.heap_len = 0, e2.heap_max = _, r2 = 0; r2 < h2; r2++) + 0 !== s2[2 * r2] ? (e2.heap[++e2.heap_len] = u2 = r2, e2.depth[r2] = 0) : s2[2 * r2 + 1] = 0; + for (; e2.heap_len < 2; ) + s2[2 * (i2 = e2.heap[++e2.heap_len] = u2 < 2 ? ++u2 : 0)] = 1, e2.depth[i2] = 0, e2.opt_len--, o2 && (e2.static_len -= a2[2 * i2 + 1]); + for (t2.max_code = u2, r2 = e2.heap_len >> 1; 1 <= r2; r2--) + G(e2, s2, r2); + for (i2 = h2; r2 = e2.heap[1], e2.heap[1] = e2.heap[e2.heap_len--], G(e2, s2, 1), n2 = e2.heap[1], e2.heap[--e2.heap_max] = r2, e2.heap[--e2.heap_max] = n2, s2[2 * i2] = s2[2 * r2] + s2[2 * n2], e2.depth[i2] = (e2.depth[r2] >= e2.depth[n2] ? e2.depth[r2] : e2.depth[n2]) + 1, s2[2 * r2 + 1] = s2[2 * n2 + 1] = i2, e2.heap[1] = i2++, G(e2, s2, 1), 2 <= e2.heap_len; ) + ; + e2.heap[--e2.heap_max] = e2.heap[1], function(e3, t3) { + var r3, n3, i3, s3, a3, o3, h3 = t3.dyn_tree, u3 = t3.max_code, l2 = t3.stat_desc.static_tree, f2 = t3.stat_desc.has_stree, c2 = t3.stat_desc.extra_bits, d2 = t3.stat_desc.extra_base, p2 = t3.stat_desc.max_length, m2 = 0; + for (s3 = 0; s3 <= g; s3++) + e3.bl_count[s3] = 0; + for (h3[2 * e3.heap[e3.heap_max] + 1] = 0, r3 = e3.heap_max + 1; r3 < _; r3++) + p2 < (s3 = h3[2 * h3[2 * (n3 = e3.heap[r3]) + 1] + 1] + 1) && (s3 = p2, m2++), h3[2 * n3 + 1] = s3, u3 < n3 || (e3.bl_count[s3]++, a3 = 0, d2 <= n3 && (a3 = c2[n3 - d2]), o3 = h3[2 * n3], e3.opt_len += o3 * (s3 + a3), f2 && (e3.static_len += o3 * (l2[2 * n3 + 1] + a3))); + if (0 !== m2) { + do { + for (s3 = p2 - 1; 0 === e3.bl_count[s3]; ) + s3--; + e3.bl_count[s3]--, e3.bl_count[s3 + 1] += 2, e3.bl_count[p2]--, m2 -= 2; + } while (0 < m2); + for (s3 = p2; 0 !== s3; s3--) + for (n3 = e3.bl_count[s3]; 0 !== n3; ) + u3 < (i3 = e3.heap[--r3]) || (h3[2 * i3 + 1] !== s3 && (e3.opt_len += (s3 - h3[2 * i3 + 1]) * h3[2 * i3], h3[2 * i3 + 1] = s3), n3--); + } + }(e2, t2), Z(s2, u2, e2.bl_count); + } + function X(e2, t2, r2) { + var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; + for (0 === a2 && (h2 = 138, u2 = 3), t2[2 * (r2 + 1) + 1] = 65535, n2 = 0; n2 <= r2; n2++) + i2 = a2, a2 = t2[2 * (n2 + 1) + 1], ++o2 < h2 && i2 === a2 || (o2 < u2 ? e2.bl_tree[2 * i2] += o2 : 0 !== i2 ? (i2 !== s2 && e2.bl_tree[2 * i2]++, e2.bl_tree[2 * b]++) : o2 <= 10 ? e2.bl_tree[2 * v]++ : e2.bl_tree[2 * y]++, s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4)); + } + function V(e2, t2, r2) { + var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; + for (0 === a2 && (h2 = 138, u2 = 3), n2 = 0; n2 <= r2; n2++) + if (i2 = a2, a2 = t2[2 * (n2 + 1) + 1], !(++o2 < h2 && i2 === a2)) { + if (o2 < u2) + for (; L(e2, i2, e2.bl_tree), 0 != --o2; ) + ; + else + 0 !== i2 ? (i2 !== s2 && (L(e2, i2, e2.bl_tree), o2--), L(e2, b, e2.bl_tree), P(e2, o2 - 3, 2)) : o2 <= 10 ? (L(e2, v, e2.bl_tree), P(e2, o2 - 3, 3)) : (L(e2, y, e2.bl_tree), P(e2, o2 - 11, 7)); + s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4); + } + } + n(T); + var q = false; + function J(e2, t2, r2, n2) { + P(e2, (s << 1) + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { + M(e3), n3 && (U(e3, r3), U(e3, ~r3)), i.arraySet(e3.pending_buf, e3.window, t3, r3, e3.pending), e3.pending += r3; + }(e2, t2, r2, true); + } + r._tr_init = function(e2) { + q || (function() { + var e3, t2, r2, n2, i2, s2 = new Array(g + 1); + for (n2 = r2 = 0; n2 < a - 1; n2++) + for (I[n2] = r2, e3 = 0; e3 < 1 << w[n2]; e3++) + A[r2++] = n2; + for (A[r2 - 1] = n2, n2 = i2 = 0; n2 < 16; n2++) + for (T[n2] = i2, e3 = 0; e3 < 1 << k[n2]; e3++) + E[i2++] = n2; + for (i2 >>= 7; n2 < f; n2++) + for (T[n2] = i2 << 7, e3 = 0; e3 < 1 << k[n2] - 7; e3++) + E[256 + i2++] = n2; + for (t2 = 0; t2 <= g; t2++) + s2[t2] = 0; + for (e3 = 0; e3 <= 143; ) + z[2 * e3 + 1] = 8, e3++, s2[8]++; + for (; e3 <= 255; ) + z[2 * e3 + 1] = 9, e3++, s2[9]++; + for (; e3 <= 279; ) + z[2 * e3 + 1] = 7, e3++, s2[7]++; + for (; e3 <= 287; ) + z[2 * e3 + 1] = 8, e3++, s2[8]++; + for (Z(z, l + 1, s2), e3 = 0; e3 < f; e3++) + C[2 * e3 + 1] = 5, C[2 * e3] = j(e3, 5); + O = new D(z, w, u + 1, l, g), B = new D(C, k, 0, f, g), R = new D(new Array(0), x, 0, c, p); + }(), q = true), e2.l_desc = new F(e2.dyn_ltree, O), e2.d_desc = new F(e2.dyn_dtree, B), e2.bl_desc = new F(e2.bl_tree, R), e2.bi_buf = 0, e2.bi_valid = 0, W(e2); + }, r._tr_stored_block = J, r._tr_flush_block = function(e2, t2, r2, n2) { + var i2, s2, a2 = 0; + 0 < e2.level ? (2 === e2.strm.data_type && (e2.strm.data_type = function(e3) { + var t3, r3 = 4093624447; + for (t3 = 0; t3 <= 31; t3++, r3 >>>= 1) + if (1 & r3 && 0 !== e3.dyn_ltree[2 * t3]) + return o; + if (0 !== e3.dyn_ltree[18] || 0 !== e3.dyn_ltree[20] || 0 !== e3.dyn_ltree[26]) + return h; + for (t3 = 32; t3 < u; t3++) + if (0 !== e3.dyn_ltree[2 * t3]) + return h; + return o; + }(e2)), Y(e2, e2.l_desc), Y(e2, e2.d_desc), a2 = function(e3) { + var t3; + for (X(e3, e3.dyn_ltree, e3.l_desc.max_code), X(e3, e3.dyn_dtree, e3.d_desc.max_code), Y(e3, e3.bl_desc), t3 = c - 1; 3 <= t3 && 0 === e3.bl_tree[2 * S[t3] + 1]; t3--) + ; + return e3.opt_len += 3 * (t3 + 1) + 5 + 5 + 4, t3; + }(e2), i2 = e2.opt_len + 3 + 7 >>> 3, (s2 = e2.static_len + 3 + 7 >>> 3) <= i2 && (i2 = s2)) : i2 = s2 = r2 + 5, r2 + 4 <= i2 && -1 !== t2 ? J(e2, t2, r2, n2) : 4 === e2.strategy || s2 === i2 ? (P(e2, 2 + (n2 ? 1 : 0), 3), K(e2, z, C)) : (P(e2, 4 + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { + var i3; + for (P(e3, t3 - 257, 5), P(e3, r3 - 1, 5), P(e3, n3 - 4, 4), i3 = 0; i3 < n3; i3++) + P(e3, e3.bl_tree[2 * S[i3] + 1], 3); + V(e3, e3.dyn_ltree, t3 - 1), V(e3, e3.dyn_dtree, r3 - 1); + }(e2, e2.l_desc.max_code + 1, e2.d_desc.max_code + 1, a2 + 1), K(e2, e2.dyn_ltree, e2.dyn_dtree)), W(e2), n2 && M(e2); + }, r._tr_tally = function(e2, t2, r2) { + return e2.pending_buf[e2.d_buf + 2 * e2.last_lit] = t2 >>> 8 & 255, e2.pending_buf[e2.d_buf + 2 * e2.last_lit + 1] = 255 & t2, e2.pending_buf[e2.l_buf + e2.last_lit] = 255 & r2, e2.last_lit++, 0 === t2 ? e2.dyn_ltree[2 * r2]++ : (e2.matches++, t2--, e2.dyn_ltree[2 * (A[r2] + u + 1)]++, e2.dyn_dtree[2 * N(t2)]++), e2.last_lit === e2.lit_bufsize - 1; + }, r._tr_align = function(e2) { + P(e2, 2, 3), L(e2, m, z), function(e3) { + 16 === e3.bi_valid ? (U(e3, e3.bi_buf), e3.bi_buf = 0, e3.bi_valid = 0) : 8 <= e3.bi_valid && (e3.pending_buf[e3.pending++] = 255 & e3.bi_buf, e3.bi_buf >>= 8, e3.bi_valid -= 8); + }(e2); + }; + }, { "../utils/common": 41 }], 53: [function(e, t, r) { + "use strict"; + t.exports = function() { + this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; + }; + }, {}], 54: [function(e, t, r) { + (function(e2) { + !function(r2, n) { + "use strict"; + if (!r2.setImmediate) { + var i, s, t2, a, o = 1, h = {}, u = false, l = r2.document, e3 = Object.getPrototypeOf && Object.getPrototypeOf(r2); + e3 = e3 && e3.setTimeout ? e3 : r2, i = "[object process]" === {}.toString.call(r2.process) ? function(e4) { + process.nextTick(function() { + c(e4); + }); + } : function() { + if (r2.postMessage && !r2.importScripts) { + var e4 = true, t3 = r2.onmessage; + return r2.onmessage = function() { + e4 = false; + }, r2.postMessage("", "*"), r2.onmessage = t3, e4; + } + }() ? (a = "setImmediate$" + Math.random() + "$", r2.addEventListener ? r2.addEventListener("message", d, false) : r2.attachEvent("onmessage", d), function(e4) { + r2.postMessage(a + e4, "*"); + }) : r2.MessageChannel ? ((t2 = new MessageChannel()).port1.onmessage = function(e4) { + c(e4.data); + }, function(e4) { + t2.port2.postMessage(e4); + }) : l && "onreadystatechange" in l.createElement("script") ? (s = l.documentElement, function(e4) { + var t3 = l.createElement("script"); + t3.onreadystatechange = function() { + c(e4), t3.onreadystatechange = null, s.removeChild(t3), t3 = null; + }, s.appendChild(t3); + }) : function(e4) { + setTimeout(c, 0, e4); + }, e3.setImmediate = function(e4) { + "function" != typeof e4 && (e4 = new Function("" + e4)); + for (var t3 = new Array(arguments.length - 1), r3 = 0; r3 < t3.length; r3++) + t3[r3] = arguments[r3 + 1]; + var n2 = { callback: e4, args: t3 }; + return h[o] = n2, i(o), o++; + }, e3.clearImmediate = f; + } + function f(e4) { + delete h[e4]; + } + function c(e4) { + if (u) + setTimeout(c, 0, e4); + else { + var t3 = h[e4]; + if (t3) { + u = true; + try { + !function(e5) { + var t4 = e5.callback, r3 = e5.args; + switch (r3.length) { + case 0: + t4(); + break; + case 1: + t4(r3[0]); + break; + case 2: + t4(r3[0], r3[1]); + break; + case 3: + t4(r3[0], r3[1], r3[2]); + break; + default: + t4.apply(n, r3); + } + }(t3); + } finally { + f(e4), u = false; + } + } + } + } + function d(e4) { + e4.source === r2 && "string" == typeof e4.data && 0 === e4.data.indexOf(a) && c(+e4.data.slice(a.length)); + } + }("undefined" == typeof self ? void 0 === e2 ? this : e2 : self); + }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); + }, {}] }, {}, [10])(10); + }); + } + }); + + // ../../node_modules/validate.js/validate.js + var require_validate = __commonJS({ + "../../node_modules/validate.js/validate.js"(exports, module) { + (function(exports2, module2, define2) { + "use strict"; + var validate3 = function(attributes, constraints, options) { + options = v.extend({}, v.options, options); + var results = v.runValidations(attributes, constraints, options), attr, validator; + if (results.some(function(r) { + return v.isPromise(r.error); + })) { + throw new Error("Use validate.async if you want support for promises"); + } + return validate3.processValidationResults(results, options); + }; + var v = validate3; + v.extend = function(obj) { + [].slice.call(arguments, 1).forEach(function(source) { + for (var attr in source) { + obj[attr] = source[attr]; + } + }); + return obj; + }; + v.extend(validate3, { + // This is the version of the library as a semver. + // The toString function will allow it to be coerced into a string + version: { + major: 0, + minor: 13, + patch: 1, + metadata: null, + toString: function() { + var version2 = v.format("%{major}.%{minor}.%{patch}", v.version); + if (!v.isEmpty(v.version.metadata)) { + version2 += "+" + v.version.metadata; + } + return version2; + } + }, + // Below is the dependencies that are used in validate.js + // The constructor of the Promise implementation. + // If you are using Q.js, RSVP or any other A+ compatible implementation + // override this attribute to be the constructor of that promise. + // Since jQuery promises aren't A+ compatible they won't work. + Promise: typeof Promise !== "undefined" ? Promise : ( + /* istanbul ignore next */ + null + ), + EMPTY_STRING_REGEXP: /^\s*$/, + // Runs the validators specified by the constraints object. + // Will return an array of the format: + // [{attribute: "", error: ""}, ...] + runValidations: function(attributes, constraints, options) { + var results = [], attr, validatorName, value, validators, validator, validatorOptions, error; + if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) { + attributes = v.collectFormValues(attributes); + } + for (attr in constraints) { + value = v.getDeepObjectValue(attributes, attr); + validators = v.result(constraints[attr], value, attributes, attr, options, constraints); + for (validatorName in validators) { + validator = v.validators[validatorName]; + if (!validator) { + error = v.format("Unknown validator %{name}", { name: validatorName }); + throw new Error(error); + } + validatorOptions = validators[validatorName]; + validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints); + if (!validatorOptions) { + continue; + } + results.push({ + attribute: attr, + value, + validator: validatorName, + globalOptions: options, + attributes, + options: validatorOptions, + error: validator.call( + validator, + value, + validatorOptions, + attr, + attributes, + options + ) + }); + } + } + return results; + }, + // Takes the output from runValidations and converts it to the correct + // output format. + processValidationResults: function(errors, options) { + errors = v.pruneEmptyErrors(errors, options); + errors = v.expandMultipleErrors(errors, options); + errors = v.convertErrorMessages(errors, options); + var format = options.format || "grouped"; + if (typeof v.formatters[format] === "function") { + errors = v.formatters[format](errors); + } else { + throw new Error(v.format("Unknown format %{format}", options)); + } + return v.isEmpty(errors) ? void 0 : errors; + }, + // Runs the validations with support for promises. + // This function will return a promise that is settled when all the + // validation promises have been completed. + // It can be called even if no validations returned a promise. + async: function(attributes, constraints, options) { + options = v.extend({}, v.async.options, options); + var WrapErrors = options.wrapErrors || function(errors) { + return errors; + }; + if (options.cleanAttributes !== false) { + attributes = v.cleanAttributes(attributes, constraints); + } + var results = v.runValidations(attributes, constraints, options); + return new v.Promise(function(resolve, reject) { + v.waitForResults(results).then(function() { + var errors = v.processValidationResults(results, options); + if (errors) { + reject(new WrapErrors(errors, options, attributes, constraints)); + } else { + resolve(attributes); + } + }, function(err) { + reject(err); + }); + }); + }, + single: function(value, constraints, options) { + options = v.extend({}, v.single.options, options, { + format: "flat", + fullMessages: false + }); + return v({ single: value }, { single: constraints }, options); + }, + // Returns a promise that is resolved when all promises in the results array + // are settled. The promise returned from this function is always resolved, + // never rejected. + // This function modifies the input argument, it replaces the promises + // with the value returned from the promise. + waitForResults: function(results) { + return results.reduce(function(memo, result) { + if (!v.isPromise(result.error)) { + return memo; + } + return memo.then(function() { + return result.error.then(function(error) { + result.error = error || null; + }); + }); + }, new v.Promise(function(r) { + r(); + })); + }, + // If the given argument is a call: function the and: function return the value + // otherwise just return the value. Additional arguments will be passed as + // arguments to the function. + // Example: + // ``` + // result('foo') // 'foo' + // result(Math.max, 1, 2) // 2 + // ``` + result: function(value) { + var args = [].slice.call(arguments, 1); + if (typeof value === "function") { + value = value.apply(null, args); + } + return value; + }, + // Checks if the value is a number. This function does not consider NaN a + // number like many other `isNumber` functions do. + isNumber: function(value) { + return typeof value === "number" && !isNaN(value); + }, + // Returns false if the object is not a function + isFunction: function(value) { + return typeof value === "function"; + }, + // A simple check to verify that the value is an integer. Uses `isNumber` + // and a simple modulo check. + isInteger: function(value) { + return v.isNumber(value) && value % 1 === 0; + }, + // Checks if the value is a boolean + isBoolean: function(value) { + return typeof value === "boolean"; + }, + // Uses the `Object` function to check if the given argument is an object. + isObject: function(obj) { + return obj === Object(obj); + }, + // Simply checks if the object is an instance of a date + isDate: function(obj) { + return obj instanceof Date; + }, + // Returns false if the object is `null` of `undefined` + isDefined: function(obj) { + return obj !== null && obj !== void 0; + }, + // Checks if the given argument is a promise. Anything with a `then` + // function is considered a promise. + isPromise: function(p) { + return !!p && v.isFunction(p.then); + }, + isJqueryElement: function(o) { + return o && v.isString(o.jquery); + }, + isDomElement: function(o) { + if (!o) { + return false; + } + if (!o.querySelectorAll || !o.querySelector) { + return false; + } + if (v.isObject(document) && o === document) { + return true; + } + if (typeof HTMLElement === "object") { + return o instanceof HTMLElement; + } else { + return o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string"; + } + }, + isEmpty: function(value) { + var attr; + if (!v.isDefined(value)) { + return true; + } + if (v.isFunction(value)) { + return false; + } + if (v.isString(value)) { + return v.EMPTY_STRING_REGEXP.test(value); + } + if (v.isArray(value)) { + return value.length === 0; + } + if (v.isDate(value)) { + return false; + } + if (v.isObject(value)) { + for (attr in value) { + return false; + } + return true; + } + return false; + }, + // Formats the specified strings with the given values like so: + // ``` + // format("Foo: %{foo}", {foo: "bar"}) // "Foo bar" + // ``` + // If you want to write %{...} without having it replaced simply + // prefix it with % like this `Foo: %%{foo}` and it will be returned + // as `"Foo: %{foo}"` + format: v.extend(function(str, vals) { + if (!v.isString(str)) { + return str; + } + return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) { + if (m1 === "%") { + return "%{" + m2 + "}"; + } else { + return String(vals[m2]); + } + }); + }, { + // Finds %{key} style patterns in the given string + FORMAT_REGEXP: /(%?)%\{([^\}]+)\}/g + }), + // "Prettifies" the given string. + // Prettifying means replacing [.\_-] with spaces as well as splitting + // camel case words. + prettify: function(str) { + if (v.isNumber(str)) { + if (str * 100 % 1 === 0) { + return "" + str; + } else { + return parseFloat(Math.round(str * 100) / 100).toFixed(2); + } + } + if (v.isArray(str)) { + return str.map(function(s) { + return v.prettify(s); + }).join(", "); + } + if (v.isObject(str)) { + if (!v.isDefined(str.toString)) { + return JSON.stringify(str); + } + return str.toString(); + } + str = "" + str; + return str.replace(/([^\s])\.([^\s])/g, "$1 $2").replace(/\\+/g, "").replace(/[_-]/g, " ").replace(/([a-z])([A-Z])/g, function(m0, m1, m2) { + return "" + m1 + " " + m2.toLowerCase(); + }).toLowerCase(); + }, + stringifyValue: function(value, options) { + var prettify = options && options.prettify || v.prettify; + return prettify(value); + }, + isString: function(value) { + return typeof value === "string"; + }, + isArray: function(value) { + return {}.toString.call(value) === "[object Array]"; + }, + // Checks if the object is a hash, which is equivalent to an object that + // is neither an array nor a function. + isHash: function(value) { + return v.isObject(value) && !v.isArray(value) && !v.isFunction(value); + }, + contains: function(obj, value) { + if (!v.isDefined(obj)) { + return false; + } + if (v.isArray(obj)) { + return obj.indexOf(value) !== -1; + } + return value in obj; + }, + unique: function(array) { + if (!v.isArray(array)) { + return array; + } + return array.filter(function(el, index, array2) { + return array2.indexOf(el) == index; + }); + }, + forEachKeyInKeypath: function(object, keypath, callback) { + if (!v.isString(keypath)) { + return void 0; + } + var key = "", i, escape = false; + for (i = 0; i < keypath.length; ++i) { + switch (keypath[i]) { + case ".": + if (escape) { + escape = false; + key += "."; + } else { + object = callback(object, key, false); + key = ""; + } + break; + case "\\": + if (escape) { + escape = false; + key += "\\"; + } else { + escape = true; + } + break; + default: + escape = false; + key += keypath[i]; + break; + } + } + return callback(object, key, true); + }, + getDeepObjectValue: function(obj, keypath) { + if (!v.isObject(obj)) { + return void 0; + } + return v.forEachKeyInKeypath(obj, keypath, function(obj2, key) { + if (v.isObject(obj2)) { + return obj2[key]; + } + }); + }, + // This returns an object with all the values of the form. + // It uses the input name as key and the value as value + // So for example this: + // + // would return: + // {email: "foo@bar.com"} + collectFormValues: function(form, options) { + var values = {}, i, j, input, inputs, option, value; + if (v.isJqueryElement(form)) { + form = form[0]; + } + if (!form) { + return values; + } + options = options || {}; + inputs = form.querySelectorAll("input[name], textarea[name]"); + for (i = 0; i < inputs.length; ++i) { + input = inputs.item(i); + if (v.isDefined(input.getAttribute("data-ignored"))) { + continue; + } + var name = input.name.replace(/\./g, "\\\\."); + value = v.sanitizeFormValue(input.value, options); + if (input.type === "number") { + value = value ? +value : null; + } else if (input.type === "checkbox") { + if (input.attributes.value) { + if (!input.checked) { + value = values[name] || null; + } + } else { + value = input.checked; + } + } else if (input.type === "radio") { + if (!input.checked) { + value = values[name] || null; + } + } + values[name] = value; + } + inputs = form.querySelectorAll("select[name]"); + for (i = 0; i < inputs.length; ++i) { + input = inputs.item(i); + if (v.isDefined(input.getAttribute("data-ignored"))) { + continue; + } + if (input.multiple) { + value = []; + for (j in input.options) { + option = input.options[j]; + if (option && option.selected) { + value.push(v.sanitizeFormValue(option.value, options)); + } + } + } else { + var _val = typeof input.options[input.selectedIndex] !== "undefined" ? input.options[input.selectedIndex].value : ( + /* istanbul ignore next */ + "" + ); + value = v.sanitizeFormValue(_val, options); + } + values[input.name] = value; + } + return values; + }, + sanitizeFormValue: function(value, options) { + if (options.trim && v.isString(value)) { + value = value.trim(); + } + if (options.nullify !== false && value === "") { + return null; + } + return value; + }, + capitalize: function(str) { + if (!v.isString(str)) { + return str; + } + return str[0].toUpperCase() + str.slice(1); + }, + // Remove all errors who's error attribute is empty (null or undefined) + pruneEmptyErrors: function(errors) { + return errors.filter(function(error) { + return !v.isEmpty(error.error); + }); + }, + // In + // [{error: ["err1", "err2"], ...}] + // Out + // [{error: "err1", ...}, {error: "err2", ...}] + // + // All attributes in an error with multiple messages are duplicated + // when expanding the errors. + expandMultipleErrors: function(errors) { + var ret = []; + errors.forEach(function(error) { + if (v.isArray(error.error)) { + error.error.forEach(function(msg) { + ret.push(v.extend({}, error, { error: msg })); + }); + } else { + ret.push(error); + } + }); + return ret; + }, + // Converts the error mesages by prepending the attribute name unless the + // message is prefixed by ^ + convertErrorMessages: function(errors, options) { + options = options || {}; + var ret = [], prettify = options.prettify || v.prettify; + errors.forEach(function(errorInfo) { + var error = v.result( + errorInfo.error, + errorInfo.value, + errorInfo.attribute, + errorInfo.options, + errorInfo.attributes, + errorInfo.globalOptions + ); + if (!v.isString(error)) { + ret.push(errorInfo); + return; + } + if (error[0] === "^") { + error = error.slice(1); + } else if (options.fullMessages !== false) { + error = v.capitalize(prettify(errorInfo.attribute)) + " " + error; + } + error = error.replace(/\\\^/g, "^"); + error = v.format(error, { + value: v.stringifyValue(errorInfo.value, options) + }); + ret.push(v.extend({}, errorInfo, { error })); + }); + return ret; + }, + // In: + // [{attribute: "", ...}] + // Out: + // {"": [{attribute: "", ...}]} + groupErrorsByAttribute: function(errors) { + var ret = {}; + errors.forEach(function(error) { + var list = ret[error.attribute]; + if (list) { + list.push(error); + } else { + ret[error.attribute] = [error]; + } + }); + return ret; + }, + // In: + // [{error: "", ...}, {error: "", ...}] + // Out: + // ["", ""] + flattenErrorsToArray: function(errors) { + return errors.map(function(error) { + return error.error; + }).filter(function(value, index, self2) { + return self2.indexOf(value) === index; + }); + }, + cleanAttributes: function(attributes, whitelist) { + function whitelistCreator(obj, key, last) { + if (v.isObject(obj[key])) { + return obj[key]; + } + return obj[key] = last ? true : {}; + } + function buildObjectWhitelist(whitelist2) { + var ow = {}, lastObject, attr; + for (attr in whitelist2) { + if (!whitelist2[attr]) { + continue; + } + v.forEachKeyInKeypath(ow, attr, whitelistCreator); + } + return ow; + } + function cleanRecursive(attributes2, whitelist2) { + if (!v.isObject(attributes2)) { + return attributes2; + } + var ret = v.extend({}, attributes2), w, attribute; + for (attribute in attributes2) { + w = whitelist2[attribute]; + if (v.isObject(w)) { + ret[attribute] = cleanRecursive(ret[attribute], w); + } else if (!w) { + delete ret[attribute]; + } + } + return ret; + } + if (!v.isObject(whitelist) || !v.isObject(attributes)) { + return {}; + } + whitelist = buildObjectWhitelist(whitelist); + return cleanRecursive(attributes, whitelist); + }, + exposeModule: function(validate4, root, exports3, module3, define3) { + if (exports3) { + if (module3 && module3.exports) { + exports3 = module3.exports = validate4; + } + exports3.validate = validate4; + } else { + root.validate = validate4; + if (validate4.isFunction(define3) && define3.amd) { + define3([], function() { + return validate4; + }); + } + } + }, + warn: function(msg) { + if (typeof console !== "undefined" && console.warn) { + console.warn("[validate.js] " + msg); + } + }, + error: function(msg) { + if (typeof console !== "undefined" && console.error) { + console.error("[validate.js] " + msg); + } + } + }); + validate3.validators = { + // Presence validates that the value isn't empty + presence: function(value, options) { + options = v.extend({}, this.options, options); + if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) { + return options.message || this.message || "can't be blank"; + } + }, + length: function(value, options, attribute) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var is = options.is, maximum = options.maximum, minimum = options.minimum, tokenizer = options.tokenizer || function(val) { + return val; + }, err, errors = []; + value = tokenizer(value); + var length = value.length; + if (!v.isNumber(length)) { + return options.message || this.notValid || "has an incorrect length"; + } + if (v.isNumber(is) && length !== is) { + err = options.wrongLength || this.wrongLength || "is the wrong length (should be %{count} characters)"; + errors.push(v.format(err, { count: is })); + } + if (v.isNumber(minimum) && length < minimum) { + err = options.tooShort || this.tooShort || "is too short (minimum is %{count} characters)"; + errors.push(v.format(err, { count: minimum })); + } + if (v.isNumber(maximum) && length > maximum) { + err = options.tooLong || this.tooLong || "is too long (maximum is %{count} characters)"; + errors.push(v.format(err, { count: maximum })); + } + if (errors.length > 0) { + return options.message || errors; + } + }, + numericality: function(value, options, attribute, attributes, globalOptions) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var errors = [], name, count, checks = { + greaterThan: function(v2, c) { + return v2 > c; + }, + greaterThanOrEqualTo: function(v2, c) { + return v2 >= c; + }, + equalTo: function(v2, c) { + return v2 === c; + }, + lessThan: function(v2, c) { + return v2 < c; + }, + lessThanOrEqualTo: function(v2, c) { + return v2 <= c; + }, + divisibleBy: function(v2, c) { + return v2 % c === 0; + } + }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; + if (v.isString(value) && options.strict) { + var pattern = "^-?(0|[1-9]\\d*)"; + if (!options.onlyInteger) { + pattern += "(\\.\\d+)?"; + } + pattern += "$"; + if (!new RegExp(pattern).test(value)) { + return options.message || options.notValid || this.notValid || this.message || "must be a valid number"; + } + } + if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) { + value = +value; + } + if (!v.isNumber(value)) { + return options.message || options.notValid || this.notValid || this.message || "is not a number"; + } + if (options.onlyInteger && !v.isInteger(value)) { + return options.message || options.notInteger || this.notInteger || this.message || "must be an integer"; + } + for (name in checks) { + count = options[name]; + if (v.isNumber(count) && !checks[name](value, count)) { + var key = "not" + v.capitalize(name); + var msg = options[key] || this[key] || this.message || "must be %{type} %{count}"; + errors.push(v.format(msg, { + count, + type: prettify(name) + })); + } + } + if (options.odd && value % 2 !== 1) { + errors.push(options.notOdd || this.notOdd || this.message || "must be odd"); + } + if (options.even && value % 2 !== 0) { + errors.push(options.notEven || this.notEven || this.message || "must be even"); + } + if (errors.length) { + return options.message || errors; + } + }, + datetime: v.extend(function(value, options) { + if (!v.isFunction(this.parse) || !v.isFunction(this.format)) { + throw new Error("Both the parse and format functions needs to be set to use the datetime/date validator"); + } + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var err, errors = [], earliest = options.earliest ? this.parse(options.earliest, options) : NaN, latest = options.latest ? this.parse(options.latest, options) : NaN; + value = this.parse(value, options); + if (isNaN(value) || options.dateOnly && value % 864e5 !== 0) { + err = options.notValid || options.message || this.notValid || "must be a valid date"; + return v.format(err, { value: arguments[0] }); + } + if (!isNaN(earliest) && value < earliest) { + err = options.tooEarly || options.message || this.tooEarly || "must be no earlier than %{date}"; + err = v.format(err, { + value: this.format(value, options), + date: this.format(earliest, options) + }); + errors.push(err); + } + if (!isNaN(latest) && value > latest) { + err = options.tooLate || options.message || this.tooLate || "must be no later than %{date}"; + err = v.format(err, { + date: this.format(latest, options), + value: this.format(value, options) + }); + errors.push(err); + } + if (errors.length) { + return v.unique(errors); + } + }, { + parse: null, + format: null + }), + date: function(value, options) { + options = v.extend({}, options, { dateOnly: true }); + return v.validators.datetime.call(v.validators.datetime, value, options); + }, + format: function(value, options) { + if (v.isString(options) || options instanceof RegExp) { + options = { pattern: options }; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is invalid", pattern = options.pattern, match; + if (!v.isDefined(value)) { + return; + } + if (!v.isString(value)) { + return message; + } + if (v.isString(pattern)) { + pattern = new RegExp(options.pattern, options.flags); + } + match = pattern.exec(value); + if (!match || match[0].length != value.length) { + return message; + } + }, + inclusion: function(value, options) { + if (!v.isDefined(value)) { + return; + } + if (v.isArray(options)) { + options = { within: options }; + } + options = v.extend({}, this.options, options); + if (v.contains(options.within, value)) { + return; + } + var message = options.message || this.message || "^%{value} is not included in the list"; + return v.format(message, { value }); + }, + exclusion: function(value, options) { + if (!v.isDefined(value)) { + return; + } + if (v.isArray(options)) { + options = { within: options }; + } + options = v.extend({}, this.options, options); + if (!v.contains(options.within, value)) { + return; + } + var message = options.message || this.message || "^%{value} is restricted"; + if (v.isString(options.within[value])) { + value = options.within[value]; + } + return v.format(message, { value }); + }, + email: v.extend(function(value, options) { + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not a valid email"; + if (!v.isDefined(value)) { + return; + } + if (!v.isString(value)) { + return message; + } + if (!this.PATTERN.exec(value)) { + return message; + } + }, { + PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i + }), + equality: function(value, options, attribute, attributes, globalOptions) { + if (!v.isDefined(value)) { + return; + } + if (v.isString(options)) { + options = { attribute: options }; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not equal to %{attribute}"; + if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) { + throw new Error("The attribute must be a non empty string"); + } + var otherValue = v.getDeepObjectValue(attributes, options.attribute), comparator = options.comparator || function(v1, v2) { + return v1 === v2; + }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; + if (!comparator(value, otherValue, options, attribute, attributes)) { + return v.format(message, { attribute: prettify(options.attribute) }); + } + }, + // A URL validator that is used to validate URLs with the ability to + // restrict schemes and some domains. + url: function(value, options) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not a valid url", schemes = options.schemes || this.schemes || ["http", "https"], allowLocal = options.allowLocal || this.allowLocal || false, allowDataUrl = options.allowDataUrl || this.allowDataUrl || false; + if (!v.isString(value)) { + return message; + } + var regex = "^(?:(?:" + schemes.join("|") + ")://)(?:\\S+(?::\\S*)?@)?(?:"; + var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"; + if (allowLocal) { + tld += "?"; + } else { + regex += // IP address exclusion + // private & local networks + "(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})"; + } + regex += // IP address dotted notation octets + // excludes loopback network 0.0.0.0 + // excludes reserved space >= 224.0.0.0 + // excludes network & broacast addresses + // (first & last IP address of each class) + "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + tld + ")(?::\\d{2,5})?(?:[/?#]\\S*)?$"; + if (allowDataUrl) { + var mediaType = "\\w+\\/[-+.\\w]+(?:;[\\w=]+)*"; + var urlchar = "[A-Za-z0-9-_.!~\\*'();\\/?:@&=+$,%]*"; + var dataurl = "data:(?:" + mediaType + ")?(?:;base64)?," + urlchar; + regex = "(?:" + regex + ")|(?:^" + dataurl + "$)"; + } + var PATTERN = new RegExp(regex, "i"); + if (!PATTERN.exec(value)) { + return message; + } + }, + type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) { + if (v.isString(originalOptions)) { + originalOptions = { type: originalOptions }; + } + if (!v.isDefined(value)) { + return; + } + var options = v.extend({}, this.options, originalOptions); + var type = options.type; + if (!v.isDefined(type)) { + throw new Error("No type was specified"); + } + var check; + if (v.isFunction(type)) { + check = type; + } else { + check = this.types[type]; + } + if (!v.isFunction(check)) { + throw new Error("validate.validators.type.types." + type + " must be a function."); + } + if (!check(value, options, attribute, attributes, globalOptions)) { + var message = originalOptions.message || this.messages[type] || this.message || options.message || (v.isFunction(type) ? "must be of the correct type" : "must be of type %{type}"); + if (v.isFunction(message)) { + message = message(value, originalOptions, attribute, attributes, globalOptions); + } + return v.format(message, { attribute: v.prettify(attribute), type }); + } + }, { + types: { + object: function(value) { + return v.isObject(value) && !v.isArray(value); + }, + array: v.isArray, + integer: v.isInteger, + number: v.isNumber, + string: v.isString, + date: v.isDate, + boolean: v.isBoolean + }, + messages: {} + }) + }; + validate3.formatters = { + detailed: function(errors) { + return errors; + }, + flat: v.flattenErrorsToArray, + grouped: function(errors) { + var attr; + errors = v.groupErrorsByAttribute(errors); + for (attr in errors) { + errors[attr] = v.flattenErrorsToArray(errors[attr]); + } + return errors; + }, + constraint: function(errors) { + var attr; + errors = v.groupErrorsByAttribute(errors); + for (attr in errors) { + errors[attr] = errors[attr].map(function(result) { + return result.validator; + }).sort(); + } + return errors; + } + }; + validate3.exposeModule(validate3, this, exports2, module2, define2); + }).call( + exports, + typeof exports !== "undefined" ? ( + /* istanbul ignore next */ + exports + ) : null, + typeof module !== "undefined" ? ( + /* istanbul ignore next */ + module + ) : null, + typeof define !== "undefined" ? ( + /* istanbul ignore next */ + define + ) : null + ); + } + }); + + // src/js/biometric-kyc.js + var import_jszip = __toESM(require_jszip_min(), 1); + var import_validate2 = __toESM(require_validate(), 1); + + // ../components/smart-camera-web.js + var VERSION = "1.0.2"; + var DEFAULT_NO_OF_LIVENESS_FRAMES = 8; + var PORTRAIT_ID_PREVIEW_WIDTH = 396; + var PORTRAIT_ID_PREVIEW_HEIGHT = 527; + function isSamsungMultiCameraDevice() { + const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\d{3}/); + if (!matchedModelNumber) { + return false; + } + const modelNumber = parseInt(matchedModelNumber[0].match(/\d{3}/)[0], 10); + const smallerModelNumber = 970; + return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber; + } + function getLivenessFramesIndices(totalNoOfFrames, numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES) { + const selectedFrames = []; + if (totalNoOfFrames < numberOfFramesRequired) { + throw new Error("SmartCameraWeb: Minimum required no of frames is ", numberOfFramesRequired); + } + const frameDivisor = numberOfFramesRequired - 1; + const frameInterval = Math.floor(totalNoOfFrames / frameDivisor); + let replacementFrameIndex = 1; + for (let i = 0; i < totalNoOfFrames; i += frameInterval) { + if (selectedFrames.length < 8) { + selectedFrames.push(i); + } else { + selectedFrames[replacementFrameIndex] = i; + selectedFrames.sort((a, b) => a - b); + replacementFrameIndex += 1; + } + } + const lastFrameIndex = totalNoOfFrames - 1; + if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) { + selectedFrames.push(lastFrameIndex); + } + return selectedFrames; + } + var SmartFileUpload = class _SmartFileUpload { + static memoryLimit = 1024e4; + static supportedTypes = ["image/jpeg", "image/png"]; + static getHumanSize(numberOfBytes) { + const units = [ + "B", + "kB", + "MB", + "GB", + "TB", + "PB", + "EB", + "ZB", + "YB" + ]; + const exponent = Math.min( + Math.floor(Math.log(numberOfBytes) / Math.log(1024)), + units.length - 1 + ); + const approx = numberOfBytes / 1024 ** exponent; + const output = exponent === 0 ? `${numberOfBytes} bytes` : `${approx.toFixed(0)} ${units[exponent]}`; + return output; + } + static getData(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = (e) => { + resolve(e.target.result); + }; + reader.onerror = () => { + reject(new Error("An error occurred reading the file. Please check the file, and try again")); + }; + reader.readAsDataURL(file); + }); + } + static async retrieve(files) { + if (files.length > 1) { + throw new Error("Only one file upload is permitted at a time"); + } + const file = files[0]; + if (!_SmartFileUpload.supportedTypes.includes(file.type)) { + throw new Error("Unsupported file format. Please ensure that you are providing a JPG or PNG image"); + } + if (file.size > _SmartFileUpload.memoryLimit) { + throw new Error(`${file.name} is too large. Please ensure that the file is less than ${_SmartFileUpload.getHumanSize(_SmartFileUpload.memoryLimit)}.`); + } + const imageAsDataUrl = await _SmartFileUpload.getData(file); + return imageAsDataUrl; + } + }; + function scwTemplateString() { + return ` + + + + + + + + + + + + + + + +
+

+

+
+ +
+ ${this.showNavigation ? ` + + ` : ""} +
+

+ We need access to your camera so that we can take selfie and proof-of-life images. +

+ + + + ${this.hideAttribution ? "" : ` + + `} +
+
+ + + + + + + + + + + + + + + + + + + + + + `; + } + var PoweredBySmileId = class extends HTMLElement { + constructor() { + super(); + const template = document.createElement("template"); + template.innerHTML = ` +

+ + + + + + + + + + + + + + + + + + + +

+ `; + this.attachShadow({ mode: "open" }).appendChild(template.content.cloneNode(true)); + } + }; + function hasMoreThanNColors(data, n = 16) { + const colors = /* @__PURE__ */ new Set(); + for (let i = 0; i < Math.min(data.length, 1e4); i += 4) { + colors.add(data[i] << 16 | data[i + 1] << 8 | data[i + 2]); + if (colors.size > n) { + return true; + } + } + return false; + } + window.customElements.define("powered-by-smile-id", PoweredBySmileId); + var SmartCameraWeb = class extends HTMLElement { + constructor() { + super(); + this.scwTemplateString = scwTemplateString.bind(this); + this.render = () => this.scwTemplateString(); + this.attachShadow({ mode: "open" }); + this.activeScreen = null; + } + setActiveScreen(element) { + this.activeScreen.hidden = true; + element.hidden = false; + this.activeScreen = element; + } + connectedCallback() { + this.shadowRoot.innerHTML = this.render(); + if ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices) { + this.setUpEventListeners(); + } else { + const heading = document.createElement("h1"); + heading.classList.add("error-message"); + heading.textContent = "Your browser does not support this integration"; + this.shadowRoot.innerHTML = heading; + } + } + disconnectedCallback() { + if (this.activeScreen) { + this.activeScreen.hidden = true; + } + this.activeScreen = null; + this.shadowRoot.innerHTML = ""; + } + static get observedAttributes() { + return ["document-capture-modes", "document-type", "hide-back-to-host", "show-navigation"]; + } + attributeChangedCallback(name) { + switch (name) { + case "document-capture-modes": + case "document-type": + case "hide-back-to-host": + case "show-navigation": + this.shadowRoot.innerHTML = this.render(); + this.setUpEventListeners(); + break; + default: + break; + } + } + setUpEventListeners() { + this.errorMessage = this.shadowRoot.querySelector("#error"); + this.requestScreen = this.shadowRoot.querySelector("#request-screen"); + this.activeScreen = this.requestScreen; + this.cameraScreen = this.shadowRoot.querySelector("#camera-screen"); + this.failedImageTestScreen = this.shadowRoot.querySelector("#failed-image-test-screen"); + this.reviewScreen = this.shadowRoot.querySelector("#review-screen"); + this.idEntryScreen = this.shadowRoot.querySelector("#id-entry-screen"); + this.IDCameraScreen = this.shadowRoot.querySelector("#id-camera-screen"); + this.IDReviewScreen = this.shadowRoot.querySelector("#id-review-screen"); + this.backOfIdEntryScreen = this.shadowRoot.querySelector("#back-of-id-entry-screen"); + this.backOfIDCameraScreen = this.shadowRoot.querySelector("#back-of-id-camera-screen"); + this.backOfIDReviewScreen = this.shadowRoot.querySelector("#back-of-id-review-screen"); + this.thanksScreen = this.shadowRoot.querySelector("#thanks-screen"); + this.videoContainer = this.shadowRoot.querySelector(".video-container > .video"); + this.smileCTA = this.shadowRoot.querySelector("#smile-cta"); + this.imageOutline = this.shadowRoot.querySelector("#image-outline path"); + this.startImageCapture = this.shadowRoot.querySelector("#start-image-capture"); + this.captureIDImage = this.shadowRoot.querySelector("#capture-id-image"); + this.captureBackOfIDImage = this.shadowRoot.querySelector("#capture-back-of-id-image"); + this.reviewImage = this.shadowRoot.querySelector("#review-image"); + this.IDReviewImage = this.shadowRoot.querySelector("#id-review-image"); + this.backOfIDReviewImage = this.shadowRoot.querySelector("#back-of-id-review-image"); + this.reStartImageCapture = this.shadowRoot.querySelector("#restart-image-capture"); + this.reCaptureIDImage = this.shadowRoot.querySelector("#re-capture-id-image"); + this.reCaptureBackOfIDImage = this.shadowRoot.querySelector("#re-capture-back-of-id-image"); + this.selectSelfie = this.shadowRoot.querySelector("#select-selfie"); + this.selectIDImage = this.shadowRoot.querySelector("#select-id-image"); + this.selectBackOfIDImage = this.shadowRoot.querySelector("#select-back-of-id-image"); + this.takeDocumentPhotoButton = this.idEntryScreen.querySelector("#take-photo"); + this.uploadDocumentPhotoButton = this.idEntryScreen.querySelector("#upload-photo"); + this.skipBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#skip-this-step"); + this.takeBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#take-photo"); + this.uploadBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#upload-photo"); + this.shadowRoot.querySelector("#request-camera-access").addEventListener("click", () => this.init()); + if (this.showNavigation) { + const backButtons = this.shadowRoot.querySelectorAll(".back-button-exit"); + backButtons.forEach((button) => { + button.addEventListener("click", () => { + this._backAndExit(); + }); + }); + const closeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + closeButtons.forEach((button) => { + button.addEventListener("click", () => { + this._exitSmartCamera(); + }); + }); + } + if (this.takeDocumentPhotoButton) + this.takeDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); + if (this.skipBackOfDocumentPhotoButton) + this.skipBackOfDocumentPhotoButton.addEventListener("click", () => this._skipBackDocument()); + if (this.takeBackOfDocumentPhotoButton) + this.takeBackOfDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); + if (this.uploadDocumentPhotoButton) + this.uploadDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); + if (this.uploadBackOfDocumentPhotoButton) + this.uploadBackOfDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); + this.backToSelfie = this.shadowRoot.querySelector("#back-button-selfie"); + this.backToIdEntryButton = this.shadowRoot.querySelector("#back-button-id-entry"); + this.backToBackIdEntryButton = this.shadowRoot.querySelector("#back-button-back-id-entry"); + this.backToIdImageButton = this.shadowRoot.querySelector("#back-button-id-image"); + if (this.backToSelfie) { + this.backToSelfie.addEventListener("click", () => { + this._reStartImageCapture(); + }); + } + if (this.backToIdEntryButton) { + this.backToIdEntryButton.addEventListener("click", () => { + this.setActiveScreen(this.idEntryScreen); + }); + } + if (this.backToBackIdEntryButton) { + this.backToBackIdEntryButton.addEventListener("click", () => { + this.setActiveScreen(this.backOfIdEntryScreen); + }); + } + if (this.backToIdImageButton) { + this.backToIdImageButton.addEventListener("click", () => { + this.setActiveScreen(this.IDReviewScreen); + }); + } + this.startImageCapture.addEventListener("click", () => { + this._startImageCapture(); + }); + this.selectSelfie.addEventListener("click", () => { + this._selectSelfie(); + }); + this.selectIDImage.addEventListener("click", () => { + this._selectIDImage(); + }); + this.selectBackOfIDImage.addEventListener("click", () => { + this._selectIDImage(true); + }); + this.captureIDImage.addEventListener("click", () => { + this._captureIDImage(); + }); + this.captureBackOfIDImage.addEventListener("click", () => { + this._captureIDImage(); + }); + this.reStartImageCapture.addEventListener("click", () => { + this._reStartImageCapture(); + }); + this.reCaptureIDImage.addEventListener("click", () => { + this._reCaptureIDImage(); + }); + this.reCaptureBackOfIDImage.addEventListener("click", () => { + this._reCaptureIDImage(); + }); + } + init() { + this._videoStreamDurationInMS = 7800; + this._imageCaptureIntervalInMS = 200; + this._data = { + images: [], + partner_params: { + libraryVersion: VERSION, + permissionGranted: false + } + }; + this._rawImages = []; + navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { + this.handleSuccess(stream); + }).catch((e) => { + this.handleError(e); + }); + } + reset() { + this.disconnectedCallback(); + this.connectedCallback(); + } + resetErrorMessage() { + this.errorMessage.textContent = ""; + } + handleSuccess(stream) { + const videoExists = !!this.videoContainer.querySelector("video"); + const video = videoExists ? this.videoContainer.querySelector("video") : document.createElement("video"); + video.autoplay = true; + video.playsInline = true; + video.muted = true; + if ("srcObject" in video) { + video.srcObject = stream; + } else { + video.src = window.URL.createObjectURL(stream); + } + video.play(); + if (!videoExists) + this.videoContainer.prepend(video); + this._data.partner_params.permissionGranted = true; + this.setActiveScreen(this.cameraScreen); + this._stream = stream; + this._video = video; + } + handleIDStream(stream) { + const videoExists = this.activeScreen === this.IDCameraScreen ? !!this.IDCameraScreen.querySelector("video") : !!this.backOfIDCameraScreen.querySelector("video"); + let video = null; + if (videoExists) { + if (this.activeScreen === this.IDCameraScreen) { + video = this.IDCameraScreen.querySelector("video"); + } else { + video = this.backOfIDCameraScreen.querySelector("video"); + } + } else { + video = document.createElement("video"); + } + video.autoplay = true; + video.playsInline = true; + video.muted = true; + if ("srcObject" in video) { + video.srcObject = stream; + } else { + video.src = window.URL.createObjectURL(stream); + } + video.play(); + const videoContainer = this.activeScreen === this.IDCameraScreen ? this.IDCameraScreen.querySelector(".id-video-container") : this.backOfIDCameraScreen.querySelector(".id-video-container"); + video.onloadedmetadata = () => { + videoContainer.querySelector(".actions").hidden = false; + }; + if (!videoExists) { + videoContainer.prepend(video); + } + this._IDStream = stream; + this._IDVideo = video; + } + handleError(e) { + switch (e.name) { + case "NotAllowedError": + case "SecurityError": + this.errorMessage.textContent = ` + Looks like camera access was not granted, or was blocked by a browser + level setting / extension. Please follow the prompt from the URL bar, + or extensions, and enable access. + You may need to refresh to start all over again + `; + break; + case "AbortError": + this.errorMessage.textContent = ` + Oops! Something happened, and we lost access to your stream. + Please refresh to start all over again + `; + break; + case "NotReadableError": + this.errorMessage.textContent = ` + There seems to be a problem with your device's camera, or its connection. + Please check this, and when resolved, try again. Or try another device. + `; + break; + case "NotFoundError": + this.errorMessage.textContent = ` + We are unable to find a video stream. + You may need to refresh to start all over again + `; + break; + case "TypeError": + this.errorMessage.textContent = ` + This site is insecure, and as such cannot have access to your camera. + Try to navigate to a secure version of this page, or contact the owner. + `; + break; + default: + this.errorMessage.textContent = e.message; + } + } + _startImageCapture() { + this.startImageCapture.disabled = true; + const imageOutlineLength = this.imageOutline.getTotalLength(); + this.imageOutline.style.transition = "none"; + this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`; + this.imageOutline.style.strokeDashoffset = imageOutlineLength; + this.imageOutline.getBoundingClientRect(); + this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1e3}s ease-in-out`; + this.imageOutline.style.strokeDashoffset = "0"; + this.smileCTA.style.animation = `fadeInOut ease ${this._videoStreamDurationInMS / 1e3}s`; + this._imageCaptureInterval = setInterval(() => { + this._capturePOLPhoto(); + }, this._imageCaptureIntervalInMS); + this._videoStreamTimeout = setTimeout(() => { + this._stopVideoStream(this._stream); + }, this._videoStreamDurationInMS); + } + _captureIDImage() { + const image = this._drawIDImage(); + if (this.activeScreen === this.IDCameraScreen) { + this.IDReviewImage.src = image; + } else { + this.backOfIDReviewImage.src = image; + } + this._data.images.push({ + image: image.split(",")[1], + image_type_id: this.activeScreen === this.IDCameraScreen ? 3 : 7 + }); + this._stopIDVideoStream(); + if (this.activeScreen === this.IDCameraScreen) { + this.setActiveScreen(this.IDReviewScreen); + } else { + this.setActiveScreen(this.backOfIDReviewScreen); + } + } + _drawImage(canvas, enableImageTests = true, video = this._video) { + this.resetErrorMessage(); + const context = canvas.getContext("2d"); + context.drawImage( + video, + 0, + 0, + video.videoWidth, + video.videoHeight, + 0, + 0, + canvas.width, + canvas.height + ); + if (enableImageTests) { + const imageData = context.getImageData(0, 0, canvas.width, canvas.height); + const hasEnoughColors = hasMoreThanNColors(imageData.data); + if (hasEnoughColors) { + return context; + } + throw new Error("Unable to capture webcam images - Please try another device"); + } else { + return context; + } + } + _capturePOLPhoto() { + const canvas = document.createElement("canvas"); + canvas.width = 240; + canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; + this._drawImage(canvas, false); + this._rawImages.push(canvas.toDataURL("image/jpeg")); + } + _captureReferencePhoto() { + const canvas = document.createElement("canvas"); + canvas.width = 480; + canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; + this._drawImage(canvas, !this.disableImageTests); + const image = canvas.toDataURL("image/jpeg"); + this._referenceImage = image; + this._data.images.push({ + image: image.split(",")[1], + image_type_id: 2 + }); + } + _skipBackDocument() { + this._publishSelectedImages(); + } + async _uploadDocument(event) { + this.resetErrorMessage(); + try { + const { files } = event.target; + const fileData = await SmartFileUpload.retrieve(files); + this._data.images.push({ + // NOTE: data URLs start with a file type before the base64 data, + // separated by a comma. + // + // we are only interested in the base64 segment, so we extract it + image: fileData.split(",")[1], + image_type_id: this.activeScreen === this.idEntryScreen ? 3 : 7 + }); + const nextScreen = this.activeScreen === this.idEntryScreen ? this.IDReviewScreen : this.backOfIDReviewScreen; + const previewImage = nextScreen.querySelector("img"); + previewImage.src = fileData; + this.setActiveScreen(nextScreen); + } catch (error) { + this.handleError(error); + } + } + _drawIDImage(video = this._IDVideo) { + const canvas = document.createElement("canvas"); + if (this.isPortraitCaptureView) { + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + const ctx = canvas.getContext("2d"); + ctx.drawImage(video, 0, 0, canvas.width, canvas.height); + const previewWidth = PORTRAIT_ID_PREVIEW_WIDTH; + const previewHeight = PORTRAIT_ID_PREVIEW_HEIGHT; + const paddingPercent = 0.5; + const paddedWidth = previewWidth * (1 + paddingPercent); + const paddedHeight = previewHeight * (1 + paddingPercent); + const cropWidth = paddedWidth; + const cropHeight = paddedHeight; + const cropLeft = (canvas.width - cropWidth) / 2; + const cropTop = (canvas.height - cropHeight) / 2; + const croppedCanvas = document.createElement("canvas"); + croppedCanvas.width = cropWidth; + croppedCanvas.height = cropHeight; + const croppedCtx = croppedCanvas.getContext("2d"); + croppedCtx.drawImage(canvas, cropLeft, cropTop, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); + return croppedCanvas.toDataURL("image/jpeg"); + } + canvas.width = 2240; + canvas.height = 1260; + const context = canvas.getContext("2d"); + const aspectRatio = video.videoWidth / video.videoHeight; + if (aspectRatio < 1) { + const imageFrame = this.activeScreen.querySelector('[class*="image-frame"]:not([hidden]) [href*="image-frame"]'); + const videoBox = video.getBoundingClientRect(); + const frameBox = imageFrame.getBoundingClientRect(); + const sourceXOffset = (frameBox.left - videoBox.left) / videoBox.width * video.videoWidth; + const sourceYOffset = (frameBox.top - videoBox.top) / videoBox.height * video.videoHeight; + const sourceWidth = frameBox.width * (video.videoWidth / videoBox.width); + const sourceHeight = frameBox.height * (video.videoHeight / videoBox.height); + canvas.height = canvas.width * frameBox.height / frameBox.width; + context.drawImage(video, sourceXOffset, sourceYOffset, sourceWidth, sourceHeight, 0, 0, canvas.width, canvas.height); + return canvas.toDataURL("image/jpeg"); + } + context.drawImage(video, 0, 0, canvas.width, canvas.height); + return canvas.toDataURL("image/jpeg"); + } + _stopVideoStream(stream) { + try { + clearTimeout(this._videoStreamTimeout); + clearInterval(this._imageCaptureInterval); + clearInterval(this._drawingInterval); + this.smileCTA.style.animation = "none"; + this._capturePOLPhoto(); + this._captureReferencePhoto(); + stream.getTracks().forEach((track) => track.stop()); + this.reviewImage.src = this._referenceImage; + const totalNoOfFrames = this._rawImages.length; + const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames); + this._data.images = this._data.images.concat(livenessFramesIndices.map((imageIndex) => ({ + image: this._rawImages[imageIndex].split(",")[1], + image_type_id: 6 + }))); + this.setActiveScreen(this.reviewScreen); + } catch (error) { + this.setActiveScreen(this.failedImageTestScreen); + } + } + _stopIDVideoStream(stream = this._IDStream) { + stream.getTracks().forEach((track) => track.stop()); + } + async _startIDCamera() { + try { + const stream = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: { + facingMode: "environment", + width: { min: 1280 }, + // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant) + // "We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges. + // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it." + zoom: isSamsungMultiCameraDevice() ? 2 : 1 + } + }); + if (this.activeScreen === this.idEntryScreen) { + this.setActiveScreen(this.IDCameraScreen); + } else if (this.activeScreen === this.backOfIdEntryScreen) { + this.setActiveScreen(this.backOfIDCameraScreen); + } + this.handleIDStream(stream); + } catch (e) { + this.handleError(e); + } + } + _selectSelfie() { + if (!this.captureID) { + this._publishSelectedImages(); + } else { + this.setActiveScreen(this.idEntryScreen); + } + } + _selectIDImage(backOfIDCaptured = false) { + if (!this.captureBackOfID || backOfIDCaptured) { + this._publishSelectedImages(); + } else { + this.setActiveScreen(this.backOfIdEntryScreen); + } + } + _publishSelectedImages() { + this.dispatchEvent( + new CustomEvent("imagesComputed", { detail: this._data }) + ); + this.setActiveScreen(this.thanksScreen); + } + _exitSmartCamera() { + this.dispatchEvent( + new CustomEvent("close", { detail: {} }) + ); + } + _backAndExit() { + this.dispatchEvent( + new CustomEvent("backExit", { detail: {} }) + ); + } + async _reStartImageCapture() { + this.startImageCapture.disabled = false; + this._rawImages = []; + this._data.images = []; + try { + const stream = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: true + }); + this.handleSuccess(stream); + } catch (e) { + this.handleError(e); + } + } + async _reCaptureIDImage() { + const previousScreen = this.activeScreen === this.IDReviewScreen ? this.idEntryScreen : this.backOfIdEntryScreen; + this.setActiveScreen(previousScreen); + this._data.images.pop(); + } + get captureID() { + return this.hasAttribute("capture-id"); + } + get captureBackOfID() { + return this.getAttribute("capture-id") === "back" || false; + } + get hideAttribution() { + return this.hasAttribute("hide-attribution"); + } + get showNavigation() { + return this.hasAttribute("show-navigation"); + } + get hideBackToHost() { + return this.hasAttribute("hide-back-to-host"); + } + get documentType() { + return this.getAttribute("document-type"); + } + get isPortraitCaptureView() { + return this.getAttribute("document-type") === "GREEN_BOOK"; + } + get documentCaptureModes() { + return this.getAttribute("document-capture-modes") || "camera"; + } + get supportBothCaptureModes() { + const value = this.documentCaptureModes; + return value.includes("camera") && value.includes("upload"); + } + get disableImageTests() { + return this.hasAttribute("disable-image-tests"); + } + get doNotUpload() { + return this.getAttribute("document-capture-modes") === "camera"; + } + }; + window.customElements.define("smart-camera-web", SmartCameraWeb); + + // src/js/components/ConsentScreen.js + function templateString() { + return ` + + + + + + + + `; + } + var EndUserConsent = class extends HTMLElement { + constructor() { + super(); + this.idRequiresTotpConsent = ["BVN_MFA"]; + this.templateString = templateString.bind(this); + this.render = () => { + return this.templateString(); + }; + this.attachShadow({ mode: "open" }); + } + connectedCallback() { + this.pages = []; + const template = document.createElement("template"); + template.innerHTML = this.render(); + this.shadowRoot.appendChild(template.content.cloneNode(true)); + this.consentScreen = this.shadowRoot.querySelector("#consent-screen"); + this.totpConsentApp = this.shadowRoot.querySelector("totp-consent-app"); + this.consentRejectedScreen = this.shadowRoot.querySelector( + "#consent-rejected-screen" + ); + this.allowButton = this.shadowRoot.querySelector("#allow"); + this.rejectButton = this.shadowRoot.querySelector("#cancel"); + this.backToConsentButton = this.shadowRoot.querySelector("#back-to-consent"); + this.confirmConsentRejectionButton = this.shadowRoot.querySelector( + "#confirm-consent-rejection" + ); + this.backButton = this.shadowRoot.querySelector("#back-button"); + const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + this.allowButton.addEventListener( + "click", + (e) => this.handleConsentGrant(e) + ); + this.rejectButton.addEventListener( + "click", + (e) => this.handleConsentGrant(e) + ); + this.backToConsentButton.addEventListener( + "click", + () => this.setActiveScreen(this.consentScreen) + ); + this.confirmConsentRejectionButton.addEventListener( + "click", + (e) => this.handleConsentRejection(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", + (e) => this.handleTotpConsentEvents(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentGranted::TOTP", + (e) => this.handleTotpConsentEvents(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentDenied::Back", + (e) => this.handleBackEvents(e) + ); + this.backButton.addEventListener("click", (e) => { + this.handleBackEvents(e); + }); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + this.closeWindow(); + }, + false + ); + }); + this.activeScreen = this.consentScreen; + } + setActiveScreen(screen) { + this.activeScreen.hidden = true; + screen.hidden = false; + this.activeScreen = screen; + } + get baseUrl() { + return this.getAttribute("base-url"); + } + get country() { + return this.getAttribute("country"); + } + get demoMode() { + return !!this.hasAttribute("demo-mode"); + } + get hideBack() { + return this.hasAttribute("hide-back-to-host"); + } + get idHint() { + return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; + } + get idRegex() { + return this.getAttribute("id-regex"); + } + get idType() { + return this.getAttribute("id-type"); + } + get idTypeLabel() { + return this.getAttribute("id-type-label"); + } + get partnerId() { + return this.getAttribute("partner-id"); + } + get partnerName() { + return this.getAttribute("partner-name"); + } + get partnerLogoURL() { + return this.getAttribute("partner-logo"); + } + get partnerPolicyURL() { + return this.getAttribute("policy-url"); + } + get themeColor() { + return this.getAttribute("theme-color") || "#043C93"; + } + get token() { + return this.getAttribute("token"); + } + handleConsentGrant(e) { + const granted = e.target === this.allowButton; + if (granted) { + if (this.idRequiresTotpConsent.includes(this.idType)) { + this.setActiveScreen(this.totpConsentApp); + this.pages.push(this.consentScreen); + } else { + this.dispatchEvent( + new CustomEvent("SmileIdentity::ConsentGranted", { + detail: { + consented: { + personal_details: granted, + contact_information: granted, + document_information: granted + } + } + }) + ); + } + } else { + this.setActiveScreen(this.consentRejectedScreen); + } + } + handleConsentRejection() { + this.dispatchEvent(new CustomEvent("SmileIdentity::ConsentDenied")); + } + handleTotpConsentEvents(e) { + const customEvent = new CustomEvent(e.type, { + detail: { + ...e.detail + } + }); + this.dispatchEvent(customEvent); + } + handleBackEvents() { + const page = this.pages.pop(); + if (page) { + this.setActiveScreen(page); + } else { + this.dispatchEvent(new CustomEvent("SmileIdentity::Exit")); + } + } + closeWindow() { + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + }; + var ConsentScreen_default = EndUserConsent; + + // src/js/components/TotpConsentApp.js + var import_validate = __toESM(require_validate(), 1); + function postData(url, data) { + return fetch(url, { + method: "POST", + mode: "cors", + cache: "no-cache", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + body: JSON.stringify(data) + }); + } + function markup() { + return ` + + +
+ +

+ Enter your ${this.idTypeLabel} +

+ +
+
+ + + + +

+ ${this.idHint} +

+
+ + +
+
+ + + + + `; + } + var TotpBasedConsent = class extends HTMLElement { + constructor() { + super(); + this.templateString = markup.bind(this); + this.render = () => { + return this.templateString(); + }; + this.attachShadow({ mode: "open" }); + this.modes = []; + this["otp-delivery-mode"] = ""; + this.queryOtpModes = this.queryOtpModes.bind(this); + this.selectOtpMode = this.selectOtpMode.bind(this); + this.submitOtp = this.submitOtp.bind(this); + this.switchContactMethod = this.switchContactMethod.bind(this); + this.handleTotpConsentGrant = this.handleTotpConsentGrant.bind(this); + this.handleTotpConsentContactMethodsOutdated = this.handleTotpConsentContactMethodsOutdated.bind(this); + this.pages = []; + } + static get observedAttributes() { + return ["modes", "otp-delivery-mode"]; + } + attributeChangedCallback(name) { + switch (name) { + case "modes": + case "otp-delivery-mode": { + const updatedTemplate = document.createElement("template"); + updatedTemplate.innerHTML = this.render(); + const updatedNode = updatedTemplate.content.cloneNode(true).querySelector(`#${this.activeScreen.id}`); + updatedNode.hidden = false; + this.shadowRoot.replaceChild(updatedNode, this.activeScreen); + this.setUpEventListeners(); + this.setActiveScreen(updatedNode); + break; + } + default: + break; + } + } + setUpEventListeners() { + this.idEntryScreen = this.shadowRoot.querySelector("#id-entry"); + this.selectModeScreen = this.shadowRoot.querySelector("#select-mode"); + this.otpVerificationScreen = this.shadowRoot.querySelector("#otp-verification"); + if (!this.activeScreen) { + this.activeScreen = this.idEntryScreen; + } + this.queryOtpModesButton = this.idEntryScreen.querySelector("#query-otp-modes"); + this.backButton = this.idEntryScreen.querySelector("#back-button"); + this.selectOtpModeButton = this.selectModeScreen.querySelector("#select-otp-mode"); + this.entryBackbutton = this.selectModeScreen.querySelector( + "#back-to-entry-button" + ); + this.contactMethodsOutdatedButton = this.selectModeScreen.querySelector( + "#contact-methods-outdated" + ); + this.submitOtpButton = this.otpVerificationScreen.querySelector("#submit-otp"); + this.switchContactMethodButton = this.otpVerificationScreen.querySelector( + ".try-another-method" + ); + const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + this.idNumberInput = this.idEntryScreen.querySelector("#id_number"); + this.modeInputs = this.selectModeScreen.querySelectorAll('[name="mode"]'); + this.otpInput = this.otpVerificationScreen.querySelector("#totp-token"); + this.queryOtpModesButton.addEventListener( + "click", + (e) => this.queryOtpModes(e) + ); + this.selectOtpModeButton.addEventListener( + "click", + (e) => this.selectOtpMode(e) + ); + this.submitOtpButton.addEventListener("click", (e) => this.submitOtp(e)); + this.switchContactMethodButton.addEventListener( + "click", + (e) => this.switchContactMethod(e) + ); + this.contactMethodsOutdatedButton.addEventListener( + "click", + (e) => this.handleTotpConsentContactMethodsOutdated(e) + ); + this.entryBackbutton.addEventListener("click", () => { + this.handleBackClick(); + }); + this.backButton.addEventListener("click", () => { + this.handleBackClick(); + }); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + this.closeWindow(); + }, + false + ); + }); + } + closeWindow() { + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + handleBackClick() { + const page = this.pages.pop(); + if (page) { + this.setActiveScreen(page); + } else { + this.dispatchEvent( + new CustomEvent("SmileIdentity::ConsentDenied::Back", {}) + ); + } + } + connectedCallback() { + const template = document.createElement("template"); + template.innerHTML = this.render(); + this.shadowRoot.appendChild(template.content.cloneNode(true)); + this.setUpEventListeners(); + } + switchContactMethod() { + this.queryOtpModes(); + } + resetForm() { + const invalidElements = this.activeScreen.querySelectorAll("[aria-invalid]"); + invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); + const validationMessages = this.activeScreen.querySelectorAll( + ".validation-message" + ); + validationMessages.forEach((el) => el.remove()); + } + handleIdNumberValidationErrors(errors) { + const fields = Object.keys(errors); + fields.forEach((field) => { + const input = this.activeScreen.querySelector(`#${field}`); + input.setAttribute("aria-invalid", "true"); + input.setAttribute("aria-describedby", `${field}-hint`); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("id", `${field}-hint`); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = errors[field][0]; + input.insertAdjacentElement("afterend", errorDiv); + }); + } + handleActiveScreenErrors(error) { + const submitButton = this.activeScreen.querySelector('[type="submit"]'); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = error; + submitButton.insertAdjacentElement("beforebegin", errorDiv); + } + validateIdNumber(idNumber) { + const validationConstraints = { + id_number: { + presence: { + allowEmpty: false, + message: "is required" + }, + format: new RegExp(this.idRegex) + } + }; + const errors = (0, import_validate.default)({ id_number: idNumber }, validationConstraints); + if (errors) { + this.handleIdNumberValidationErrors(errors); + } + return errors; + } + async queryOtpModes(event) { + if (event) { + event.preventDefault(); + this.resetForm(); + } + const validationErrors = this.validateIdNumber(this.idNumberInput.value); + localStorage.setItem("idNumber", this.idNumberInput.value || this.idNumber); + if (!validationErrors) { + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + partner_id: this.partnerId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.sessionId = json.session_id; + this.modes = json.modes; + this.setActiveScreen(this.selectModeScreen); + this.setAttribute("modes", json.modes); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + } + async selectOtpMode(event) { + event.preventDefault(); + this.resetForm(); + this.mode = Array.prototype.find.call( + this.modeInputs, + (node) => node.checked + ).value; + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + mode: this.mode, + partner_id: this.partnerId, + session_id: this.sessionId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent/mode`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.selectedOtpDeliveryMode = this.modes.filter( + (mode) => mode[this.mode] + )[0][this.mode]; + this.setActiveScreen(this.otpVerificationScreen); + this.setAttribute("otp-delivery-mode", this.selectedOtpDeliveryMode); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + async submitOtp(event) { + event.preventDefault(); + this.resetForm(); + this.otp = this.otpInput.value; + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + otp: this.otp, + partner_id: this.partnerId, + session_id: this.sessionId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent/otp`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.handleTotpConsentGrant(event); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + toggleLoading() { + const button = this.activeScreen.querySelector('button[type="submit"]'); + const text = button.querySelector(".text"); + const arrow = button.querySelector("svg"); + const spinner = button.querySelector(".spinner"); + button.toggleAttribute("disabled"); + text.toggleAttribute("hidden"); + arrow.toggleAttribute("hidden"); + spinner.toggleAttribute("hidden"); + } + setActiveScreen(screen) { + this.activeScreen.hidden = true; + screen.hidden = false; + this.activeScreen = screen; + } + get baseUrl() { + return this.getAttribute("base-url"); + } + get country() { + return this.getAttribute("country"); + } + get idHint() { + return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; + } + get idNumber() { + return localStorage.getItem("idNumber"); + } + get idRegex() { + return this.getAttribute("id-regex"); + } + get idType() { + return this.getAttribute("id-type"); + } + get idTypeLabel() { + return this.getAttribute("id-type-label"); + } + get partnerId() { + return this.getAttribute("partner-id"); + } + get partnerName() { + return this.getAttribute("partner-name"); + } + get token() { + return this.getAttribute("token"); + } + handleTotpConsentGrant() { + const customEvent = new CustomEvent("SmileIdentity::ConsentGranted::TOTP", { + detail: { + id_number: this.idNumber, + session_id: this.sessionId, + consented: { + personal_details: true, + contact_information: true, + document_information: true + } + } + }); + this.dispatchEvent(customEvent); + } + handleTotpConsentContactMethodsOutdated() { + const tag = "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated"; + const customEvent = new CustomEvent(tag, { + detail: { + message: tag, + data: { + id_number: this.idNumber, + session_id: this.sessionId + } + } + }); + this.dispatchEvent(customEvent); + } + }; + var TotpConsentApp_default = TotpBasedConsent; + + // package.json + var version = "v1.2.3"; + + // src/js/biometric-kyc.js + (function biometricKyc() { + "use strict"; + const endpoints = { + development: "https://devapi.smileidentity.com/v1", + sandbox: "https://testapi.smileidentity.com/v1", + live: "https://api.smileidentity.com/v1", + production: "https://api.smileidentity.com/v1" + }; + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); + window.customElements.define("end-user-consent", ConsentScreen_default); + window.customElements.define("totp-consent-app", TotpConsentApp_default); + const pages = []; + let activeScreen; + let config; + let consent_information; + let EndUserConsent2; + let id_info; + let images; + let partner_params; + let productConstraints; + const LoadingScreen = document.querySelector("#loading-screen"); + const SelectIDType = document.querySelector("#select-id-type"); + const SmartCameraWeb2 = document.querySelector("smart-camera-web"); + const IDInfoForm = document.querySelector("#id-info"); + const UploadProgressScreen = document.querySelector( + "#upload-progress-screen" + ); + const UploadFailureScreen = document.querySelector("#upload-failure-screen"); + const CompleteScreen = document.querySelector("#complete-screen"); + const CloseIframeButtons = document.querySelectorAll(".close-iframe"); + const RetryUploadButton = document.querySelector("#retry-upload"); + let disableBackOnFirstScreen = false; + let fileToUpload; + let uploadURL; + function postData2(url = "", data = {}) { + return fetch(url, { + method: "POST", + mode: "cors", + cache: "no-cache", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + body: JSON.stringify(data) + }); + } + async function getProductConstraints() { + try { + const productsConfigPayload = { + partner_id: config.partner_details.partner_id, + token: config.token, + partner_params + }; + const productsConfigUrl = `${endpoints[config.environment]}/products_config`; + const productsConfigPromise = postData2( + productsConfigUrl, + productsConfigPayload + ); + const servicesPromise = fetch( + `${endpoints[config.environment]}/services` + ); + const [productsConfigResponse, servicesResponse] = await Promise.all([ + productsConfigPromise, + servicesPromise + ]); + if (productsConfigResponse.ok && servicesResponse.ok) { + const partnerConstraints = await productsConfigResponse.json(); + const generalConstraints = await servicesResponse.json(); + const previewBvnMfa = config.previewBVNMFA; + if (previewBvnMfa) { + generalConstraints.hosted_web.biometric_kyc.NG.id_types.BVN_MFA = { + id_number_regex: "^[0-9]{11}$", + label: "Bank Verification Number (with OTP)", + required_fields: [ + "country", + "id_type", + "session_id", + "user_id", + "job_id" + ], + test_data: "00000000000" + }; + } + return { + partnerConstraints, + generalConstraints: generalConstraints.hosted_web.biometric_kyc + }; + } + throw new Error("Failed to get supported ID types"); + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + window.addEventListener( + "message", + async (event) => { + if (event.data && event.data.includes("SmileIdentity::Configuration")) { + config = JSON.parse(event.data); + activeScreen = LoadingScreen; + getPartnerParams(); + const { partnerConstraints, generalConstraints } = await getProductConstraints(); + productConstraints = generalConstraints; + initializeSession(generalConstraints, partnerConstraints); + } + }, + false + ); + function setInitialScreen(partnerConstraints) { + const { country: selectedCountry, id_type: selectedIDType } = id_info; + const selectedIdRequiresConsent = partnerConstraints.consentRequired[selectedCountry] ? partnerConstraints.consentRequired[selectedCountry].includes( + selectedIDType + ) : false; + if (selectedIdRequiresConsent || config.consent_required || config.demo_mode) { + const IDRequiresConsent = selectedIdRequiresConsent || config.consent_required && config.consent_required[selectedCountry] && config.consent_required[selectedCountry].includes(selectedIDType); + if (IDRequiresConsent || config.demo_mode) { + customizeConsentScreen(); + setActiveScreen(EndUserConsent2); + } else { + SmartCameraWeb2.setAttribute("hide-back-to-host", true); + setActiveScreen(SmartCameraWeb2); + } + } else { + SmartCameraWeb2.setAttribute("hide-back-to-host", true); + setActiveScreen(SmartCameraWeb2); + } + customizeForm(); + } + function initializeSession(generalConstraints, partnerConstraints) { + const supportedCountries = Object.keys(generalConstraints).map((countryCode) => ({ + code: countryCode, + name: generalConstraints[countryCode].name + })).sort((a, b) => { + if (a.name < b.name) { + return -1; + } + if (a.name > b.name) { + return 1; + } + return 0; + }).map((item) => item.code); + let validCountries = []; + if (config.id_selection) { + validCountries = supportedCountries.filter( + (value) => Object.keys(config.id_selection).includes(value) + ); + if (validCountries.length === 1) { + const selectedCountry = validCountries[0]; + id_info = { + country: validCountries[0] + }; + const idTypes = config.id_selection[selectedCountry]; + if (idTypes.length === 1 || typeof idTypes === "string") { + id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; + disableBackOnFirstScreen = true; + setInitialScreen(partnerConstraints); + } + } + } else { + validCountries = Object.keys( + partnerConstraints.idSelection.biometric_kyc + ); + } + if (!id_info || !id_info.id_type) { + const selectCountry = SelectIDType.querySelector("#country"); + const selectIDType = SelectIDType.querySelector("#id_type"); + const hostedWebConfigForm = document.querySelector( + 'form[name="hosted-web-config"]' + ); + selectCountry.disabled = false; + setActiveScreen(SelectIDType); + const loadIdTypes = (countryCode) => { + if (countryCode) { + const validIDTypes = config.id_selection ? config.id_selection : partnerConstraints.idSelection.biometric_kyc; + const constrainedIDTypes = Object.keys( + generalConstraints[countryCode].id_types + ); + const selectedIDTypes = validIDTypes[countryCode].filter( + (value) => constrainedIDTypes.includes(value) + ); + selectIDType.innerHTML = ""; + const initialOption = document.createElement("option"); + initialOption.setAttribute("value", ""); + initialOption.textContent = "--Please Select--"; + selectIDType.appendChild(initialOption); + selectedIDTypes.forEach((IDType) => { + const option = document.createElement("option"); + option.setAttribute("value", IDType); + option.textContent = generalConstraints[countryCode].id_types[IDType].label; + selectIDType.appendChild(option); + }); + selectIDType.disabled = false; + } else { + selectIDType.innerHTML = ""; + const option = document.createElement("option"); + option.disabled = true; + option.setAttribute("value", ""); + option.textContent = "--Select Country First--"; + selectIDType.appendChild(option); + } + }; + selectCountry.addEventListener("change", (e) => { + loadIdTypes(e.target.value); + }); + validCountries.forEach((country) => { + const countryObject = generalConstraints[country]; + if (countryObject) { + const option = document.createElement("option"); + option.setAttribute("value", country); + option.textContent = countryObject.name; + if (id_info && id_info.country && country === id_info.country) { + option.setAttribute("selected", true); + selectCountry.value = country; + selectCountry.disabled = true; + loadIdTypes(country); + } + selectCountry.appendChild(option); + } + }); + hostedWebConfigForm.addEventListener("submit", (e) => { + e.preventDefault(); + const selectedCountry = selectCountry.value; + const selectedIDType = selectIDType.value; + id_info = { + country: selectedCountry, + id_type: selectedIDType + }; + setInitialScreen(partnerConstraints); + }); + } + } + function initiateDemoMode() { + const demoTips = document.querySelectorAll(".demo-tip"); + Array.prototype.forEach.call(demoTips, (tip) => { + tip.hidden = false; + }); + const script = document.createElement("script"); + script.type = "text/javascript"; + script.src = "js/demo-ekyc-smartselfie.min.js"; + document.body.appendChild(script); + } + SmartCameraWeb2.addEventListener( + "imagesComputed", + (event) => { + images = event.detail.images; + const idRequiresTOTPConsent = ["BVN_MFA"].includes(id_info.id_type); + if (idRequiresTOTPConsent) { + handleFormSubmit(); + } else { + setActiveScreen(IDInfoForm); + } + }, + false + ); + SmartCameraWeb2.addEventListener( + "backExit", + () => { + SmartCameraWeb2.reset(); + const page = pages.pop(); + setActiveScreen(page); + }, + false + ); + SmartCameraWeb2.addEventListener( + "close", + () => { + closeWindow(true); + }, + false + ); + IDInfoForm.querySelector("#submitForm").addEventListener( + "click", + (event) => { + handleFormSubmit(event); + }, + false + ); + IDInfoForm.querySelector("#back-button").addEventListener( + "click", + (event) => { + event.preventDefault(); + const page = pages.pop(); + if (page === SmartCameraWeb2) { + page.reset(); + } + setActiveScreen(page); + }, + false + ); + RetryUploadButton.addEventListener( + "click", + () => { + retryUpload(); + }, + false + ); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + closeWindow(true); + }, + false + ); + }); + function customizeConsentScreen() { + const partnerDetails = config.partner_details; + const main = document.querySelector("main"); + EndUserConsent2 = document.querySelector("end-user-consent"); + if (EndUserConsent2) { + main.removeChild(EndUserConsent2); + } + EndUserConsent2 = document.createElement("end-user-consent"); + EndUserConsent2.setAttribute( + "base-url", + endpoints[config.environment] || config.environment + ); + EndUserConsent2.setAttribute("country", id_info.country); + EndUserConsent2.setAttribute( + "id-regex", + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ); + EndUserConsent2.setAttribute("id-type", id_info.id_type); + EndUserConsent2.setAttribute( + "id-type-label", + productConstraints[id_info.country].id_types[id_info.id_type].label + ); + EndUserConsent2.setAttribute("partner-id", partnerDetails.partner_id); + EndUserConsent2.setAttribute("partner-name", partnerDetails.name); + EndUserConsent2.setAttribute("partner-logo", partnerDetails.logo_url); + EndUserConsent2.setAttribute("policy-url", partnerDetails.policy_url); + EndUserConsent2.setAttribute("theme-color", partnerDetails.theme_color); + EndUserConsent2.setAttribute("token", config.token); + if (disableBackOnFirstScreen) { + EndUserConsent2.setAttribute("hide-back-to-host", true); + } + if (config.demo_mode) { + EndUserConsent2.setAttribute("demo-mode", config.demo_mode); + localStorage.setItem( + "SmileIdentityConstraints", + JSON.stringify(productConstraints, null, 2) + ); + initiateDemoMode(); + } + EndUserConsent2.addEventListener( + "SmileIdentity::Exit", + () => { + setActiveScreen(SelectIDType); + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentGranted", + (event) => { + consent_information = event.detail; + if (consent_information.consented.personal_details) { + id_info.consent_information = consent_information; + setActiveScreen(SmartCameraWeb2); + } + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentGranted::TOTP", + (event) => { + consent_information = event.detail; + if (consent_information.consented.personal_details) { + id_info.id_number = consent_information.id_number; + id_info.session_id = consent_information.session_id; + id_info.consent_information = consent_information; + setActiveScreen(SmartCameraWeb2); + } + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentDenied", + () => { + referenceWindow.postMessage("SmileIdentity::ConsentDenied", "*"); + closeWindow(); + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", + (event) => { + referenceWindow.postMessage(event.detail, "*"); + closeWindow(); + }, + false + ); + main.appendChild(EndUserConsent2); + } + function customizeForm() { + setGuideTextForIDType(); + setFormInputs(); + } + function setGuideTextForIDType() { + const label = document.querySelector('[for="id_number"]'); + const input = document.querySelector("#id_number"); + label.innerHTML = productConstraints[id_info.country].id_types[id_info.id_type].label; + input.setAttribute( + "placeholder", + productConstraints[id_info.country].id_types[id_info.id_type].test_data + ); + input.setAttribute( + "pattern", + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ); + } + function setFormInputs() { + const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; + const showIdNumber = requiredFields.some( + (fieldName) => fieldName.includes("id_number") + ); + if (showIdNumber) { + const IdNumber = IDInfoForm.querySelector("div#id-number"); + IdNumber.hidden = false; + } + const showNames = requiredFields.some( + (fieldName) => fieldName.includes("name") + ); + if (showNames) { + const Names = IDInfoForm.querySelector("fieldset#names"); + Names.hidden = false; + } + const showDOB = requiredFields.some( + (fieldName) => fieldName.includes("dob") + ); + if (showDOB) { + const DOB = IDInfoForm.querySelector("fieldset#dob"); + DOB.hidden = false; + } + } + function getPartnerParams() { + function parseJWT(token) { + const base64Url = token.split(".")[1]; + const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); + const jsonPayload = decodeURIComponent( + atob(base64).split("").map(function(c) { + return `%${c.charCodeAt(0).toString(16)}`; + }).join("") + ); + return JSON.parse(jsonPayload); + } + const { partner_params: partnerParams } = parseJWT(config.token); + partner_params = { ...partnerParams, ...config.partner_params || {} }; + } + function setActiveScreen(node) { + activeScreen.hidden = true; + pages.push(activeScreen); + node.hidden = false; + activeScreen = node; + } + function resetForm() { + const invalidElements = IDInfoForm.querySelectorAll("[aria-invalid]"); + invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); + const validationMessages = document.querySelectorAll(".validation-message"); + validationMessages.forEach((el) => el.remove()); + } + function validateInputs(payload) { + const validationConstraints = {}; + const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; + const showIdNumber = requiredFields.some( + (fieldName) => fieldName.includes("id_number") + ); + if (showIdNumber) { + validationConstraints.id_number = { + presence: { + allowEmpty: false, + message: "is required" + }, + format: new RegExp( + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ) + }; + } + const showNames = requiredFields.some( + (fieldName) => fieldName.includes("name") + ); + if (showNames) { + validationConstraints.first_name = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.last_name = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const showDOB = requiredFields.some( + (fieldName) => fieldName.includes("dob") + ); + if (showDOB) { + validationConstraints.day = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.month = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.year = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const validation = (0, import_validate2.default)(payload, validationConstraints); + if (validation) { + handleValidationErrors(validation); + const submitButton = IDInfoForm.querySelector('[type="button"]'); + submitButton.removeAttribute("disabled"); + } + return validation; + } + function handleValidationErrors(errors) { + const fields = Object.keys(errors); + fields.forEach((field) => { + const input = IDInfoForm.querySelector(`#${field}`); + input.setAttribute("aria-invalid", "true"); + input.setAttribute("aria-describedby", `${field}-hint`); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("id", `${field}-hint`); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = errors[field][0]; + input.insertAdjacentElement("afterend", errorDiv); + }); + } + async function handleFormSubmit(event) { + if (event) { + event.preventDefault(); + resetForm(); + } + const form = IDInfoForm.querySelector("form"); + const formData = new FormData(form); + const payload = Object.fromEntries(formData.entries()); + const isInvalid = validateInputs(payload); + if (isInvalid) { + return; + } + id_info = { + dob: `${payload.year}-${payload.month}-${payload.day}`, + entered: true, + ...payload, + ...id_info + }; + try { + if (event && event.target) + event.target.disabled = true; + [uploadURL, fileToUpload] = await Promise.all([ + getUploadURL(), + createZip() + ]); + uploadZip(fileToUpload, uploadURL); + if (event && event.target) + event.target.disabled = false; + } catch (error) { + if (event && event.target) + event.target.disabled = false; + displayErrorMessage("Something went wrong"); + console.error( + `SmileIdentity - ${error.name || error.message}: ${error.cause}` + ); + } + } + function displayErrorMessage(message) { + const p = document.createElement("p"); + p.textContent = message; + p.classList.add("validation-message"); + p.style.fontSize = "1.5rem"; + p.style.textAlign = "center"; + const main = document.querySelector("main"); + main.prepend(p); + } + async function createZip() { + const zip = new import_jszip.default(); + zip.file( + "info.json", + JSON.stringify({ + package_information: { + language: "Hosted Web Integration", + apiVersion: { + buildNumber: 0, + majorVersion: 2, + minorVersion: 0 + } + }, + id_info, + images + }) + ); + try { + const zipFile = await zip.generateAsync({ type: "blob" }); + return zipFile; + } catch (error) { + throw new Error("createZip failed", { cause: error }); + } + } + async function getUploadURL() { + const payload = { + source_sdk: config.sdk || "hosted_web", + source_sdk_version: config.sdk_version || version, + file_name: `${config.product}.zip`, + smile_client_id: config.partner_details.partner_id, + callback_url: config.callback_url, + token: config.token, + partner_params: { + ...partner_params, + job_type: 1 + } + }; + const URL = `${endpoints[config.environment] || config.environment}/upload`; + try { + const response = await postData2(URL, payload); + const json = await response.json(); + if (json.error) + throw new Error(json.error); + return json.upload_url; + } catch (error) { + throw new Error("getUploadURL failed", { cause: error }); + } + } + function uploadZip(file, destination) { + setActiveScreen(UploadProgressScreen); + const request = new XMLHttpRequest(); + request.open("PUT", destination); + request.upload.addEventListener("load", function() { + return request.response; + }); + request.upload.addEventListener("error", function(e) { + setActiveScreen(UploadFailureScreen); + throw new Error("uploadZip failed", { cause: e }); + }); + request.onreadystatechange = function() { + if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { + const countryName = productConstraints[id_info.country].name; + const idTypeName = productConstraints[id_info.country].id_types[id_info.id_type].label; + const thankYouMessage = CompleteScreen.querySelector("#thank-you-message"); + thankYouMessage.textContent = `We will process your ${countryName} - ${idTypeName} information to verify your identity`; + setActiveScreen(CompleteScreen); + handleSuccess(); + window.setTimeout(closeWindow, 2e3); + } + if (request.readyState === XMLHttpRequest.DONE && request.status !== 200) { + setActiveScreen(UploadFailureScreen); + throw new Error("uploadZip failed", { cause: request }); + } + }; + request.setRequestHeader("Content-type", "application/zip"); + request.send(file); + } + function retryUpload() { + const fileUploaded = uploadZip(fileToUpload, uploadURL); + return fileUploaded; + } + function closeWindow(userTriggered) { + const message = userTriggered ? "SmileIdentity::Close" : "SmileIdentity::Close::System"; + referenceWindow.postMessage(message, "*"); + } + function handleSuccess() { + referenceWindow.postMessage("SmileIdentity::Success", "*"); + } + })(); +})(); +/*! Bundled license information: + +jszip/dist/jszip.min.js: + (*! + + JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + + (c) 2009-2016 Stuart Knightley + Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + + JSZip uses the library pako released under the MIT license : + https://github.com/nodeca/pako/blob/main/LICENSE + *) + +validate.js/validate.js: + (*! + * validate.js 0.13.1 + * + * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp + * Validate.js may be freely distributed under the MIT license. + * For all details and documentation: + * http://validatejs.org/ + *) +*/ diff --git a/packages/embed/build/js/components/.eslintrc.cjs b/packages/embed/build/js/components/.eslintrc.cjs new file mode 100644 index 00000000..cea670a5 --- /dev/null +++ b/packages/embed/build/js/components/.eslintrc.cjs @@ -0,0 +1,5 @@ +module.exports = { + rules: { + "max-classes-per-file": 0, + }, +}; diff --git a/packages/embed/build/js/demo-ekyc-smartselfie.min.js b/packages/embed/build/js/demo-ekyc-smartselfie.min.js new file mode 100644 index 00000000..7ffcd1c5 --- /dev/null +++ b/packages/embed/build/js/demo-ekyc-smartselfie.min.js @@ -0,0 +1,41 @@ +(() => { + // src/js/demo-ekyc-smartselfie.js + (function eKYCSmartSelfieSandbox() { + "use strict"; + const constraints = JSON.parse( + localStorage.getItem("SmileIdentityConstraints") + ); + const country = document.querySelector("#country").value; + const IDType = document.querySelector("#id_type").value; + const sandboxPII = { + first_name: "Ciroma", + last_name: "Adekunle", + day: "01", + month: "01", + year: "1970" + }; + const { required_fields: requiredFields, test_data: testData } = constraints[country].id_types[IDType]; + requiredFields.forEach((field) => { + if (field === "country" || field === "id_type" || field === "user_id" || field === "job_id") + return; + const element = document.querySelector(`#${field}`); + if (field === "id_number") { + element.setAttribute("value", testData); + element.setAttribute("readonly", true); + } else if (field === "dob") { + const day = element.querySelector("#day"); + const month = element.querySelector("#month"); + const year = element.querySelector("#year"); + day.setAttribute("readonly", true); + day.setAttribute("value", sandboxPII.day); + month.setAttribute("readonly", true); + month.setAttribute("value", sandboxPII.month); + year.setAttribute("readonly", true); + year.setAttribute("value", sandboxPII.year); + } else { + element.setAttribute("value", sandboxPII[field]); + element.setAttribute("readonly", true); + } + }); + })(); +})(); diff --git a/packages/embed/build/js/doc-verification.min.js b/packages/embed/build/js/doc-verification.min.js new file mode 100644 index 00000000..bc241cc1 --- /dev/null +++ b/packages/embed/build/js/doc-verification.min.js @@ -0,0 +1,5423 @@ +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] + }) : x)(function(x) { + if (typeof require !== "undefined") + return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); + }); + var __commonJS = (cb, mod) => function __require2() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + + // ../../node_modules/jszip/dist/jszip.min.js + var require_jszip_min = __commonJS({ + "../../node_modules/jszip/dist/jszip.min.js"(exports, module) { + !function(e) { + if ("object" == typeof exports && "undefined" != typeof module) + module.exports = e(); + else if ("function" == typeof define && define.amd) + define([], e); + else { + ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e(); + } + }(function() { + return function s(a, o, h) { + function u(r, e2) { + if (!o[r]) { + if (!a[r]) { + var t = "function" == typeof __require && __require; + if (!e2 && t) + return t(r, true); + if (l) + return l(r, true); + var n = new Error("Cannot find module '" + r + "'"); + throw n.code = "MODULE_NOT_FOUND", n; + } + var i = o[r] = { exports: {} }; + a[r][0].call(i.exports, function(e3) { + var t2 = a[r][1][e3]; + return u(t2 || e3); + }, i, i.exports, s, a, o, h); + } + return o[r].exports; + } + for (var l = "function" == typeof __require && __require, e = 0; e < h.length; e++) + u(h[e]); + return u; + }({ 1: [function(e, t, r) { + "use strict"; + var d = e("./utils"), c = e("./support"), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + r.encode = function(e2) { + for (var t2, r2, n, i, s, a, o, h = [], u = 0, l = e2.length, f = l, c2 = "string" !== d.getTypeOf(e2); u < e2.length; ) + f = l - u, n = c2 ? (t2 = e2[u++], r2 = u < l ? e2[u++] : 0, u < l ? e2[u++] : 0) : (t2 = e2.charCodeAt(u++), r2 = u < l ? e2.charCodeAt(u++) : 0, u < l ? e2.charCodeAt(u++) : 0), i = t2 >> 2, s = (3 & t2) << 4 | r2 >> 4, a = 1 < f ? (15 & r2) << 2 | n >> 6 : 64, o = 2 < f ? 63 & n : 64, h.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)); + return h.join(""); + }, r.decode = function(e2) { + var t2, r2, n, i, s, a, o = 0, h = 0, u = "data:"; + if (e2.substr(0, u.length) === u) + throw new Error("Invalid base64 input, it looks like a data url."); + var l, f = 3 * (e2 = e2.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; + if (e2.charAt(e2.length - 1) === p.charAt(64) && f--, e2.charAt(e2.length - 2) === p.charAt(64) && f--, f % 1 != 0) + throw new Error("Invalid base64 input, bad content length."); + for (l = c.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e2.length; ) + t2 = p.indexOf(e2.charAt(o++)) << 2 | (i = p.indexOf(e2.charAt(o++))) >> 4, r2 = (15 & i) << 4 | (s = p.indexOf(e2.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e2.charAt(o++))), l[h++] = t2, 64 !== s && (l[h++] = r2), 64 !== a && (l[h++] = n); + return l; + }; + }, { "./support": 30, "./utils": 32 }], 2: [function(e, t, r) { + "use strict"; + var n = e("./external"), i = e("./stream/DataWorker"), s = e("./stream/Crc32Probe"), a = e("./stream/DataLengthProbe"); + function o(e2, t2, r2, n2, i2) { + this.compressedSize = e2, this.uncompressedSize = t2, this.crc32 = r2, this.compression = n2, this.compressedContent = i2; + } + o.prototype = { getContentWorker: function() { + var e2 = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), t2 = this; + return e2.on("end", function() { + if (this.streamInfo.data_length !== t2.uncompressedSize) + throw new Error("Bug : uncompressed data size mismatch"); + }), e2; + }, getCompressedWorker: function() { + return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); + } }, o.createWorkerFrom = function(e2, t2, r2) { + return e2.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t2.compressWorker(r2)).pipe(new a("compressedSize")).withStreamInfo("compression", t2); + }, t.exports = o; + }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e, t, r) { + "use strict"; + var n = e("./stream/GenericWorker"); + r.STORE = { magic: "\0\0", compressWorker: function() { + return new n("STORE compression"); + }, uncompressWorker: function() { + return new n("STORE decompression"); + } }, r.DEFLATE = e("./flate"); + }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e, t, r) { + "use strict"; + var n = e("./utils"); + var o = function() { + for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { + e2 = r2; + for (var n2 = 0; n2 < 8; n2++) + e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; + t2[r2] = e2; + } + return t2; + }(); + t.exports = function(e2, t2) { + return void 0 !== e2 && e2.length ? "string" !== n.getTypeOf(e2) ? function(e3, t3, r2, n2) { + var i = o, s = n2 + r2; + e3 ^= -1; + for (var a = n2; a < s; a++) + e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3[a])]; + return -1 ^ e3; + }(0 | t2, e2, e2.length, 0) : function(e3, t3, r2, n2) { + var i = o, s = n2 + r2; + e3 ^= -1; + for (var a = n2; a < s; a++) + e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3.charCodeAt(a))]; + return -1 ^ e3; + }(0 | t2, e2, e2.length, 0) : 0; + }; + }, { "./utils": 32 }], 5: [function(e, t, r) { + "use strict"; + r.base64 = false, r.binary = false, r.dir = false, r.createFolders = true, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null; + }, {}], 6: [function(e, t, r) { + "use strict"; + var n = null; + n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n }; + }, { lie: 37 }], 7: [function(e, t, r) { + "use strict"; + var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i = e("pako"), s = e("./utils"), a = e("./stream/GenericWorker"), o = n ? "uint8array" : "array"; + function h(e2, t2) { + a.call(this, "FlateWorker/" + e2), this._pako = null, this._pakoAction = e2, this._pakoOptions = t2, this.meta = {}; + } + r.magic = "\b\0", s.inherits(h, a), h.prototype.processChunk = function(e2) { + this.meta = e2.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e2.data), false); + }, h.prototype.flush = function() { + a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); + }, h.prototype.cleanUp = function() { + a.prototype.cleanUp.call(this), this._pako = null; + }, h.prototype._createPako = function() { + this._pako = new i[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); + var t2 = this; + this._pako.onData = function(e2) { + t2.push({ data: e2, meta: t2.meta }); + }; + }, r.compressWorker = function(e2) { + return new h("Deflate", e2); + }, r.uncompressWorker = function() { + return new h("Inflate", {}); + }; + }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e, t, r) { + "use strict"; + function A(e2, t2) { + var r2, n2 = ""; + for (r2 = 0; r2 < t2; r2++) + n2 += String.fromCharCode(255 & e2), e2 >>>= 8; + return n2; + } + function n(e2, t2, r2, n2, i2, s2) { + var a, o, h = e2.file, u = e2.compression, l = s2 !== O.utf8encode, f = I.transformTo("string", s2(h.name)), c = I.transformTo("string", O.utf8encode(h.name)), d = h.comment, p = I.transformTo("string", s2(d)), m = I.transformTo("string", O.utf8encode(d)), _ = c.length !== h.name.length, g = m.length !== d.length, b = "", v = "", y = "", w = h.dir, k = h.date, x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; + t2 && !r2 || (x.crc32 = e2.crc32, x.compressedSize = e2.compressedSize, x.uncompressedSize = e2.uncompressedSize); + var S = 0; + t2 && (S |= 8), l || !_ && !g || (S |= 2048); + var z = 0, C = 0; + w && (z |= 16), "UNIX" === i2 ? (C = 798, z |= function(e3, t3) { + var r3 = e3; + return e3 || (r3 = t3 ? 16893 : 33204), (65535 & r3) << 16; + }(h.unixPermissions, w)) : (C = 20, z |= function(e3) { + return 63 & (e3 || 0); + }(h.dosPermissions)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v = A(1, 1) + A(B(f), 4) + c, b += "up" + A(v.length, 2) + v), g && (y = A(1, 1) + A(B(p), 4) + m, b += "uc" + A(y.length, 2) + y); + var E = ""; + return E += "\n\0", E += A(S, 2), E += u.magic, E += A(a, 2), E += A(o, 2), E += A(x.crc32, 4), E += A(x.compressedSize, 4), E += A(x.uncompressedSize, 4), E += A(f.length, 2), E += A(b.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + E + f + b, dirRecord: R.CENTRAL_FILE_HEADER + A(C, 2) + E + A(p.length, 2) + "\0\0\0\0" + A(z, 4) + A(n2, 4) + f + b + p }; + } + var I = e("../utils"), i = e("../stream/GenericWorker"), O = e("../utf8"), B = e("../crc32"), R = e("../signature"); + function s(e2, t2, r2, n2) { + i.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t2, this.zipPlatform = r2, this.encodeFileName = n2, this.streamFiles = e2, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; + } + I.inherits(s, i), s.prototype.push = function(e2) { + var t2 = e2.meta.percent || 0, r2 = this.entriesCount, n2 = this._sources.length; + this.accumulate ? this.contentBuffer.push(e2) : (this.bytesWritten += e2.data.length, i.prototype.push.call(this, { data: e2.data, meta: { currentFile: this.currentFile, percent: r2 ? (t2 + 100 * (r2 - n2 - 1)) / r2 : 100 } })); + }, s.prototype.openedSource = function(e2) { + this.currentSourceOffset = this.bytesWritten, this.currentFile = e2.file.name; + var t2 = this.streamFiles && !e2.file.dir; + if (t2) { + var r2 = n(e2, t2, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + this.push({ data: r2.fileRecord, meta: { percent: 0 } }); + } else + this.accumulate = true; + }, s.prototype.closedSource = function(e2) { + this.accumulate = false; + var t2 = this.streamFiles && !e2.file.dir, r2 = n(e2, t2, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + if (this.dirRecords.push(r2.dirRecord), t2) + this.push({ data: function(e3) { + return R.DATA_DESCRIPTOR + A(e3.crc32, 4) + A(e3.compressedSize, 4) + A(e3.uncompressedSize, 4); + }(e2), meta: { percent: 100 } }); + else + for (this.push({ data: r2.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) + this.push(this.contentBuffer.shift()); + this.currentFile = null; + }, s.prototype.flush = function() { + for (var e2 = this.bytesWritten, t2 = 0; t2 < this.dirRecords.length; t2++) + this.push({ data: this.dirRecords[t2], meta: { percent: 100 } }); + var r2 = this.bytesWritten - e2, n2 = function(e3, t3, r3, n3, i2) { + var s2 = I.transformTo("string", i2(n3)); + return R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A(e3, 2) + A(e3, 2) + A(t3, 4) + A(r3, 4) + A(s2.length, 2) + s2; + }(this.dirRecords.length, r2, e2, this.zipComment, this.encodeFileName); + this.push({ data: n2, meta: { percent: 100 } }); + }, s.prototype.prepareNextSource = function() { + this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); + }, s.prototype.registerPrevious = function(e2) { + this._sources.push(e2); + var t2 = this; + return e2.on("data", function(e3) { + t2.processChunk(e3); + }), e2.on("end", function() { + t2.closedSource(t2.previous.streamInfo), t2._sources.length ? t2.prepareNextSource() : t2.end(); + }), e2.on("error", function(e3) { + t2.error(e3); + }), this; + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true)); + }, s.prototype.error = function(e2) { + var t2 = this._sources; + if (!i.prototype.error.call(this, e2)) + return false; + for (var r2 = 0; r2 < t2.length; r2++) + try { + t2[r2].error(e2); + } catch (e3) { + } + return true; + }, s.prototype.lock = function() { + i.prototype.lock.call(this); + for (var e2 = this._sources, t2 = 0; t2 < e2.length; t2++) + e2[t2].lock(); + }, t.exports = s; + }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e, t, r) { + "use strict"; + var u = e("../compressions"), n = e("./ZipFileWorker"); + r.generateWorker = function(e2, a, t2) { + var o = new n(a.streamFiles, t2, a.platform, a.encodeFileName), h = 0; + try { + e2.forEach(function(e3, t3) { + h++; + var r2 = function(e4, t4) { + var r3 = e4 || t4, n3 = u[r3]; + if (!n3) + throw new Error(r3 + " is not a valid compression method !"); + return n3; + }(t3.options.compression, a.compression), n2 = t3.options.compressionOptions || a.compressionOptions || {}, i = t3.dir, s = t3.date; + t3._compressWorker(r2, n2).withStreamInfo("file", { name: e3, dir: i, date: s, comment: t3.comment || "", unixPermissions: t3.unixPermissions, dosPermissions: t3.dosPermissions }).pipe(o); + }), o.entriesCount = h; + } catch (e3) { + o.error(e3); + } + return o; + }; + }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e, t, r) { + "use strict"; + function n() { + if (!(this instanceof n)) + return new n(); + if (arguments.length) + throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); + this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { + var e2 = new n(); + for (var t2 in this) + "function" != typeof this[t2] && (e2[t2] = this[t2]); + return e2; + }; + } + (n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.10.1", n.loadAsync = function(e2, t2) { + return new n().loadAsync(e2, t2); + }, n.external = e("./external"), t.exports = n; + }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e, t, r) { + "use strict"; + var u = e("./utils"), i = e("./external"), n = e("./utf8"), s = e("./zipEntries"), a = e("./stream/Crc32Probe"), l = e("./nodejsUtils"); + function f(n2) { + return new i.Promise(function(e2, t2) { + var r2 = n2.decompressed.getContentWorker().pipe(new a()); + r2.on("error", function(e3) { + t2(e3); + }).on("end", function() { + r2.streamInfo.crc32 !== n2.decompressed.crc32 ? t2(new Error("Corrupted zip : CRC32 mismatch")) : e2(); + }).resume(); + }); + } + t.exports = function(e2, o) { + var h = this; + return o = u.extend(o || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n.utf8decode }), l.isNode && l.isStream(e2) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u.prepareContent("the loaded zip file", e2, true, o.optimizedBinaryString, o.base64).then(function(e3) { + var t2 = new s(o); + return t2.load(e3), t2; + }).then(function(e3) { + var t2 = [i.Promise.resolve(e3)], r2 = e3.files; + if (o.checkCRC32) + for (var n2 = 0; n2 < r2.length; n2++) + t2.push(f(r2[n2])); + return i.Promise.all(t2); + }).then(function(e3) { + for (var t2 = e3.shift(), r2 = t2.files, n2 = 0; n2 < r2.length; n2++) { + var i2 = r2[n2], s2 = i2.fileNameStr, a2 = u.resolve(i2.fileNameStr); + h.file(a2, i2.decompressed, { binary: true, optimizedBinaryString: true, date: i2.date, dir: i2.dir, comment: i2.fileCommentStr.length ? i2.fileCommentStr : null, unixPermissions: i2.unixPermissions, dosPermissions: i2.dosPermissions, createFolders: o.createFolders }), i2.dir || (h.file(a2).unsafeOriginalName = s2); + } + return t2.zipComment.length && (h.comment = t2.zipComment), h; + }); + }; + }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("../stream/GenericWorker"); + function s(e2, t2) { + i.call(this, "Nodejs stream input adapter for " + e2), this._upstreamEnded = false, this._bindStream(t2); + } + n.inherits(s, i), s.prototype._bindStream = function(e2) { + var t2 = this; + (this._stream = e2).pause(), e2.on("data", function(e3) { + t2.push({ data: e3, meta: { percent: 0 } }); + }).on("error", function(e3) { + t2.isPaused ? this.generatedError = e3 : t2.error(e3); + }).on("end", function() { + t2.isPaused ? t2._upstreamEnded = true : t2.end(); + }); + }, s.prototype.pause = function() { + return !!i.prototype.pause.call(this) && (this._stream.pause(), true); + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); + }, t.exports = s; + }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e, t, r) { + "use strict"; + var i = e("readable-stream").Readable; + function n(e2, t2, r2) { + i.call(this, t2), this._helper = e2; + var n2 = this; + e2.on("data", function(e3, t3) { + n2.push(e3) || n2._helper.pause(), r2 && r2(t3); + }).on("error", function(e3) { + n2.emit("error", e3); + }).on("end", function() { + n2.push(null); + }); + } + e("../utils").inherits(n, i), n.prototype._read = function() { + this._helper.resume(); + }, t.exports = n; + }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e, t, r) { + "use strict"; + t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e2, t2) { + if (Buffer.from && Buffer.from !== Uint8Array.from) + return Buffer.from(e2, t2); + if ("number" == typeof e2) + throw new Error('The "data" argument must not be a number'); + return new Buffer(e2, t2); + }, allocBuffer: function(e2) { + if (Buffer.alloc) + return Buffer.alloc(e2); + var t2 = new Buffer(e2); + return t2.fill(0), t2; + }, isBuffer: function(e2) { + return Buffer.isBuffer(e2); + }, isStream: function(e2) { + return e2 && "function" == typeof e2.on && "function" == typeof e2.pause && "function" == typeof e2.resume; + } }; + }, {}], 15: [function(e, t, r) { + "use strict"; + function s(e2, t2, r2) { + var n2, i2 = u.getTypeOf(t2), s2 = u.extend(r2 || {}, f); + s2.date = s2.date || /* @__PURE__ */ new Date(), null !== s2.compression && (s2.compression = s2.compression.toUpperCase()), "string" == typeof s2.unixPermissions && (s2.unixPermissions = parseInt(s2.unixPermissions, 8)), s2.unixPermissions && 16384 & s2.unixPermissions && (s2.dir = true), s2.dosPermissions && 16 & s2.dosPermissions && (s2.dir = true), s2.dir && (e2 = g(e2)), s2.createFolders && (n2 = _(e2)) && b.call(this, n2, true); + var a2 = "string" === i2 && false === s2.binary && false === s2.base64; + r2 && void 0 !== r2.binary || (s2.binary = !a2), (t2 instanceof c && 0 === t2.uncompressedSize || s2.dir || !t2 || 0 === t2.length) && (s2.base64 = false, s2.binary = true, t2 = "", s2.compression = "STORE", i2 = "string"); + var o2 = null; + o2 = t2 instanceof c || t2 instanceof l ? t2 : p.isNode && p.isStream(t2) ? new m(e2, t2) : u.prepareContent(e2, t2, s2.binary, s2.optimizedBinaryString, s2.base64); + var h2 = new d(e2, o2, s2); + this.files[e2] = h2; + } + var i = e("./utf8"), u = e("./utils"), l = e("./stream/GenericWorker"), a = e("./stream/StreamHelper"), f = e("./defaults"), c = e("./compressedObject"), d = e("./zipObject"), o = e("./generate"), p = e("./nodejsUtils"), m = e("./nodejs/NodejsStreamInputAdapter"), _ = function(e2) { + "/" === e2.slice(-1) && (e2 = e2.substring(0, e2.length - 1)); + var t2 = e2.lastIndexOf("/"); + return 0 < t2 ? e2.substring(0, t2) : ""; + }, g = function(e2) { + return "/" !== e2.slice(-1) && (e2 += "/"), e2; + }, b = function(e2, t2) { + return t2 = void 0 !== t2 ? t2 : f.createFolders, e2 = g(e2), this.files[e2] || s.call(this, e2, null, { dir: true, createFolders: t2 }), this.files[e2]; + }; + function h(e2) { + return "[object RegExp]" === Object.prototype.toString.call(e2); + } + var n = { load: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, forEach: function(e2) { + var t2, r2, n2; + for (t2 in this.files) + n2 = this.files[t2], (r2 = t2.slice(this.root.length, t2.length)) && t2.slice(0, this.root.length) === this.root && e2(r2, n2); + }, filter: function(r2) { + var n2 = []; + return this.forEach(function(e2, t2) { + r2(e2, t2) && n2.push(t2); + }), n2; + }, file: function(e2, t2, r2) { + if (1 !== arguments.length) + return e2 = this.root + e2, s.call(this, e2, t2, r2), this; + if (h(e2)) { + var n2 = e2; + return this.filter(function(e3, t3) { + return !t3.dir && n2.test(e3); + }); + } + var i2 = this.files[this.root + e2]; + return i2 && !i2.dir ? i2 : null; + }, folder: function(r2) { + if (!r2) + return this; + if (h(r2)) + return this.filter(function(e3, t3) { + return t3.dir && r2.test(e3); + }); + var e2 = this.root + r2, t2 = b.call(this, e2), n2 = this.clone(); + return n2.root = t2.name, n2; + }, remove: function(r2) { + r2 = this.root + r2; + var e2 = this.files[r2]; + if (e2 || ("/" !== r2.slice(-1) && (r2 += "/"), e2 = this.files[r2]), e2 && !e2.dir) + delete this.files[r2]; + else + for (var t2 = this.filter(function(e3, t3) { + return t3.name.slice(0, r2.length) === r2; + }), n2 = 0; n2 < t2.length; n2++) + delete this.files[t2[n2].name]; + return this; + }, generate: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, generateInternalStream: function(e2) { + var t2, r2 = {}; + try { + if ((r2 = u.extend(e2 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r2.type.toLowerCase(), r2.compression = r2.compression.toUpperCase(), "binarystring" === r2.type && (r2.type = "string"), !r2.type) + throw new Error("No output type specified."); + u.checkSupport(r2.type), "darwin" !== r2.platform && "freebsd" !== r2.platform && "linux" !== r2.platform && "sunos" !== r2.platform || (r2.platform = "UNIX"), "win32" === r2.platform && (r2.platform = "DOS"); + var n2 = r2.comment || this.comment || ""; + t2 = o.generateWorker(this, r2, n2); + } catch (e3) { + (t2 = new l("error")).error(e3); + } + return new a(t2, r2.type || "string", r2.mimeType); + }, generateAsync: function(e2, t2) { + return this.generateInternalStream(e2).accumulate(t2); + }, generateNodeStream: function(e2, t2) { + return (e2 = e2 || {}).type || (e2.type = "nodebuffer"), this.generateInternalStream(e2).toNodejsStream(t2); + } }; + t.exports = n; + }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e, t, r) { + "use strict"; + t.exports = e("stream"); + }, { stream: void 0 }], 17: [function(e, t, r) { + "use strict"; + var n = e("./DataReader"); + function i(e2) { + n.call(this, e2); + for (var t2 = 0; t2 < this.data.length; t2++) + e2[t2] = 255 & e2[t2]; + } + e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { + return this.data[this.zero + e2]; + }, i.prototype.lastIndexOfSignature = function(e2) { + for (var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.length - 4; 0 <= s; --s) + if (this.data[s] === t2 && this.data[s + 1] === r2 && this.data[s + 2] === n2 && this.data[s + 3] === i2) + return s - this.zero; + return -1; + }, i.prototype.readAndCheckSignature = function(e2) { + var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.readData(4); + return t2 === s[0] && r2 === s[1] && n2 === s[2] && i2 === s[3]; + }, i.prototype.readData = function(e2) { + if (this.checkOffset(e2), 0 === e2) + return []; + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e, t, r) { + "use strict"; + var n = e("../utils"); + function i(e2) { + this.data = e2, this.length = e2.length, this.index = 0, this.zero = 0; + } + i.prototype = { checkOffset: function(e2) { + this.checkIndex(this.index + e2); + }, checkIndex: function(e2) { + if (this.length < this.zero + e2 || e2 < 0) + throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e2 + "). Corrupted zip ?"); + }, setIndex: function(e2) { + this.checkIndex(e2), this.index = e2; + }, skip: function(e2) { + this.setIndex(this.index + e2); + }, byteAt: function() { + }, readInt: function(e2) { + var t2, r2 = 0; + for (this.checkOffset(e2), t2 = this.index + e2 - 1; t2 >= this.index; t2--) + r2 = (r2 << 8) + this.byteAt(t2); + return this.index += e2, r2; + }, readString: function(e2) { + return n.transformTo("string", this.readData(e2)); + }, readData: function() { + }, lastIndexOfSignature: function() { + }, readAndCheckSignature: function() { + }, readDate: function() { + var e2 = this.readInt(4); + return new Date(Date.UTC(1980 + (e2 >> 25 & 127), (e2 >> 21 & 15) - 1, e2 >> 16 & 31, e2 >> 11 & 31, e2 >> 5 & 63, (31 & e2) << 1)); + } }, t.exports = i; + }, { "../utils": 32 }], 19: [function(e, t, r) { + "use strict"; + var n = e("./Uint8ArrayReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.readData = function(e2) { + this.checkOffset(e2); + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e, t, r) { + "use strict"; + var n = e("./DataReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { + return this.data.charCodeAt(this.zero + e2); + }, i.prototype.lastIndexOfSignature = function(e2) { + return this.data.lastIndexOf(e2) - this.zero; + }, i.prototype.readAndCheckSignature = function(e2) { + return e2 === this.readData(4); + }, i.prototype.readData = function(e2) { + this.checkOffset(e2); + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e, t, r) { + "use strict"; + var n = e("./ArrayReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.readData = function(e2) { + if (this.checkOffset(e2), 0 === e2) + return new Uint8Array(0); + var t2 = this.data.subarray(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("../support"), s = e("./ArrayReader"), a = e("./StringReader"), o = e("./NodeBufferReader"), h = e("./Uint8ArrayReader"); + t.exports = function(e2) { + var t2 = n.getTypeOf(e2); + return n.checkSupport(t2), "string" !== t2 || i.uint8array ? "nodebuffer" === t2 ? new o(e2) : i.uint8array ? new h(n.transformTo("uint8array", e2)) : new s(n.transformTo("array", e2)) : new a(e2); + }; + }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e, t, r) { + "use strict"; + r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\x07\b"; + }, {}], 24: [function(e, t, r) { + "use strict"; + var n = e("./GenericWorker"), i = e("../utils"); + function s(e2) { + n.call(this, "ConvertWorker to " + e2), this.destType = e2; + } + i.inherits(s, n), s.prototype.processChunk = function(e2) { + this.push({ data: i.transformTo(this.destType, e2.data), meta: e2.meta }); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e, t, r) { + "use strict"; + var n = e("./GenericWorker"), i = e("../crc32"); + function s() { + n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); + } + e("../utils").inherits(s, n), s.prototype.processChunk = function(e2) { + this.streamInfo.crc32 = i(e2.data, this.streamInfo.crc32 || 0), this.push(e2); + }, t.exports = s; + }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("./GenericWorker"); + function s(e2) { + i.call(this, "DataLengthProbe for " + e2), this.propName = e2, this.withStreamInfo(e2, 0); + } + n.inherits(s, i), s.prototype.processChunk = function(e2) { + if (e2) { + var t2 = this.streamInfo[this.propName] || 0; + this.streamInfo[this.propName] = t2 + e2.data.length; + } + i.prototype.processChunk.call(this, e2); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("./GenericWorker"); + function s(e2) { + i.call(this, "DataWorker"); + var t2 = this; + this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e2.then(function(e3) { + t2.dataIsReady = true, t2.data = e3, t2.max = e3 && e3.length || 0, t2.type = n.getTypeOf(e3), t2.isPaused || t2._tickAndRepeat(); + }, function(e3) { + t2.error(e3); + }); + } + n.inherits(s, i), s.prototype.cleanUp = function() { + i.prototype.cleanUp.call(this), this.data = null; + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n.delay(this._tickAndRepeat, [], this)), true); + }, s.prototype._tickAndRepeat = function() { + this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); + }, s.prototype._tick = function() { + if (this.isPaused || this.isFinished) + return false; + var e2 = null, t2 = Math.min(this.max, this.index + 16384); + if (this.index >= this.max) + return this.end(); + switch (this.type) { + case "string": + e2 = this.data.substring(this.index, t2); + break; + case "uint8array": + e2 = this.data.subarray(this.index, t2); + break; + case "array": + case "nodebuffer": + e2 = this.data.slice(this.index, t2); + } + return this.index = t2, this.push({ data: e2, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e, t, r) { + "use strict"; + function n(e2) { + this.name = e2 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; + } + n.prototype = { push: function(e2) { + this.emit("data", e2); + }, end: function() { + if (this.isFinished) + return false; + this.flush(); + try { + this.emit("end"), this.cleanUp(), this.isFinished = true; + } catch (e2) { + this.emit("error", e2); + } + return true; + }, error: function(e2) { + return !this.isFinished && (this.isPaused ? this.generatedError = e2 : (this.isFinished = true, this.emit("error", e2), this.previous && this.previous.error(e2), this.cleanUp()), true); + }, on: function(e2, t2) { + return this._listeners[e2].push(t2), this; + }, cleanUp: function() { + this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; + }, emit: function(e2, t2) { + if (this._listeners[e2]) + for (var r2 = 0; r2 < this._listeners[e2].length; r2++) + this._listeners[e2][r2].call(this, t2); + }, pipe: function(e2) { + return e2.registerPrevious(this); + }, registerPrevious: function(e2) { + if (this.isLocked) + throw new Error("The stream '" + this + "' has already been used."); + this.streamInfo = e2.streamInfo, this.mergeStreamInfo(), this.previous = e2; + var t2 = this; + return e2.on("data", function(e3) { + t2.processChunk(e3); + }), e2.on("end", function() { + t2.end(); + }), e2.on("error", function(e3) { + t2.error(e3); + }), this; + }, pause: function() { + return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); + }, resume: function() { + if (!this.isPaused || this.isFinished) + return false; + var e2 = this.isPaused = false; + return this.generatedError && (this.error(this.generatedError), e2 = true), this.previous && this.previous.resume(), !e2; + }, flush: function() { + }, processChunk: function(e2) { + this.push(e2); + }, withStreamInfo: function(e2, t2) { + return this.extraStreamInfo[e2] = t2, this.mergeStreamInfo(), this; + }, mergeStreamInfo: function() { + for (var e2 in this.extraStreamInfo) + Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e2) && (this.streamInfo[e2] = this.extraStreamInfo[e2]); + }, lock: function() { + if (this.isLocked) + throw new Error("The stream '" + this + "' has already been used."); + this.isLocked = true, this.previous && this.previous.lock(); + }, toString: function() { + var e2 = "Worker " + this.name; + return this.previous ? this.previous + " -> " + e2 : e2; + } }, t.exports = n; + }, {}], 29: [function(e, t, r) { + "use strict"; + var h = e("../utils"), i = e("./ConvertWorker"), s = e("./GenericWorker"), u = e("../base64"), n = e("../support"), a = e("../external"), o = null; + if (n.nodestream) + try { + o = e("../nodejs/NodejsStreamOutputAdapter"); + } catch (e2) { + } + function l(e2, o2) { + return new a.Promise(function(t2, r2) { + var n2 = [], i2 = e2._internalType, s2 = e2._outputType, a2 = e2._mimeType; + e2.on("data", function(e3, t3) { + n2.push(e3), o2 && o2(t3); + }).on("error", function(e3) { + n2 = [], r2(e3); + }).on("end", function() { + try { + var e3 = function(e4, t3, r3) { + switch (e4) { + case "blob": + return h.newBlob(h.transformTo("arraybuffer", t3), r3); + case "base64": + return u.encode(t3); + default: + return h.transformTo(e4, t3); + } + }(s2, function(e4, t3) { + var r3, n3 = 0, i3 = null, s3 = 0; + for (r3 = 0; r3 < t3.length; r3++) + s3 += t3[r3].length; + switch (e4) { + case "string": + return t3.join(""); + case "array": + return Array.prototype.concat.apply([], t3); + case "uint8array": + for (i3 = new Uint8Array(s3), r3 = 0; r3 < t3.length; r3++) + i3.set(t3[r3], n3), n3 += t3[r3].length; + return i3; + case "nodebuffer": + return Buffer.concat(t3); + default: + throw new Error("concat : unsupported type '" + e4 + "'"); + } + }(i2, n2), a2); + t2(e3); + } catch (e4) { + r2(e4); + } + n2 = []; + }).resume(); + }); + } + function f(e2, t2, r2) { + var n2 = t2; + switch (t2) { + case "blob": + case "arraybuffer": + n2 = "uint8array"; + break; + case "base64": + n2 = "string"; + } + try { + this._internalType = n2, this._outputType = t2, this._mimeType = r2, h.checkSupport(n2), this._worker = e2.pipe(new i(n2)), e2.lock(); + } catch (e3) { + this._worker = new s("error"), this._worker.error(e3); + } + } + f.prototype = { accumulate: function(e2) { + return l(this, e2); + }, on: function(e2, t2) { + var r2 = this; + return "data" === e2 ? this._worker.on(e2, function(e3) { + t2.call(r2, e3.data, e3.meta); + }) : this._worker.on(e2, function() { + h.delay(t2, arguments, r2); + }), this; + }, resume: function() { + return h.delay(this._worker.resume, [], this._worker), this; + }, pause: function() { + return this._worker.pause(), this; + }, toNodejsStream: function(e2) { + if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) + throw new Error(this._outputType + " is not supported by this method"); + return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e2); + } }, t.exports = f; + }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e, t, r) { + "use strict"; + if (r.base64 = true, r.array = true, r.string = true, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) + r.blob = false; + else { + var n = new ArrayBuffer(0); + try { + r.blob = 0 === new Blob([n], { type: "application/zip" }).size; + } catch (e2) { + try { + var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); + i.append(n), r.blob = 0 === i.getBlob("application/zip").size; + } catch (e3) { + r.blob = false; + } + } + } + try { + r.nodestream = !!e("readable-stream").Readable; + } catch (e2) { + r.nodestream = false; + } + }, { "readable-stream": 16 }], 31: [function(e, t, s) { + "use strict"; + for (var o = e("./utils"), h = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), u = new Array(256), i = 0; i < 256; i++) + u[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1; + u[254] = u[254] = 1; + function a() { + n.call(this, "utf-8 decode"), this.leftOver = null; + } + function l() { + n.call(this, "utf-8 encode"); + } + s.utf8encode = function(e2) { + return h.nodebuffer ? r.newBufferFrom(e2, "utf-8") : function(e3) { + var t2, r2, n2, i2, s2, a2 = e3.length, o2 = 0; + for (i2 = 0; i2 < a2; i2++) + 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o2 += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; + for (t2 = h.uint8array ? new Uint8Array(o2) : new Array(o2), i2 = s2 = 0; s2 < o2; i2++) + 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); + return t2; + }(e2); + }, s.utf8decode = function(e2) { + return h.nodebuffer ? o.transformTo("nodebuffer", e2).toString("utf-8") : function(e3) { + var t2, r2, n2, i2, s2 = e3.length, a2 = new Array(2 * s2); + for (t2 = r2 = 0; t2 < s2; ) + if ((n2 = e3[t2++]) < 128) + a2[r2++] = n2; + else if (4 < (i2 = u[n2])) + a2[r2++] = 65533, t2 += i2 - 1; + else { + for (n2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && t2 < s2; ) + n2 = n2 << 6 | 63 & e3[t2++], i2--; + 1 < i2 ? a2[r2++] = 65533 : n2 < 65536 ? a2[r2++] = n2 : (n2 -= 65536, a2[r2++] = 55296 | n2 >> 10 & 1023, a2[r2++] = 56320 | 1023 & n2); + } + return a2.length !== r2 && (a2.subarray ? a2 = a2.subarray(0, r2) : a2.length = r2), o.applyFromCharCode(a2); + }(e2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2)); + }, o.inherits(a, n), a.prototype.processChunk = function(e2) { + var t2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2.data); + if (this.leftOver && this.leftOver.length) { + if (h.uint8array) { + var r2 = t2; + (t2 = new Uint8Array(r2.length + this.leftOver.length)).set(this.leftOver, 0), t2.set(r2, this.leftOver.length); + } else + t2 = this.leftOver.concat(t2); + this.leftOver = null; + } + var n2 = function(e3, t3) { + var r3; + for ((t3 = t3 || e3.length) > e3.length && (t3 = e3.length), r3 = t3 - 1; 0 <= r3 && 128 == (192 & e3[r3]); ) + r3--; + return r3 < 0 ? t3 : 0 === r3 ? t3 : r3 + u[e3[r3]] > t3 ? r3 : t3; + }(t2), i2 = t2; + n2 !== t2.length && (h.uint8array ? (i2 = t2.subarray(0, n2), this.leftOver = t2.subarray(n2, t2.length)) : (i2 = t2.slice(0, n2), this.leftOver = t2.slice(n2, t2.length))), this.push({ data: s.utf8decode(i2), meta: e2.meta }); + }, a.prototype.flush = function() { + this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); + }, s.Utf8DecodeWorker = a, o.inherits(l, n), l.prototype.processChunk = function(e2) { + this.push({ data: s.utf8encode(e2.data), meta: e2.meta }); + }, s.Utf8EncodeWorker = l; + }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e, t, a) { + "use strict"; + var o = e("./support"), h = e("./base64"), r = e("./nodejsUtils"), u = e("./external"); + function n(e2) { + return e2; + } + function l(e2, t2) { + for (var r2 = 0; r2 < e2.length; ++r2) + t2[r2] = 255 & e2.charCodeAt(r2); + return t2; + } + e("setimmediate"), a.newBlob = function(t2, r2) { + a.checkSupport("blob"); + try { + return new Blob([t2], { type: r2 }); + } catch (e2) { + try { + var n2 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); + return n2.append(t2), n2.getBlob(r2); + } catch (e3) { + throw new Error("Bug : can't construct the Blob."); + } + } + }; + var i = { stringifyByChunk: function(e2, t2, r2) { + var n2 = [], i2 = 0, s2 = e2.length; + if (s2 <= r2) + return String.fromCharCode.apply(null, e2); + for (; i2 < s2; ) + "array" === t2 || "nodebuffer" === t2 ? n2.push(String.fromCharCode.apply(null, e2.slice(i2, Math.min(i2 + r2, s2)))) : n2.push(String.fromCharCode.apply(null, e2.subarray(i2, Math.min(i2 + r2, s2)))), i2 += r2; + return n2.join(""); + }, stringifyByChar: function(e2) { + for (var t2 = "", r2 = 0; r2 < e2.length; r2++) + t2 += String.fromCharCode(e2[r2]); + return t2; + }, applyCanBeUsed: { uint8array: function() { + try { + return o.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; + } catch (e2) { + return false; + } + }(), nodebuffer: function() { + try { + return o.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length; + } catch (e2) { + return false; + } + }() } }; + function s(e2) { + var t2 = 65536, r2 = a.getTypeOf(e2), n2 = true; + if ("uint8array" === r2 ? n2 = i.applyCanBeUsed.uint8array : "nodebuffer" === r2 && (n2 = i.applyCanBeUsed.nodebuffer), n2) + for (; 1 < t2; ) + try { + return i.stringifyByChunk(e2, r2, t2); + } catch (e3) { + t2 = Math.floor(t2 / 2); + } + return i.stringifyByChar(e2); + } + function f(e2, t2) { + for (var r2 = 0; r2 < e2.length; r2++) + t2[r2] = e2[r2]; + return t2; + } + a.applyFromCharCode = s; + var c = {}; + c.string = { string: n, array: function(e2) { + return l(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return c.string.uint8array(e2).buffer; + }, uint8array: function(e2) { + return l(e2, new Uint8Array(e2.length)); + }, nodebuffer: function(e2) { + return l(e2, r.allocBuffer(e2.length)); + } }, c.array = { string: s, array: n, arraybuffer: function(e2) { + return new Uint8Array(e2).buffer; + }, uint8array: function(e2) { + return new Uint8Array(e2); + }, nodebuffer: function(e2) { + return r.newBufferFrom(e2); + } }, c.arraybuffer = { string: function(e2) { + return s(new Uint8Array(e2)); + }, array: function(e2) { + return f(new Uint8Array(e2), new Array(e2.byteLength)); + }, arraybuffer: n, uint8array: function(e2) { + return new Uint8Array(e2); + }, nodebuffer: function(e2) { + return r.newBufferFrom(new Uint8Array(e2)); + } }, c.uint8array = { string: s, array: function(e2) { + return f(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return e2.buffer; + }, uint8array: n, nodebuffer: function(e2) { + return r.newBufferFrom(e2); + } }, c.nodebuffer = { string: s, array: function(e2) { + return f(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return c.nodebuffer.uint8array(e2).buffer; + }, uint8array: function(e2) { + return f(e2, new Uint8Array(e2.length)); + }, nodebuffer: n }, a.transformTo = function(e2, t2) { + if (t2 = t2 || "", !e2) + return t2; + a.checkSupport(e2); + var r2 = a.getTypeOf(t2); + return c[r2][e2](t2); + }, a.resolve = function(e2) { + for (var t2 = e2.split("/"), r2 = [], n2 = 0; n2 < t2.length; n2++) { + var i2 = t2[n2]; + "." === i2 || "" === i2 && 0 !== n2 && n2 !== t2.length - 1 || (".." === i2 ? r2.pop() : r2.push(i2)); + } + return r2.join("/"); + }, a.getTypeOf = function(e2) { + return "string" == typeof e2 ? "string" : "[object Array]" === Object.prototype.toString.call(e2) ? "array" : o.nodebuffer && r.isBuffer(e2) ? "nodebuffer" : o.uint8array && e2 instanceof Uint8Array ? "uint8array" : o.arraybuffer && e2 instanceof ArrayBuffer ? "arraybuffer" : void 0; + }, a.checkSupport = function(e2) { + if (!o[e2.toLowerCase()]) + throw new Error(e2 + " is not supported by this platform"); + }, a.MAX_VALUE_16BITS = 65535, a.MAX_VALUE_32BITS = -1, a.pretty = function(e2) { + var t2, r2, n2 = ""; + for (r2 = 0; r2 < (e2 || "").length; r2++) + n2 += "\\x" + ((t2 = e2.charCodeAt(r2)) < 16 ? "0" : "") + t2.toString(16).toUpperCase(); + return n2; + }, a.delay = function(e2, t2, r2) { + setImmediate(function() { + e2.apply(r2 || null, t2 || []); + }); + }, a.inherits = function(e2, t2) { + function r2() { + } + r2.prototype = t2.prototype, e2.prototype = new r2(); + }, a.extend = function() { + var e2, t2, r2 = {}; + for (e2 = 0; e2 < arguments.length; e2++) + for (t2 in arguments[e2]) + Object.prototype.hasOwnProperty.call(arguments[e2], t2) && void 0 === r2[t2] && (r2[t2] = arguments[e2][t2]); + return r2; + }, a.prepareContent = function(r2, e2, n2, i2, s2) { + return u.Promise.resolve(e2).then(function(n3) { + return o.blob && (n3 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n3))) && "undefined" != typeof FileReader ? new u.Promise(function(t2, r3) { + var e3 = new FileReader(); + e3.onload = function(e4) { + t2(e4.target.result); + }, e3.onerror = function(e4) { + r3(e4.target.error); + }, e3.readAsArrayBuffer(n3); + }) : n3; + }).then(function(e3) { + var t2 = a.getTypeOf(e3); + return t2 ? ("arraybuffer" === t2 ? e3 = a.transformTo("uint8array", e3) : "string" === t2 && (s2 ? e3 = h.decode(e3) : n2 && true !== i2 && (e3 = function(e4) { + return l(e4, o.uint8array ? new Uint8Array(e4.length) : new Array(e4.length)); + }(e3))), e3) : u.Promise.reject(new Error("Can't read the data of '" + r2 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); + }); + }; + }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e, t, r) { + "use strict"; + var n = e("./reader/readerFor"), i = e("./utils"), s = e("./signature"), a = e("./zipEntry"), o = e("./support"); + function h(e2) { + this.files = [], this.loadOptions = e2; + } + h.prototype = { checkSignature: function(e2) { + if (!this.reader.readAndCheckSignature(e2)) { + this.reader.index -= 4; + var t2 = this.reader.readString(4); + throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t2) + ", expected " + i.pretty(e2) + ")"); + } + }, isSignature: function(e2, t2) { + var r2 = this.reader.index; + this.reader.setIndex(e2); + var n2 = this.reader.readString(4) === t2; + return this.reader.setIndex(r2), n2; + }, readBlockEndOfCentral: function() { + this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); + var e2 = this.reader.readData(this.zipCommentLength), t2 = o.uint8array ? "uint8array" : "array", r2 = i.transformTo(t2, e2); + this.zipComment = this.loadOptions.decodeFileName(r2); + }, readBlockZip64EndOfCentral: function() { + this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; + for (var e2, t2, r2, n2 = this.zip64EndOfCentralSize - 44; 0 < n2; ) + e2 = this.reader.readInt(2), t2 = this.reader.readInt(4), r2 = this.reader.readData(t2), this.zip64ExtensibleData[e2] = { id: e2, length: t2, value: r2 }; + }, readBlockZip64EndOfCentralLocator: function() { + if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) + throw new Error("Multi-volumes zip are not supported"); + }, readLocalFiles: function() { + var e2, t2; + for (e2 = 0; e2 < this.files.length; e2++) + t2 = this.files[e2], this.reader.setIndex(t2.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t2.readLocalPart(this.reader), t2.handleUTF8(), t2.processAttributes(); + }, readCentralDir: function() { + var e2; + for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER); ) + (e2 = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e2); + if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) + throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); + }, readEndOfCentral: function() { + var e2 = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END); + if (e2 < 0) + throw !this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); + this.reader.setIndex(e2); + var t2 = e2; + if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) { + if (this.zip64 = true, (e2 = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); + if (this.reader.setIndex(e2), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); + this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); + } + var r2 = this.centralDirOffset + this.centralDirSize; + this.zip64 && (r2 += 20, r2 += 12 + this.zip64EndOfCentralSize); + var n2 = t2 - r2; + if (0 < n2) + this.isSignature(t2, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n2); + else if (n2 < 0) + throw new Error("Corrupted zip: missing " + Math.abs(n2) + " bytes."); + }, prepareReader: function(e2) { + this.reader = n(e2); + }, load: function(e2) { + this.prepareReader(e2), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); + } }, t.exports = h; + }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e, t, r) { + "use strict"; + var n = e("./reader/readerFor"), s = e("./utils"), i = e("./compressedObject"), a = e("./crc32"), o = e("./utf8"), h = e("./compressions"), u = e("./support"); + function l(e2, t2) { + this.options = e2, this.loadOptions = t2; + } + l.prototype = { isEncrypted: function() { + return 1 == (1 & this.bitFlag); + }, useUTF8: function() { + return 2048 == (2048 & this.bitFlag); + }, readLocalPart: function(e2) { + var t2, r2; + if (e2.skip(22), this.fileNameLength = e2.readInt(2), r2 = e2.readInt(2), this.fileName = e2.readData(this.fileNameLength), e2.skip(r2), -1 === this.compressedSize || -1 === this.uncompressedSize) + throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); + if (null === (t2 = function(e3) { + for (var t3 in h) + if (Object.prototype.hasOwnProperty.call(h, t3) && h[t3].magic === e3) + return h[t3]; + return null; + }(this.compressionMethod))) + throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")"); + this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t2, e2.readData(this.compressedSize)); + }, readCentralPart: function(e2) { + this.versionMadeBy = e2.readInt(2), e2.skip(2), this.bitFlag = e2.readInt(2), this.compressionMethod = e2.readString(2), this.date = e2.readDate(), this.crc32 = e2.readInt(4), this.compressedSize = e2.readInt(4), this.uncompressedSize = e2.readInt(4); + var t2 = e2.readInt(2); + if (this.extraFieldsLength = e2.readInt(2), this.fileCommentLength = e2.readInt(2), this.diskNumberStart = e2.readInt(2), this.internalFileAttributes = e2.readInt(2), this.externalFileAttributes = e2.readInt(4), this.localHeaderOffset = e2.readInt(4), this.isEncrypted()) + throw new Error("Encrypted zip are not supported"); + e2.skip(t2), this.readExtraFields(e2), this.parseZIP64ExtraField(e2), this.fileComment = e2.readData(this.fileCommentLength); + }, processAttributes: function() { + this.unixPermissions = null, this.dosPermissions = null; + var e2 = this.versionMadeBy >> 8; + this.dir = !!(16 & this.externalFileAttributes), 0 == e2 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e2 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); + }, parseZIP64ExtraField: function() { + if (this.extraFields[1]) { + var e2 = n(this.extraFields[1].value); + this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = e2.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = e2.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = e2.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = e2.readInt(4)); + } + }, readExtraFields: function(e2) { + var t2, r2, n2, i2 = e2.index + this.extraFieldsLength; + for (this.extraFields || (this.extraFields = {}); e2.index + 4 < i2; ) + t2 = e2.readInt(2), r2 = e2.readInt(2), n2 = e2.readData(r2), this.extraFields[t2] = { id: t2, length: r2, value: n2 }; + e2.setIndex(i2); + }, handleUTF8: function() { + var e2 = u.uint8array ? "uint8array" : "array"; + if (this.useUTF8()) + this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment); + else { + var t2 = this.findExtraFieldUnicodePath(); + if (null !== t2) + this.fileNameStr = t2; + else { + var r2 = s.transformTo(e2, this.fileName); + this.fileNameStr = this.loadOptions.decodeFileName(r2); + } + var n2 = this.findExtraFieldUnicodeComment(); + if (null !== n2) + this.fileCommentStr = n2; + else { + var i2 = s.transformTo(e2, this.fileComment); + this.fileCommentStr = this.loadOptions.decodeFileName(i2); + } + } + }, findExtraFieldUnicodePath: function() { + var e2 = this.extraFields[28789]; + if (e2) { + var t2 = n(e2.value); + return 1 !== t2.readInt(1) ? null : a(this.fileName) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); + } + return null; + }, findExtraFieldUnicodeComment: function() { + var e2 = this.extraFields[25461]; + if (e2) { + var t2 = n(e2.value); + return 1 !== t2.readInt(1) ? null : a(this.fileComment) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); + } + return null; + } }, t.exports = l; + }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e, t, r) { + "use strict"; + function n(e2, t2, r2) { + this.name = e2, this.dir = r2.dir, this.date = r2.date, this.comment = r2.comment, this.unixPermissions = r2.unixPermissions, this.dosPermissions = r2.dosPermissions, this._data = t2, this._dataBinary = r2.binary, this.options = { compression: r2.compression, compressionOptions: r2.compressionOptions }; + } + var s = e("./stream/StreamHelper"), i = e("./stream/DataWorker"), a = e("./utf8"), o = e("./compressedObject"), h = e("./stream/GenericWorker"); + n.prototype = { internalStream: function(e2) { + var t2 = null, r2 = "string"; + try { + if (!e2) + throw new Error("No output type specified."); + var n2 = "string" === (r2 = e2.toLowerCase()) || "text" === r2; + "binarystring" !== r2 && "text" !== r2 || (r2 = "string"), t2 = this._decompressWorker(); + var i2 = !this._dataBinary; + i2 && !n2 && (t2 = t2.pipe(new a.Utf8EncodeWorker())), !i2 && n2 && (t2 = t2.pipe(new a.Utf8DecodeWorker())); + } catch (e3) { + (t2 = new h("error")).error(e3); + } + return new s(t2, r2, ""); + }, async: function(e2, t2) { + return this.internalStream(e2).accumulate(t2); + }, nodeStream: function(e2, t2) { + return this.internalStream(e2 || "nodebuffer").toNodejsStream(t2); + }, _compressWorker: function(e2, t2) { + if (this._data instanceof o && this._data.compression.magic === e2.magic) + return this._data.getCompressedWorker(); + var r2 = this._decompressWorker(); + return this._dataBinary || (r2 = r2.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r2, e2, t2); + }, _decompressWorker: function() { + return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof h ? this._data : new i(this._data); + } }; + for (var u = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, f = 0; f < u.length; f++) + n.prototype[u[f]] = l; + t.exports = n; + }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e, l, t) { + (function(t2) { + "use strict"; + var r, n, e2 = t2.MutationObserver || t2.WebKitMutationObserver; + if (e2) { + var i = 0, s = new e2(u), a = t2.document.createTextNode(""); + s.observe(a, { characterData: true }), r = function() { + a.data = i = ++i % 2; + }; + } else if (t2.setImmediate || void 0 === t2.MessageChannel) + r = "document" in t2 && "onreadystatechange" in t2.document.createElement("script") ? function() { + var e3 = t2.document.createElement("script"); + e3.onreadystatechange = function() { + u(), e3.onreadystatechange = null, e3.parentNode.removeChild(e3), e3 = null; + }, t2.document.documentElement.appendChild(e3); + } : function() { + setTimeout(u, 0); + }; + else { + var o = new t2.MessageChannel(); + o.port1.onmessage = u, r = function() { + o.port2.postMessage(0); + }; + } + var h = []; + function u() { + var e3, t3; + n = true; + for (var r2 = h.length; r2; ) { + for (t3 = h, h = [], e3 = -1; ++e3 < r2; ) + t3[e3](); + r2 = h.length; + } + n = false; + } + l.exports = function(e3) { + 1 !== h.push(e3) || n || r(); + }; + }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); + }, {}], 37: [function(e, t, r) { + "use strict"; + var i = e("immediate"); + function u() { + } + var l = {}, s = ["REJECTED"], a = ["FULFILLED"], n = ["PENDING"]; + function o(e2) { + if ("function" != typeof e2) + throw new TypeError("resolver must be a function"); + this.state = n, this.queue = [], this.outcome = void 0, e2 !== u && d(this, e2); + } + function h(e2, t2, r2) { + this.promise = e2, "function" == typeof t2 && (this.onFulfilled = t2, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r2 && (this.onRejected = r2, this.callRejected = this.otherCallRejected); + } + function f(t2, r2, n2) { + i(function() { + var e2; + try { + e2 = r2(n2); + } catch (e3) { + return l.reject(t2, e3); + } + e2 === t2 ? l.reject(t2, new TypeError("Cannot resolve promise with itself")) : l.resolve(t2, e2); + }); + } + function c(e2) { + var t2 = e2 && e2.then; + if (e2 && ("object" == typeof e2 || "function" == typeof e2) && "function" == typeof t2) + return function() { + t2.apply(e2, arguments); + }; + } + function d(t2, e2) { + var r2 = false; + function n2(e3) { + r2 || (r2 = true, l.reject(t2, e3)); + } + function i2(e3) { + r2 || (r2 = true, l.resolve(t2, e3)); + } + var s2 = p(function() { + e2(i2, n2); + }); + "error" === s2.status && n2(s2.value); + } + function p(e2, t2) { + var r2 = {}; + try { + r2.value = e2(t2), r2.status = "success"; + } catch (e3) { + r2.status = "error", r2.value = e3; + } + return r2; + } + (t.exports = o).prototype.finally = function(t2) { + if ("function" != typeof t2) + return this; + var r2 = this.constructor; + return this.then(function(e2) { + return r2.resolve(t2()).then(function() { + return e2; + }); + }, function(e2) { + return r2.resolve(t2()).then(function() { + throw e2; + }); + }); + }, o.prototype.catch = function(e2) { + return this.then(null, e2); + }, o.prototype.then = function(e2, t2) { + if ("function" != typeof e2 && this.state === a || "function" != typeof t2 && this.state === s) + return this; + var r2 = new this.constructor(u); + this.state !== n ? f(r2, this.state === a ? e2 : t2, this.outcome) : this.queue.push(new h(r2, e2, t2)); + return r2; + }, h.prototype.callFulfilled = function(e2) { + l.resolve(this.promise, e2); + }, h.prototype.otherCallFulfilled = function(e2) { + f(this.promise, this.onFulfilled, e2); + }, h.prototype.callRejected = function(e2) { + l.reject(this.promise, e2); + }, h.prototype.otherCallRejected = function(e2) { + f(this.promise, this.onRejected, e2); + }, l.resolve = function(e2, t2) { + var r2 = p(c, t2); + if ("error" === r2.status) + return l.reject(e2, r2.value); + var n2 = r2.value; + if (n2) + d(e2, n2); + else { + e2.state = a, e2.outcome = t2; + for (var i2 = -1, s2 = e2.queue.length; ++i2 < s2; ) + e2.queue[i2].callFulfilled(t2); + } + return e2; + }, l.reject = function(e2, t2) { + e2.state = s, e2.outcome = t2; + for (var r2 = -1, n2 = e2.queue.length; ++r2 < n2; ) + e2.queue[r2].callRejected(t2); + return e2; + }, o.resolve = function(e2) { + if (e2 instanceof this) + return e2; + return l.resolve(new this(u), e2); + }, o.reject = function(e2) { + var t2 = new this(u); + return l.reject(t2, e2); + }, o.all = function(e2) { + var r2 = this; + if ("[object Array]" !== Object.prototype.toString.call(e2)) + return this.reject(new TypeError("must be an array")); + var n2 = e2.length, i2 = false; + if (!n2) + return this.resolve([]); + var s2 = new Array(n2), a2 = 0, t2 = -1, o2 = new this(u); + for (; ++t2 < n2; ) + h2(e2[t2], t2); + return o2; + function h2(e3, t3) { + r2.resolve(e3).then(function(e4) { + s2[t3] = e4, ++a2 !== n2 || i2 || (i2 = true, l.resolve(o2, s2)); + }, function(e4) { + i2 || (i2 = true, l.reject(o2, e4)); + }); + } + }, o.race = function(e2) { + var t2 = this; + if ("[object Array]" !== Object.prototype.toString.call(e2)) + return this.reject(new TypeError("must be an array")); + var r2 = e2.length, n2 = false; + if (!r2) + return this.resolve([]); + var i2 = -1, s2 = new this(u); + for (; ++i2 < r2; ) + a2 = e2[i2], t2.resolve(a2).then(function(e3) { + n2 || (n2 = true, l.resolve(s2, e3)); + }, function(e3) { + n2 || (n2 = true, l.reject(s2, e3)); + }); + var a2; + return s2; + }; + }, { immediate: 36 }], 38: [function(e, t, r) { + "use strict"; + var n = {}; + (0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n; + }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e, t, r) { + "use strict"; + var a = e("./zlib/deflate"), o = e("./utils/common"), h = e("./utils/strings"), i = e("./zlib/messages"), s = e("./zlib/zstream"), u = Object.prototype.toString, l = 0, f = -1, c = 0, d = 8; + function p(e2) { + if (!(this instanceof p)) + return new p(e2); + this.options = o.assign({ level: f, method: d, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c, to: "" }, e2 || {}); + var t2 = this.options; + t2.raw && 0 < t2.windowBits ? t2.windowBits = -t2.windowBits : t2.gzip && 0 < t2.windowBits && t2.windowBits < 16 && (t2.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0; + var r2 = a.deflateInit2(this.strm, t2.level, t2.method, t2.windowBits, t2.memLevel, t2.strategy); + if (r2 !== l) + throw new Error(i[r2]); + if (t2.header && a.deflateSetHeader(this.strm, t2.header), t2.dictionary) { + var n2; + if (n2 = "string" == typeof t2.dictionary ? h.string2buf(t2.dictionary) : "[object ArrayBuffer]" === u.call(t2.dictionary) ? new Uint8Array(t2.dictionary) : t2.dictionary, (r2 = a.deflateSetDictionary(this.strm, n2)) !== l) + throw new Error(i[r2]); + this._dict_set = true; + } + } + function n(e2, t2) { + var r2 = new p(t2); + if (r2.push(e2, true), r2.err) + throw r2.msg || i[r2.err]; + return r2.result; + } + p.prototype.push = function(e2, t2) { + var r2, n2, i2 = this.strm, s2 = this.options.chunkSize; + if (this.ended) + return false; + n2 = t2 === ~~t2 ? t2 : true === t2 ? 4 : 0, "string" == typeof e2 ? i2.input = h.string2buf(e2) : "[object ArrayBuffer]" === u.call(e2) ? i2.input = new Uint8Array(e2) : i2.input = e2, i2.next_in = 0, i2.avail_in = i2.input.length; + do { + if (0 === i2.avail_out && (i2.output = new o.Buf8(s2), i2.next_out = 0, i2.avail_out = s2), 1 !== (r2 = a.deflate(i2, n2)) && r2 !== l) + return this.onEnd(r2), !(this.ended = true); + 0 !== i2.avail_out && (0 !== i2.avail_in || 4 !== n2 && 2 !== n2) || ("string" === this.options.to ? this.onData(h.buf2binstring(o.shrinkBuf(i2.output, i2.next_out))) : this.onData(o.shrinkBuf(i2.output, i2.next_out))); + } while ((0 < i2.avail_in || 0 === i2.avail_out) && 1 !== r2); + return 4 === n2 ? (r2 = a.deflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === l) : 2 !== n2 || (this.onEnd(l), !(i2.avail_out = 0)); + }, p.prototype.onData = function(e2) { + this.chunks.push(e2); + }, p.prototype.onEnd = function(e2) { + e2 === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; + }, r.Deflate = p, r.deflate = n, r.deflateRaw = function(e2, t2) { + return (t2 = t2 || {}).raw = true, n(e2, t2); + }, r.gzip = function(e2, t2) { + return (t2 = t2 || {}).gzip = true, n(e2, t2); + }; + }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e, t, r) { + "use strict"; + var c = e("./zlib/inflate"), d = e("./utils/common"), p = e("./utils/strings"), m = e("./zlib/constants"), n = e("./zlib/messages"), i = e("./zlib/zstream"), s = e("./zlib/gzheader"), _ = Object.prototype.toString; + function a(e2) { + if (!(this instanceof a)) + return new a(e2); + this.options = d.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {}); + var t2 = this.options; + t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0; + var r2 = c.inflateInit2(this.strm, t2.windowBits); + if (r2 !== m.Z_OK) + throw new Error(n[r2]); + this.header = new s(), c.inflateGetHeader(this.strm, this.header); + } + function o(e2, t2) { + var r2 = new a(t2); + if (r2.push(e2, true), r2.err) + throw r2.msg || n[r2.err]; + return r2.result; + } + a.prototype.push = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h = this.strm, u = this.options.chunkSize, l = this.options.dictionary, f = false; + if (this.ended) + return false; + n2 = t2 === ~~t2 ? t2 : true === t2 ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e2 ? h.input = p.binstring2buf(e2) : "[object ArrayBuffer]" === _.call(e2) ? h.input = new Uint8Array(e2) : h.input = e2, h.next_in = 0, h.avail_in = h.input.length; + do { + if (0 === h.avail_out && (h.output = new d.Buf8(u), h.next_out = 0, h.avail_out = u), (r2 = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && l && (o2 = "string" == typeof l ? p.string2buf(l) : "[object ArrayBuffer]" === _.call(l) ? new Uint8Array(l) : l, r2 = c.inflateSetDictionary(this.strm, o2)), r2 === m.Z_BUF_ERROR && true === f && (r2 = m.Z_OK, f = false), r2 !== m.Z_STREAM_END && r2 !== m.Z_OK) + return this.onEnd(r2), !(this.ended = true); + h.next_out && (0 !== h.avail_out && r2 !== m.Z_STREAM_END && (0 !== h.avail_in || n2 !== m.Z_FINISH && n2 !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i2 = p.utf8border(h.output, h.next_out), s2 = h.next_out - i2, a2 = p.buf2string(h.output, i2), h.next_out = s2, h.avail_out = u - s2, s2 && d.arraySet(h.output, h.output, i2, s2, 0), this.onData(a2)) : this.onData(d.shrinkBuf(h.output, h.next_out)))), 0 === h.avail_in && 0 === h.avail_out && (f = true); + } while ((0 < h.avail_in || 0 === h.avail_out) && r2 !== m.Z_STREAM_END); + return r2 === m.Z_STREAM_END && (n2 = m.Z_FINISH), n2 === m.Z_FINISH ? (r2 = c.inflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === m.Z_OK) : n2 !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(h.avail_out = 0)); + }, a.prototype.onData = function(e2) { + this.chunks.push(e2); + }, a.prototype.onEnd = function(e2) { + e2 === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; + }, r.Inflate = a, r.inflate = o, r.inflateRaw = function(e2, t2) { + return (t2 = t2 || {}).raw = true, o(e2, t2); + }, r.ungzip = o; + }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e, t, r) { + "use strict"; + var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; + r.assign = function(e2) { + for (var t2 = Array.prototype.slice.call(arguments, 1); t2.length; ) { + var r2 = t2.shift(); + if (r2) { + if ("object" != typeof r2) + throw new TypeError(r2 + "must be non-object"); + for (var n2 in r2) + r2.hasOwnProperty(n2) && (e2[n2] = r2[n2]); + } + } + return e2; + }, r.shrinkBuf = function(e2, t2) { + return e2.length === t2 ? e2 : e2.subarray ? e2.subarray(0, t2) : (e2.length = t2, e2); + }; + var i = { arraySet: function(e2, t2, r2, n2, i2) { + if (t2.subarray && e2.subarray) + e2.set(t2.subarray(r2, r2 + n2), i2); + else + for (var s2 = 0; s2 < n2; s2++) + e2[i2 + s2] = t2[r2 + s2]; + }, flattenChunks: function(e2) { + var t2, r2, n2, i2, s2, a; + for (t2 = n2 = 0, r2 = e2.length; t2 < r2; t2++) + n2 += e2[t2].length; + for (a = new Uint8Array(n2), t2 = i2 = 0, r2 = e2.length; t2 < r2; t2++) + s2 = e2[t2], a.set(s2, i2), i2 += s2.length; + return a; + } }, s = { arraySet: function(e2, t2, r2, n2, i2) { + for (var s2 = 0; s2 < n2; s2++) + e2[i2 + s2] = t2[r2 + s2]; + }, flattenChunks: function(e2) { + return [].concat.apply([], e2); + } }; + r.setTyped = function(e2) { + e2 ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s)); + }, r.setTyped(n); + }, {}], 42: [function(e, t, r) { + "use strict"; + var h = e("./common"), i = true, s = true; + try { + String.fromCharCode.apply(null, [0]); + } catch (e2) { + i = false; + } + try { + String.fromCharCode.apply(null, new Uint8Array(1)); + } catch (e2) { + s = false; + } + for (var u = new h.Buf8(256), n = 0; n < 256; n++) + u[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; + function l(e2, t2) { + if (t2 < 65537 && (e2.subarray && s || !e2.subarray && i)) + return String.fromCharCode.apply(null, h.shrinkBuf(e2, t2)); + for (var r2 = "", n2 = 0; n2 < t2; n2++) + r2 += String.fromCharCode(e2[n2]); + return r2; + } + u[254] = u[254] = 1, r.string2buf = function(e2) { + var t2, r2, n2, i2, s2, a = e2.length, o = 0; + for (i2 = 0; i2 < a; i2++) + 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; + for (t2 = new h.Buf8(o), i2 = s2 = 0; s2 < o; i2++) + 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); + return t2; + }, r.buf2binstring = function(e2) { + return l(e2, e2.length); + }, r.binstring2buf = function(e2) { + for (var t2 = new h.Buf8(e2.length), r2 = 0, n2 = t2.length; r2 < n2; r2++) + t2[r2] = e2.charCodeAt(r2); + return t2; + }, r.buf2string = function(e2, t2) { + var r2, n2, i2, s2, a = t2 || e2.length, o = new Array(2 * a); + for (r2 = n2 = 0; r2 < a; ) + if ((i2 = e2[r2++]) < 128) + o[n2++] = i2; + else if (4 < (s2 = u[i2])) + o[n2++] = 65533, r2 += s2 - 1; + else { + for (i2 &= 2 === s2 ? 31 : 3 === s2 ? 15 : 7; 1 < s2 && r2 < a; ) + i2 = i2 << 6 | 63 & e2[r2++], s2--; + 1 < s2 ? o[n2++] = 65533 : i2 < 65536 ? o[n2++] = i2 : (i2 -= 65536, o[n2++] = 55296 | i2 >> 10 & 1023, o[n2++] = 56320 | 1023 & i2); + } + return l(o, n2); + }, r.utf8border = function(e2, t2) { + var r2; + for ((t2 = t2 || e2.length) > e2.length && (t2 = e2.length), r2 = t2 - 1; 0 <= r2 && 128 == (192 & e2[r2]); ) + r2--; + return r2 < 0 ? t2 : 0 === r2 ? t2 : r2 + u[e2[r2]] > t2 ? r2 : t2; + }; + }, { "./common": 41 }], 43: [function(e, t, r) { + "use strict"; + t.exports = function(e2, t2, r2, n) { + for (var i = 65535 & e2 | 0, s = e2 >>> 16 & 65535 | 0, a = 0; 0 !== r2; ) { + for (r2 -= a = 2e3 < r2 ? 2e3 : r2; s = s + (i = i + t2[n++] | 0) | 0, --a; ) + ; + i %= 65521, s %= 65521; + } + return i | s << 16 | 0; + }; + }, {}], 44: [function(e, t, r) { + "use strict"; + t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; + }, {}], 45: [function(e, t, r) { + "use strict"; + var o = function() { + for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { + e2 = r2; + for (var n = 0; n < 8; n++) + e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; + t2[r2] = e2; + } + return t2; + }(); + t.exports = function(e2, t2, r2, n) { + var i = o, s = n + r2; + e2 ^= -1; + for (var a = n; a < s; a++) + e2 = e2 >>> 8 ^ i[255 & (e2 ^ t2[a])]; + return -1 ^ e2; + }; + }, {}], 46: [function(e, t, r) { + "use strict"; + var h, c = e("../utils/common"), u = e("./trees"), d = e("./adler32"), p = e("./crc32"), n = e("./messages"), l = 0, f = 4, m = 0, _ = -2, g = -1, b = 4, i = 2, v = 8, y = 9, s = 286, a = 30, o = 19, w = 2 * s + 1, k = 15, x = 3, S = 258, z = S + x + 1, C = 42, E = 113, A = 1, I = 2, O = 3, B = 4; + function R(e2, t2) { + return e2.msg = n[t2], t2; + } + function T(e2) { + return (e2 << 1) - (4 < e2 ? 9 : 0); + } + function D(e2) { + for (var t2 = e2.length; 0 <= --t2; ) + e2[t2] = 0; + } + function F(e2) { + var t2 = e2.state, r2 = t2.pending; + r2 > e2.avail_out && (r2 = e2.avail_out), 0 !== r2 && (c.arraySet(e2.output, t2.pending_buf, t2.pending_out, r2, e2.next_out), e2.next_out += r2, t2.pending_out += r2, e2.total_out += r2, e2.avail_out -= r2, t2.pending -= r2, 0 === t2.pending && (t2.pending_out = 0)); + } + function N(e2, t2) { + u._tr_flush_block(e2, 0 <= e2.block_start ? e2.block_start : -1, e2.strstart - e2.block_start, t2), e2.block_start = e2.strstart, F(e2.strm); + } + function U(e2, t2) { + e2.pending_buf[e2.pending++] = t2; + } + function P(e2, t2) { + e2.pending_buf[e2.pending++] = t2 >>> 8 & 255, e2.pending_buf[e2.pending++] = 255 & t2; + } + function L(e2, t2) { + var r2, n2, i2 = e2.max_chain_length, s2 = e2.strstart, a2 = e2.prev_length, o2 = e2.nice_match, h2 = e2.strstart > e2.w_size - z ? e2.strstart - (e2.w_size - z) : 0, u2 = e2.window, l2 = e2.w_mask, f2 = e2.prev, c2 = e2.strstart + S, d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; + e2.prev_length >= e2.good_match && (i2 >>= 2), o2 > e2.lookahead && (o2 = e2.lookahead); + do { + if (u2[(r2 = t2) + a2] === p2 && u2[r2 + a2 - 1] === d2 && u2[r2] === u2[s2] && u2[++r2] === u2[s2 + 1]) { + s2 += 2, r2++; + do { + } while (u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && s2 < c2); + if (n2 = S - (c2 - s2), s2 = c2 - S, a2 < n2) { + if (e2.match_start = t2, o2 <= (a2 = n2)) + break; + d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; + } + } + } while ((t2 = f2[t2 & l2]) > h2 && 0 != --i2); + return a2 <= e2.lookahead ? a2 : e2.lookahead; + } + function j(e2) { + var t2, r2, n2, i2, s2, a2, o2, h2, u2, l2, f2 = e2.w_size; + do { + if (i2 = e2.window_size - e2.lookahead - e2.strstart, e2.strstart >= f2 + (f2 - z)) { + for (c.arraySet(e2.window, e2.window, f2, f2, 0), e2.match_start -= f2, e2.strstart -= f2, e2.block_start -= f2, t2 = r2 = e2.hash_size; n2 = e2.head[--t2], e2.head[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) + ; + for (t2 = r2 = f2; n2 = e2.prev[--t2], e2.prev[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) + ; + i2 += f2; + } + if (0 === e2.strm.avail_in) + break; + if (a2 = e2.strm, o2 = e2.window, h2 = e2.strstart + e2.lookahead, u2 = i2, l2 = void 0, l2 = a2.avail_in, u2 < l2 && (l2 = u2), r2 = 0 === l2 ? 0 : (a2.avail_in -= l2, c.arraySet(o2, a2.input, a2.next_in, l2, h2), 1 === a2.state.wrap ? a2.adler = d(a2.adler, o2, l2, h2) : 2 === a2.state.wrap && (a2.adler = p(a2.adler, o2, l2, h2)), a2.next_in += l2, a2.total_in += l2, l2), e2.lookahead += r2, e2.lookahead + e2.insert >= x) + for (s2 = e2.strstart - e2.insert, e2.ins_h = e2.window[s2], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + 1]) & e2.hash_mask; e2.insert && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + x - 1]) & e2.hash_mask, e2.prev[s2 & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = s2, s2++, e2.insert--, !(e2.lookahead + e2.insert < x)); ) + ; + } while (e2.lookahead < z && 0 !== e2.strm.avail_in); + } + function Z(e2, t2) { + for (var r2, n2; ; ) { + if (e2.lookahead < z) { + if (j(e2), e2.lookahead < z && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 !== r2 && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2)), e2.match_length >= x) + if (n2 = u._tr_tally(e2, e2.strstart - e2.match_start, e2.match_length - x), e2.lookahead -= e2.match_length, e2.match_length <= e2.max_lazy_match && e2.lookahead >= x) { + for (e2.match_length--; e2.strstart++, e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart, 0 != --e2.match_length; ) + ; + e2.strstart++; + } else + e2.strstart += e2.match_length, e2.match_length = 0, e2.ins_h = e2.window[e2.strstart], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + 1]) & e2.hash_mask; + else + n2 = u._tr_tally(e2, 0, e2.window[e2.strstart]), e2.lookahead--, e2.strstart++; + if (n2 && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } + return e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; + } + function W(e2, t2) { + for (var r2, n2, i2; ; ) { + if (e2.lookahead < z) { + if (j(e2), e2.lookahead < z && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), e2.prev_length = e2.match_length, e2.prev_match = e2.match_start, e2.match_length = x - 1, 0 !== r2 && e2.prev_length < e2.max_lazy_match && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2), e2.match_length <= 5 && (1 === e2.strategy || e2.match_length === x && 4096 < e2.strstart - e2.match_start) && (e2.match_length = x - 1)), e2.prev_length >= x && e2.match_length <= e2.prev_length) { + for (i2 = e2.strstart + e2.lookahead - x, n2 = u._tr_tally(e2, e2.strstart - 1 - e2.prev_match, e2.prev_length - x), e2.lookahead -= e2.prev_length - 1, e2.prev_length -= 2; ++e2.strstart <= i2 && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 != --e2.prev_length; ) + ; + if (e2.match_available = 0, e2.match_length = x - 1, e2.strstart++, n2 && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } else if (e2.match_available) { + if ((n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1])) && N(e2, false), e2.strstart++, e2.lookahead--, 0 === e2.strm.avail_out) + return A; + } else + e2.match_available = 1, e2.strstart++, e2.lookahead--; + } + return e2.match_available && (n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1]), e2.match_available = 0), e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; + } + function M(e2, t2, r2, n2, i2) { + this.good_length = e2, this.max_lazy = t2, this.nice_length = r2, this.max_chain = n2, this.func = i2; + } + function H() { + this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c.Buf16(2 * w), this.dyn_dtree = new c.Buf16(2 * (2 * a + 1)), this.bl_tree = new c.Buf16(2 * (2 * o + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c.Buf16(k + 1), this.heap = new c.Buf16(2 * s + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c.Buf16(2 * s + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; + } + function G(e2) { + var t2; + return e2 && e2.state ? (e2.total_in = e2.total_out = 0, e2.data_type = i, (t2 = e2.state).pending = 0, t2.pending_out = 0, t2.wrap < 0 && (t2.wrap = -t2.wrap), t2.status = t2.wrap ? C : E, e2.adler = 2 === t2.wrap ? 0 : 1, t2.last_flush = l, u._tr_init(t2), m) : R(e2, _); + } + function K(e2) { + var t2 = G(e2); + return t2 === m && function(e3) { + e3.window_size = 2 * e3.w_size, D(e3.head), e3.max_lazy_match = h[e3.level].max_lazy, e3.good_match = h[e3.level].good_length, e3.nice_match = h[e3.level].nice_length, e3.max_chain_length = h[e3.level].max_chain, e3.strstart = 0, e3.block_start = 0, e3.lookahead = 0, e3.insert = 0, e3.match_length = e3.prev_length = x - 1, e3.match_available = 0, e3.ins_h = 0; + }(e2.state), t2; + } + function Y(e2, t2, r2, n2, i2, s2) { + if (!e2) + return _; + var a2 = 1; + if (t2 === g && (t2 = 6), n2 < 0 ? (a2 = 0, n2 = -n2) : 15 < n2 && (a2 = 2, n2 -= 16), i2 < 1 || y < i2 || r2 !== v || n2 < 8 || 15 < n2 || t2 < 0 || 9 < t2 || s2 < 0 || b < s2) + return R(e2, _); + 8 === n2 && (n2 = 9); + var o2 = new H(); + return (e2.state = o2).strm = e2, o2.wrap = a2, o2.gzhead = null, o2.w_bits = n2, o2.w_size = 1 << o2.w_bits, o2.w_mask = o2.w_size - 1, o2.hash_bits = i2 + 7, o2.hash_size = 1 << o2.hash_bits, o2.hash_mask = o2.hash_size - 1, o2.hash_shift = ~~((o2.hash_bits + x - 1) / x), o2.window = new c.Buf8(2 * o2.w_size), o2.head = new c.Buf16(o2.hash_size), o2.prev = new c.Buf16(o2.w_size), o2.lit_bufsize = 1 << i2 + 6, o2.pending_buf_size = 4 * o2.lit_bufsize, o2.pending_buf = new c.Buf8(o2.pending_buf_size), o2.d_buf = 1 * o2.lit_bufsize, o2.l_buf = 3 * o2.lit_bufsize, o2.level = t2, o2.strategy = s2, o2.method = r2, K(e2); + } + h = [new M(0, 0, 0, 0, function(e2, t2) { + var r2 = 65535; + for (r2 > e2.pending_buf_size - 5 && (r2 = e2.pending_buf_size - 5); ; ) { + if (e2.lookahead <= 1) { + if (j(e2), 0 === e2.lookahead && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + e2.strstart += e2.lookahead, e2.lookahead = 0; + var n2 = e2.block_start + r2; + if ((0 === e2.strstart || e2.strstart >= n2) && (e2.lookahead = e2.strstart - n2, e2.strstart = n2, N(e2, false), 0 === e2.strm.avail_out)) + return A; + if (e2.strstart - e2.block_start >= e2.w_size - z && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } + return e2.insert = 0, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : (e2.strstart > e2.block_start && (N(e2, false), e2.strm.avail_out), A); + }), new M(4, 4, 8, 4, Z), new M(4, 5, 16, 8, Z), new M(4, 6, 32, 32, Z), new M(4, 4, 16, 16, W), new M(8, 16, 32, 32, W), new M(8, 16, 128, 128, W), new M(8, 32, 128, 256, W), new M(32, 128, 258, 1024, W), new M(32, 258, 258, 4096, W)], r.deflateInit = function(e2, t2) { + return Y(e2, t2, v, 15, 8, 0); + }, r.deflateInit2 = Y, r.deflateReset = K, r.deflateResetKeep = G, r.deflateSetHeader = function(e2, t2) { + return e2 && e2.state ? 2 !== e2.state.wrap ? _ : (e2.state.gzhead = t2, m) : _; + }, r.deflate = function(e2, t2) { + var r2, n2, i2, s2; + if (!e2 || !e2.state || 5 < t2 || t2 < 0) + return e2 ? R(e2, _) : _; + if (n2 = e2.state, !e2.output || !e2.input && 0 !== e2.avail_in || 666 === n2.status && t2 !== f) + return R(e2, 0 === e2.avail_out ? -5 : _); + if (n2.strm = e2, r2 = n2.last_flush, n2.last_flush = t2, n2.status === C) + if (2 === n2.wrap) + e2.adler = 0, U(n2, 31), U(n2, 139), U(n2, 8), n2.gzhead ? (U(n2, (n2.gzhead.text ? 1 : 0) + (n2.gzhead.hcrc ? 2 : 0) + (n2.gzhead.extra ? 4 : 0) + (n2.gzhead.name ? 8 : 0) + (n2.gzhead.comment ? 16 : 0)), U(n2, 255 & n2.gzhead.time), U(n2, n2.gzhead.time >> 8 & 255), U(n2, n2.gzhead.time >> 16 & 255), U(n2, n2.gzhead.time >> 24 & 255), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 255 & n2.gzhead.os), n2.gzhead.extra && n2.gzhead.extra.length && (U(n2, 255 & n2.gzhead.extra.length), U(n2, n2.gzhead.extra.length >> 8 & 255)), n2.gzhead.hcrc && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending, 0)), n2.gzindex = 0, n2.status = 69) : (U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 3), n2.status = E); + else { + var a2 = v + (n2.w_bits - 8 << 4) << 8; + a2 |= (2 <= n2.strategy || n2.level < 2 ? 0 : n2.level < 6 ? 1 : 6 === n2.level ? 2 : 3) << 6, 0 !== n2.strstart && (a2 |= 32), a2 += 31 - a2 % 31, n2.status = E, P(n2, a2), 0 !== n2.strstart && (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), e2.adler = 1; + } + if (69 === n2.status) + if (n2.gzhead.extra) { + for (i2 = n2.pending; n2.gzindex < (65535 & n2.gzhead.extra.length) && (n2.pending !== n2.pending_buf_size || (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending !== n2.pending_buf_size)); ) + U(n2, 255 & n2.gzhead.extra[n2.gzindex]), n2.gzindex++; + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), n2.gzindex === n2.gzhead.extra.length && (n2.gzindex = 0, n2.status = 73); + } else + n2.status = 73; + if (73 === n2.status) + if (n2.gzhead.name) { + i2 = n2.pending; + do { + if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { + s2 = 1; + break; + } + s2 = n2.gzindex < n2.gzhead.name.length ? 255 & n2.gzhead.name.charCodeAt(n2.gzindex++) : 0, U(n2, s2); + } while (0 !== s2); + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.gzindex = 0, n2.status = 91); + } else + n2.status = 91; + if (91 === n2.status) + if (n2.gzhead.comment) { + i2 = n2.pending; + do { + if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { + s2 = 1; + break; + } + s2 = n2.gzindex < n2.gzhead.comment.length ? 255 & n2.gzhead.comment.charCodeAt(n2.gzindex++) : 0, U(n2, s2); + } while (0 !== s2); + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.status = 103); + } else + n2.status = 103; + if (103 === n2.status && (n2.gzhead.hcrc ? (n2.pending + 2 > n2.pending_buf_size && F(e2), n2.pending + 2 <= n2.pending_buf_size && (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), e2.adler = 0, n2.status = E)) : n2.status = E), 0 !== n2.pending) { + if (F(e2), 0 === e2.avail_out) + return n2.last_flush = -1, m; + } else if (0 === e2.avail_in && T(t2) <= T(r2) && t2 !== f) + return R(e2, -5); + if (666 === n2.status && 0 !== e2.avail_in) + return R(e2, -5); + if (0 !== e2.avail_in || 0 !== n2.lookahead || t2 !== l && 666 !== n2.status) { + var o2 = 2 === n2.strategy ? function(e3, t3) { + for (var r3; ; ) { + if (0 === e3.lookahead && (j(e3), 0 === e3.lookahead)) { + if (t3 === l) + return A; + break; + } + if (e3.match_length = 0, r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++, r3 && (N(e3, false), 0 === e3.strm.avail_out)) + return A; + } + return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; + }(n2, t2) : 3 === n2.strategy ? function(e3, t3) { + for (var r3, n3, i3, s3, a3 = e3.window; ; ) { + if (e3.lookahead <= S) { + if (j(e3), e3.lookahead <= S && t3 === l) + return A; + if (0 === e3.lookahead) + break; + } + if (e3.match_length = 0, e3.lookahead >= x && 0 < e3.strstart && (n3 = a3[i3 = e3.strstart - 1]) === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3]) { + s3 = e3.strstart + S; + do { + } while (n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && i3 < s3); + e3.match_length = S - (s3 - i3), e3.match_length > e3.lookahead && (e3.match_length = e3.lookahead); + } + if (e3.match_length >= x ? (r3 = u._tr_tally(e3, 1, e3.match_length - x), e3.lookahead -= e3.match_length, e3.strstart += e3.match_length, e3.match_length = 0) : (r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++), r3 && (N(e3, false), 0 === e3.strm.avail_out)) + return A; + } + return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; + }(n2, t2) : h[n2.level].func(n2, t2); + if (o2 !== O && o2 !== B || (n2.status = 666), o2 === A || o2 === O) + return 0 === e2.avail_out && (n2.last_flush = -1), m; + if (o2 === I && (1 === t2 ? u._tr_align(n2) : 5 !== t2 && (u._tr_stored_block(n2, 0, 0, false), 3 === t2 && (D(n2.head), 0 === n2.lookahead && (n2.strstart = 0, n2.block_start = 0, n2.insert = 0))), F(e2), 0 === e2.avail_out)) + return n2.last_flush = -1, m; + } + return t2 !== f ? m : n2.wrap <= 0 ? 1 : (2 === n2.wrap ? (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), U(n2, e2.adler >> 16 & 255), U(n2, e2.adler >> 24 & 255), U(n2, 255 & e2.total_in), U(n2, e2.total_in >> 8 & 255), U(n2, e2.total_in >> 16 & 255), U(n2, e2.total_in >> 24 & 255)) : (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), F(e2), 0 < n2.wrap && (n2.wrap = -n2.wrap), 0 !== n2.pending ? m : 1); + }, r.deflateEnd = function(e2) { + var t2; + return e2 && e2.state ? (t2 = e2.state.status) !== C && 69 !== t2 && 73 !== t2 && 91 !== t2 && 103 !== t2 && t2 !== E && 666 !== t2 ? R(e2, _) : (e2.state = null, t2 === E ? R(e2, -3) : m) : _; + }, r.deflateSetDictionary = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h2, u2, l2 = t2.length; + if (!e2 || !e2.state) + return _; + if (2 === (s2 = (r2 = e2.state).wrap) || 1 === s2 && r2.status !== C || r2.lookahead) + return _; + for (1 === s2 && (e2.adler = d(e2.adler, t2, l2, 0)), r2.wrap = 0, l2 >= r2.w_size && (0 === s2 && (D(r2.head), r2.strstart = 0, r2.block_start = 0, r2.insert = 0), u2 = new c.Buf8(r2.w_size), c.arraySet(u2, t2, l2 - r2.w_size, r2.w_size, 0), t2 = u2, l2 = r2.w_size), a2 = e2.avail_in, o2 = e2.next_in, h2 = e2.input, e2.avail_in = l2, e2.next_in = 0, e2.input = t2, j(r2); r2.lookahead >= x; ) { + for (n2 = r2.strstart, i2 = r2.lookahead - (x - 1); r2.ins_h = (r2.ins_h << r2.hash_shift ^ r2.window[n2 + x - 1]) & r2.hash_mask, r2.prev[n2 & r2.w_mask] = r2.head[r2.ins_h], r2.head[r2.ins_h] = n2, n2++, --i2; ) + ; + r2.strstart = n2, r2.lookahead = x - 1, j(r2); + } + return r2.strstart += r2.lookahead, r2.block_start = r2.strstart, r2.insert = r2.lookahead, r2.lookahead = 0, r2.match_length = r2.prev_length = x - 1, r2.match_available = 0, e2.next_in = o2, e2.input = h2, e2.avail_in = a2, r2.wrap = s2, m; + }, r.deflateInfo = "pako deflate (from Nodeca project)"; + }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e, t, r) { + "use strict"; + t.exports = function() { + this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; + }; + }, {}], 48: [function(e, t, r) { + "use strict"; + t.exports = function(e2, t2) { + var r2, n, i, s, a, o, h, u, l, f, c, d, p, m, _, g, b, v, y, w, k, x, S, z, C; + r2 = e2.state, n = e2.next_in, z = e2.input, i = n + (e2.avail_in - 5), s = e2.next_out, C = e2.output, a = s - (t2 - e2.avail_out), o = s + (e2.avail_out - 257), h = r2.dmax, u = r2.wsize, l = r2.whave, f = r2.wnext, c = r2.window, d = r2.hold, p = r2.bits, m = r2.lencode, _ = r2.distcode, g = (1 << r2.lenbits) - 1, b = (1 << r2.distbits) - 1; + e: + do { + p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = m[d & g]; + t: + for (; ; ) { + if (d >>>= y = v >>> 24, p -= y, 0 === (y = v >>> 16 & 255)) + C[s++] = 65535 & v; + else { + if (!(16 & y)) { + if (0 == (64 & y)) { + v = m[(65535 & v) + (d & (1 << y) - 1)]; + continue t; + } + if (32 & y) { + r2.mode = 12; + break e; + } + e2.msg = "invalid literal/length code", r2.mode = 30; + break e; + } + w = 65535 & v, (y &= 15) && (p < y && (d += z[n++] << p, p += 8), w += d & (1 << y) - 1, d >>>= y, p -= y), p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = _[d & b]; + r: + for (; ; ) { + if (d >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) { + if (0 == (64 & y)) { + v = _[(65535 & v) + (d & (1 << y) - 1)]; + continue r; + } + e2.msg = "invalid distance code", r2.mode = 30; + break e; + } + if (k = 65535 & v, p < (y &= 15) && (d += z[n++] << p, (p += 8) < y && (d += z[n++] << p, p += 8)), h < (k += d & (1 << y) - 1)) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break e; + } + if (d >>>= y, p -= y, (y = s - a) < k) { + if (l < (y = k - y) && r2.sane) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break e; + } + if (S = c, (x = 0) === f) { + if (x += u - y, y < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + } else if (f < y) { + if (x += u + f - y, (y -= f) < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + if (x = 0, f < w) { + for (w -= y = f; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + } + } else if (x += f - y, y < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + for (; 2 < w; ) + C[s++] = S[x++], C[s++] = S[x++], C[s++] = S[x++], w -= 3; + w && (C[s++] = S[x++], 1 < w && (C[s++] = S[x++])); + } else { + for (x = s - k; C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], 2 < (w -= 3); ) + ; + w && (C[s++] = C[x++], 1 < w && (C[s++] = C[x++])); + } + break; + } + } + break; + } + } while (n < i && s < o); + n -= w = p >> 3, d &= (1 << (p -= w << 3)) - 1, e2.next_in = n, e2.next_out = s, e2.avail_in = n < i ? i - n + 5 : 5 - (n - i), e2.avail_out = s < o ? o - s + 257 : 257 - (s - o), r2.hold = d, r2.bits = p; + }; + }, {}], 49: [function(e, t, r) { + "use strict"; + var I = e("../utils/common"), O = e("./adler32"), B = e("./crc32"), R = e("./inffast"), T = e("./inftrees"), D = 1, F = 2, N = 0, U = -2, P = 1, n = 852, i = 592; + function L(e2) { + return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24); + } + function s() { + this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; + } + function a(e2) { + var t2; + return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = P, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new I.Buf32(n), t2.distcode = t2.distdyn = new I.Buf32(i), t2.sane = 1, t2.back = -1, N) : U; + } + function o(e2) { + var t2; + return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, a(e2)) : U; + } + function h(e2, t2) { + var r2, n2; + return e2 && e2.state ? (n2 = e2.state, t2 < 0 ? (r2 = 0, t2 = -t2) : (r2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? U : (null !== n2.window && n2.wbits !== t2 && (n2.window = null), n2.wrap = r2, n2.wbits = t2, o(e2))) : U; + } + function u(e2, t2) { + var r2, n2; + return e2 ? (n2 = new s(), (e2.state = n2).window = null, (r2 = h(e2, t2)) !== N && (e2.state = null), r2) : U; + } + var l, f, c = true; + function j(e2) { + if (c) { + var t2; + for (l = new I.Buf32(512), f = new I.Buf32(32), t2 = 0; t2 < 144; ) + e2.lens[t2++] = 8; + for (; t2 < 256; ) + e2.lens[t2++] = 9; + for (; t2 < 280; ) + e2.lens[t2++] = 7; + for (; t2 < 288; ) + e2.lens[t2++] = 8; + for (T(D, e2.lens, 0, 288, l, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; ) + e2.lens[t2++] = 5; + T(F, e2.lens, 0, 32, f, 0, e2.work, { bits: 5 }), c = false; + } + e2.lencode = l, e2.lenbits = 9, e2.distcode = f, e2.distbits = 5; + } + function Z(e2, t2, r2, n2) { + var i2, s2 = e2.state; + return null === s2.window && (s2.wsize = 1 << s2.wbits, s2.wnext = 0, s2.whave = 0, s2.window = new I.Buf8(s2.wsize)), n2 >= s2.wsize ? (I.arraySet(s2.window, t2, r2 - s2.wsize, s2.wsize, 0), s2.wnext = 0, s2.whave = s2.wsize) : (n2 < (i2 = s2.wsize - s2.wnext) && (i2 = n2), I.arraySet(s2.window, t2, r2 - n2, i2, s2.wnext), (n2 -= i2) ? (I.arraySet(s2.window, t2, r2 - n2, n2, 0), s2.wnext = n2, s2.whave = s2.wsize) : (s2.wnext += i2, s2.wnext === s2.wsize && (s2.wnext = 0), s2.whave < s2.wsize && (s2.whave += i2))), 0; + } + r.inflateReset = o, r.inflateReset2 = h, r.inflateResetKeep = a, r.inflateInit = function(e2) { + return u(e2, 15); + }, r.inflateInit2 = u, r.inflate = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h2, u2, l2, f2, c2, d, p, m, _, g, b, v, y, w, k, x, S, z, C = 0, E = new I.Buf8(4), A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; + if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in) + return U; + 12 === (r2 = e2.state).mode && (r2.mode = 13), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, f2 = o2, c2 = h2, x = N; + e: + for (; ; ) + switch (r2.mode) { + case P: + if (0 === r2.wrap) { + r2.mode = 13; + break; + } + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (2 & r2.wrap && 35615 === u2) { + E[r2.check = 0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0), l2 = u2 = 0, r2.mode = 2; + break; + } + if (r2.flags = 0, r2.head && (r2.head.done = false), !(1 & r2.wrap) || (((255 & u2) << 8) + (u2 >> 8)) % 31) { + e2.msg = "incorrect header check", r2.mode = 30; + break; + } + if (8 != (15 & u2)) { + e2.msg = "unknown compression method", r2.mode = 30; + break; + } + if (l2 -= 4, k = 8 + (15 & (u2 >>>= 4)), 0 === r2.wbits) + r2.wbits = k; + else if (k > r2.wbits) { + e2.msg = "invalid window size", r2.mode = 30; + break; + } + r2.dmax = 1 << k, e2.adler = r2.check = 1, r2.mode = 512 & u2 ? 10 : 12, l2 = u2 = 0; + break; + case 2: + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (r2.flags = u2, 8 != (255 & r2.flags)) { + e2.msg = "unknown compression method", r2.mode = 30; + break; + } + if (57344 & r2.flags) { + e2.msg = "unknown header flags set", r2.mode = 30; + break; + } + r2.head && (r2.head.text = u2 >> 8 & 1), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 3; + case 3: + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.head && (r2.head.time = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, E[2] = u2 >>> 16 & 255, E[3] = u2 >>> 24 & 255, r2.check = B(r2.check, E, 4, 0)), l2 = u2 = 0, r2.mode = 4; + case 4: + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.head && (r2.head.xflags = 255 & u2, r2.head.os = u2 >> 8), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 5; + case 5: + if (1024 & r2.flags) { + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.length = u2, r2.head && (r2.head.extra_len = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0; + } else + r2.head && (r2.head.extra = null); + r2.mode = 6; + case 6: + if (1024 & r2.flags && (o2 < (d = r2.length) && (d = o2), d && (r2.head && (k = r2.head.extra_len - r2.length, r2.head.extra || (r2.head.extra = new Array(r2.head.extra_len)), I.arraySet(r2.head.extra, n2, s2, d, k)), 512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, r2.length -= d), r2.length)) + break e; + r2.length = 0, r2.mode = 7; + case 7: + if (2048 & r2.flags) { + if (0 === o2) + break e; + for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.name += String.fromCharCode(k)), k && d < o2; ) + ; + if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) + break e; + } else + r2.head && (r2.head.name = null); + r2.length = 0, r2.mode = 8; + case 8: + if (4096 & r2.flags) { + if (0 === o2) + break e; + for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.comment += String.fromCharCode(k)), k && d < o2; ) + ; + if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) + break e; + } else + r2.head && (r2.head.comment = null); + r2.mode = 9; + case 9: + if (512 & r2.flags) { + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 !== (65535 & r2.check)) { + e2.msg = "header crc mismatch", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.head && (r2.head.hcrc = r2.flags >> 9 & 1, r2.head.done = true), e2.adler = r2.check = 0, r2.mode = 12; + break; + case 10: + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + e2.adler = r2.check = L(u2), l2 = u2 = 0, r2.mode = 11; + case 11: + if (0 === r2.havedict) + return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, 2; + e2.adler = r2.check = 1, r2.mode = 12; + case 12: + if (5 === t2 || 6 === t2) + break e; + case 13: + if (r2.last) { + u2 >>>= 7 & l2, l2 -= 7 & l2, r2.mode = 27; + break; + } + for (; l2 < 3; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + switch (r2.last = 1 & u2, l2 -= 1, 3 & (u2 >>>= 1)) { + case 0: + r2.mode = 14; + break; + case 1: + if (j(r2), r2.mode = 20, 6 !== t2) + break; + u2 >>>= 2, l2 -= 2; + break e; + case 2: + r2.mode = 17; + break; + case 3: + e2.msg = "invalid block type", r2.mode = 30; + } + u2 >>>= 2, l2 -= 2; + break; + case 14: + for (u2 >>>= 7 & l2, l2 -= 7 & l2; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if ((65535 & u2) != (u2 >>> 16 ^ 65535)) { + e2.msg = "invalid stored block lengths", r2.mode = 30; + break; + } + if (r2.length = 65535 & u2, l2 = u2 = 0, r2.mode = 15, 6 === t2) + break e; + case 15: + r2.mode = 16; + case 16: + if (d = r2.length) { + if (o2 < d && (d = o2), h2 < d && (d = h2), 0 === d) + break e; + I.arraySet(i2, n2, s2, d, a2), o2 -= d, s2 += d, h2 -= d, a2 += d, r2.length -= d; + break; + } + r2.mode = 12; + break; + case 17: + for (; l2 < 14; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (r2.nlen = 257 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ndist = 1 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ncode = 4 + (15 & u2), u2 >>>= 4, l2 -= 4, 286 < r2.nlen || 30 < r2.ndist) { + e2.msg = "too many length or distance symbols", r2.mode = 30; + break; + } + r2.have = 0, r2.mode = 18; + case 18: + for (; r2.have < r2.ncode; ) { + for (; l2 < 3; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.lens[A[r2.have++]] = 7 & u2, u2 >>>= 3, l2 -= 3; + } + for (; r2.have < 19; ) + r2.lens[A[r2.have++]] = 0; + if (r2.lencode = r2.lendyn, r2.lenbits = 7, S = { bits: r2.lenbits }, x = T(0, r2.lens, 0, 19, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { + e2.msg = "invalid code lengths set", r2.mode = 30; + break; + } + r2.have = 0, r2.mode = 19; + case 19: + for (; r2.have < r2.nlen + r2.ndist; ) { + for (; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (b < 16) + u2 >>>= _, l2 -= _, r2.lens[r2.have++] = b; + else { + if (16 === b) { + for (z = _ + 2; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 >>>= _, l2 -= _, 0 === r2.have) { + e2.msg = "invalid bit length repeat", r2.mode = 30; + break; + } + k = r2.lens[r2.have - 1], d = 3 + (3 & u2), u2 >>>= 2, l2 -= 2; + } else if (17 === b) { + for (z = _ + 3; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + l2 -= _, k = 0, d = 3 + (7 & (u2 >>>= _)), u2 >>>= 3, l2 -= 3; + } else { + for (z = _ + 7; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + l2 -= _, k = 0, d = 11 + (127 & (u2 >>>= _)), u2 >>>= 7, l2 -= 7; + } + if (r2.have + d > r2.nlen + r2.ndist) { + e2.msg = "invalid bit length repeat", r2.mode = 30; + break; + } + for (; d--; ) + r2.lens[r2.have++] = k; + } + } + if (30 === r2.mode) + break; + if (0 === r2.lens[256]) { + e2.msg = "invalid code -- missing end-of-block", r2.mode = 30; + break; + } + if (r2.lenbits = 9, S = { bits: r2.lenbits }, x = T(D, r2.lens, 0, r2.nlen, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { + e2.msg = "invalid literal/lengths set", r2.mode = 30; + break; + } + if (r2.distbits = 6, r2.distcode = r2.distdyn, S = { bits: r2.distbits }, x = T(F, r2.lens, r2.nlen, r2.ndist, r2.distcode, 0, r2.work, S), r2.distbits = S.bits, x) { + e2.msg = "invalid distances set", r2.mode = 30; + break; + } + if (r2.mode = 20, 6 === t2) + break e; + case 20: + r2.mode = 21; + case 21: + if (6 <= o2 && 258 <= h2) { + e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, R(e2, c2), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, 12 === r2.mode && (r2.back = -1); + break; + } + for (r2.back = 0; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (g && 0 == (240 & g)) { + for (v = _, y = g, w = b; g = (C = r2.lencode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + u2 >>>= v, l2 -= v, r2.back += v; + } + if (u2 >>>= _, l2 -= _, r2.back += _, r2.length = b, 0 === g) { + r2.mode = 26; + break; + } + if (32 & g) { + r2.back = -1, r2.mode = 12; + break; + } + if (64 & g) { + e2.msg = "invalid literal/length code", r2.mode = 30; + break; + } + r2.extra = 15 & g, r2.mode = 22; + case 22: + if (r2.extra) { + for (z = r2.extra; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.length += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; + } + r2.was = r2.length, r2.mode = 23; + case 23: + for (; g = (C = r2.distcode[u2 & (1 << r2.distbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (0 == (240 & g)) { + for (v = _, y = g, w = b; g = (C = r2.distcode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + u2 >>>= v, l2 -= v, r2.back += v; + } + if (u2 >>>= _, l2 -= _, r2.back += _, 64 & g) { + e2.msg = "invalid distance code", r2.mode = 30; + break; + } + r2.offset = b, r2.extra = 15 & g, r2.mode = 24; + case 24: + if (r2.extra) { + for (z = r2.extra; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.offset += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; + } + if (r2.offset > r2.dmax) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break; + } + r2.mode = 25; + case 25: + if (0 === h2) + break e; + if (d = c2 - h2, r2.offset > d) { + if ((d = r2.offset - d) > r2.whave && r2.sane) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break; + } + p = d > r2.wnext ? (d -= r2.wnext, r2.wsize - d) : r2.wnext - d, d > r2.length && (d = r2.length), m = r2.window; + } else + m = i2, p = a2 - r2.offset, d = r2.length; + for (h2 < d && (d = h2), h2 -= d, r2.length -= d; i2[a2++] = m[p++], --d; ) + ; + 0 === r2.length && (r2.mode = 21); + break; + case 26: + if (0 === h2) + break e; + i2[a2++] = r2.length, h2--, r2.mode = 21; + break; + case 27: + if (r2.wrap) { + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 |= n2[s2++] << l2, l2 += 8; + } + if (c2 -= h2, e2.total_out += c2, r2.total += c2, c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, a2 - c2) : O(r2.check, i2, c2, a2 - c2)), c2 = h2, (r2.flags ? u2 : L(u2)) !== r2.check) { + e2.msg = "incorrect data check", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.mode = 28; + case 28: + if (r2.wrap && r2.flags) { + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 !== (4294967295 & r2.total)) { + e2.msg = "incorrect length check", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.mode = 29; + case 29: + x = 1; + break e; + case 30: + x = -3; + break e; + case 31: + return -4; + case 32: + default: + return U; + } + return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, (r2.wsize || c2 !== e2.avail_out && r2.mode < 30 && (r2.mode < 27 || 4 !== t2)) && Z(e2, e2.output, e2.next_out, c2 - e2.avail_out) ? (r2.mode = 31, -4) : (f2 -= e2.avail_in, c2 -= e2.avail_out, e2.total_in += f2, e2.total_out += c2, r2.total += c2, r2.wrap && c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, e2.next_out - c2) : O(r2.check, i2, c2, e2.next_out - c2)), e2.data_type = r2.bits + (r2.last ? 64 : 0) + (12 === r2.mode ? 128 : 0) + (20 === r2.mode || 15 === r2.mode ? 256 : 0), (0 == f2 && 0 === c2 || 4 === t2) && x === N && (x = -5), x); + }, r.inflateEnd = function(e2) { + if (!e2 || !e2.state) + return U; + var t2 = e2.state; + return t2.window && (t2.window = null), e2.state = null, N; + }, r.inflateGetHeader = function(e2, t2) { + var r2; + return e2 && e2.state ? 0 == (2 & (r2 = e2.state).wrap) ? U : ((r2.head = t2).done = false, N) : U; + }, r.inflateSetDictionary = function(e2, t2) { + var r2, n2 = t2.length; + return e2 && e2.state ? 0 !== (r2 = e2.state).wrap && 11 !== r2.mode ? U : 11 === r2.mode && O(1, t2, n2, 0) !== r2.check ? -3 : Z(e2, t2, n2, n2) ? (r2.mode = 31, -4) : (r2.havedict = 1, N) : U; + }, r.inflateInfo = "pako inflate (from Nodeca project)"; + }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e, t, r) { + "use strict"; + var D = e("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; + t.exports = function(e2, t2, r2, n, i, s, a, o) { + var h, u, l, f, c, d, p, m, _, g = o.bits, b = 0, v = 0, y = 0, w = 0, k = 0, x = 0, S = 0, z = 0, C = 0, E = 0, A = null, I = 0, O = new D.Buf16(16), B = new D.Buf16(16), R = null, T = 0; + for (b = 0; b <= 15; b++) + O[b] = 0; + for (v = 0; v < n; v++) + O[t2[r2 + v]]++; + for (k = g, w = 15; 1 <= w && 0 === O[w]; w--) + ; + if (w < k && (k = w), 0 === w) + return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0; + for (y = 1; y < w && 0 === O[y]; y++) + ; + for (k < y && (k = y), b = z = 1; b <= 15; b++) + if (z <<= 1, (z -= O[b]) < 0) + return -1; + if (0 < z && (0 === e2 || 1 !== w)) + return -1; + for (B[1] = 0, b = 1; b < 15; b++) + B[b + 1] = B[b] + O[b]; + for (v = 0; v < n; v++) + 0 !== t2[r2 + v] && (a[B[t2[r2 + v]]++] = v); + if (d = 0 === e2 ? (A = R = a, 19) : 1 === e2 ? (A = F, I -= 257, R = N, T -= 257, 256) : (A = U, R = P, -1), b = y, c = s, S = v = E = 0, l = -1, f = (C = 1 << (x = k)) - 1, 1 === e2 && 852 < C || 2 === e2 && 592 < C) + return 1; + for (; ; ) { + for (p = b - S, _ = a[v] < d ? (m = 0, a[v]) : a[v] > d ? (m = R[T + a[v]], A[I + a[v]]) : (m = 96, 0), h = 1 << b - S, y = u = 1 << x; i[c + (E >> S) + (u -= h)] = p << 24 | m << 16 | _ | 0, 0 !== u; ) + ; + for (h = 1 << b - 1; E & h; ) + h >>= 1; + if (0 !== h ? (E &= h - 1, E += h) : E = 0, v++, 0 == --O[b]) { + if (b === w) + break; + b = t2[r2 + a[v]]; + } + if (k < b && (E & f) !== l) { + for (0 === S && (S = k), c += y, z = 1 << (x = b - S); x + S < w && !((z -= O[x + S]) <= 0); ) + x++, z <<= 1; + if (C += 1 << x, 1 === e2 && 852 < C || 2 === e2 && 592 < C) + return 1; + i[l = E & f] = k << 24 | x << 16 | c - s | 0; + } + } + return 0 !== E && (i[c + E] = b - S << 24 | 64 << 16 | 0), o.bits = k, 0; + }; + }, { "../utils/common": 41 }], 51: [function(e, t, r) { + "use strict"; + t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; + }, {}], 52: [function(e, t, r) { + "use strict"; + var i = e("../utils/common"), o = 0, h = 1; + function n(e2) { + for (var t2 = e2.length; 0 <= --t2; ) + e2[t2] = 0; + } + var s = 0, a = 29, u = 256, l = u + 1 + a, f = 30, c = 19, _ = 2 * l + 1, g = 15, d = 16, p = 7, m = 256, b = 16, v = 17, y = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z = new Array(2 * (l + 2)); + n(z); + var C = new Array(2 * f); + n(C); + var E = new Array(512); + n(E); + var A = new Array(256); + n(A); + var I = new Array(a); + n(I); + var O, B, R, T = new Array(f); + function D(e2, t2, r2, n2, i2) { + this.static_tree = e2, this.extra_bits = t2, this.extra_base = r2, this.elems = n2, this.max_length = i2, this.has_stree = e2 && e2.length; + } + function F(e2, t2) { + this.dyn_tree = e2, this.max_code = 0, this.stat_desc = t2; + } + function N(e2) { + return e2 < 256 ? E[e2] : E[256 + (e2 >>> 7)]; + } + function U(e2, t2) { + e2.pending_buf[e2.pending++] = 255 & t2, e2.pending_buf[e2.pending++] = t2 >>> 8 & 255; + } + function P(e2, t2, r2) { + e2.bi_valid > d - r2 ? (e2.bi_buf |= t2 << e2.bi_valid & 65535, U(e2, e2.bi_buf), e2.bi_buf = t2 >> d - e2.bi_valid, e2.bi_valid += r2 - d) : (e2.bi_buf |= t2 << e2.bi_valid & 65535, e2.bi_valid += r2); + } + function L(e2, t2, r2) { + P(e2, r2[2 * t2], r2[2 * t2 + 1]); + } + function j(e2, t2) { + for (var r2 = 0; r2 |= 1 & e2, e2 >>>= 1, r2 <<= 1, 0 < --t2; ) + ; + return r2 >>> 1; + } + function Z(e2, t2, r2) { + var n2, i2, s2 = new Array(g + 1), a2 = 0; + for (n2 = 1; n2 <= g; n2++) + s2[n2] = a2 = a2 + r2[n2 - 1] << 1; + for (i2 = 0; i2 <= t2; i2++) { + var o2 = e2[2 * i2 + 1]; + 0 !== o2 && (e2[2 * i2] = j(s2[o2]++, o2)); + } + } + function W(e2) { + var t2; + for (t2 = 0; t2 < l; t2++) + e2.dyn_ltree[2 * t2] = 0; + for (t2 = 0; t2 < f; t2++) + e2.dyn_dtree[2 * t2] = 0; + for (t2 = 0; t2 < c; t2++) + e2.bl_tree[2 * t2] = 0; + e2.dyn_ltree[2 * m] = 1, e2.opt_len = e2.static_len = 0, e2.last_lit = e2.matches = 0; + } + function M(e2) { + 8 < e2.bi_valid ? U(e2, e2.bi_buf) : 0 < e2.bi_valid && (e2.pending_buf[e2.pending++] = e2.bi_buf), e2.bi_buf = 0, e2.bi_valid = 0; + } + function H(e2, t2, r2, n2) { + var i2 = 2 * t2, s2 = 2 * r2; + return e2[i2] < e2[s2] || e2[i2] === e2[s2] && n2[t2] <= n2[r2]; + } + function G(e2, t2, r2) { + for (var n2 = e2.heap[r2], i2 = r2 << 1; i2 <= e2.heap_len && (i2 < e2.heap_len && H(t2, e2.heap[i2 + 1], e2.heap[i2], e2.depth) && i2++, !H(t2, n2, e2.heap[i2], e2.depth)); ) + e2.heap[r2] = e2.heap[i2], r2 = i2, i2 <<= 1; + e2.heap[r2] = n2; + } + function K(e2, t2, r2) { + var n2, i2, s2, a2, o2 = 0; + if (0 !== e2.last_lit) + for (; n2 = e2.pending_buf[e2.d_buf + 2 * o2] << 8 | e2.pending_buf[e2.d_buf + 2 * o2 + 1], i2 = e2.pending_buf[e2.l_buf + o2], o2++, 0 === n2 ? L(e2, i2, t2) : (L(e2, (s2 = A[i2]) + u + 1, t2), 0 !== (a2 = w[s2]) && P(e2, i2 -= I[s2], a2), L(e2, s2 = N(--n2), r2), 0 !== (a2 = k[s2]) && P(e2, n2 -= T[s2], a2)), o2 < e2.last_lit; ) + ; + L(e2, m, t2); + } + function Y(e2, t2) { + var r2, n2, i2, s2 = t2.dyn_tree, a2 = t2.stat_desc.static_tree, o2 = t2.stat_desc.has_stree, h2 = t2.stat_desc.elems, u2 = -1; + for (e2.heap_len = 0, e2.heap_max = _, r2 = 0; r2 < h2; r2++) + 0 !== s2[2 * r2] ? (e2.heap[++e2.heap_len] = u2 = r2, e2.depth[r2] = 0) : s2[2 * r2 + 1] = 0; + for (; e2.heap_len < 2; ) + s2[2 * (i2 = e2.heap[++e2.heap_len] = u2 < 2 ? ++u2 : 0)] = 1, e2.depth[i2] = 0, e2.opt_len--, o2 && (e2.static_len -= a2[2 * i2 + 1]); + for (t2.max_code = u2, r2 = e2.heap_len >> 1; 1 <= r2; r2--) + G(e2, s2, r2); + for (i2 = h2; r2 = e2.heap[1], e2.heap[1] = e2.heap[e2.heap_len--], G(e2, s2, 1), n2 = e2.heap[1], e2.heap[--e2.heap_max] = r2, e2.heap[--e2.heap_max] = n2, s2[2 * i2] = s2[2 * r2] + s2[2 * n2], e2.depth[i2] = (e2.depth[r2] >= e2.depth[n2] ? e2.depth[r2] : e2.depth[n2]) + 1, s2[2 * r2 + 1] = s2[2 * n2 + 1] = i2, e2.heap[1] = i2++, G(e2, s2, 1), 2 <= e2.heap_len; ) + ; + e2.heap[--e2.heap_max] = e2.heap[1], function(e3, t3) { + var r3, n3, i3, s3, a3, o3, h3 = t3.dyn_tree, u3 = t3.max_code, l2 = t3.stat_desc.static_tree, f2 = t3.stat_desc.has_stree, c2 = t3.stat_desc.extra_bits, d2 = t3.stat_desc.extra_base, p2 = t3.stat_desc.max_length, m2 = 0; + for (s3 = 0; s3 <= g; s3++) + e3.bl_count[s3] = 0; + for (h3[2 * e3.heap[e3.heap_max] + 1] = 0, r3 = e3.heap_max + 1; r3 < _; r3++) + p2 < (s3 = h3[2 * h3[2 * (n3 = e3.heap[r3]) + 1] + 1] + 1) && (s3 = p2, m2++), h3[2 * n3 + 1] = s3, u3 < n3 || (e3.bl_count[s3]++, a3 = 0, d2 <= n3 && (a3 = c2[n3 - d2]), o3 = h3[2 * n3], e3.opt_len += o3 * (s3 + a3), f2 && (e3.static_len += o3 * (l2[2 * n3 + 1] + a3))); + if (0 !== m2) { + do { + for (s3 = p2 - 1; 0 === e3.bl_count[s3]; ) + s3--; + e3.bl_count[s3]--, e3.bl_count[s3 + 1] += 2, e3.bl_count[p2]--, m2 -= 2; + } while (0 < m2); + for (s3 = p2; 0 !== s3; s3--) + for (n3 = e3.bl_count[s3]; 0 !== n3; ) + u3 < (i3 = e3.heap[--r3]) || (h3[2 * i3 + 1] !== s3 && (e3.opt_len += (s3 - h3[2 * i3 + 1]) * h3[2 * i3], h3[2 * i3 + 1] = s3), n3--); + } + }(e2, t2), Z(s2, u2, e2.bl_count); + } + function X(e2, t2, r2) { + var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; + for (0 === a2 && (h2 = 138, u2 = 3), t2[2 * (r2 + 1) + 1] = 65535, n2 = 0; n2 <= r2; n2++) + i2 = a2, a2 = t2[2 * (n2 + 1) + 1], ++o2 < h2 && i2 === a2 || (o2 < u2 ? e2.bl_tree[2 * i2] += o2 : 0 !== i2 ? (i2 !== s2 && e2.bl_tree[2 * i2]++, e2.bl_tree[2 * b]++) : o2 <= 10 ? e2.bl_tree[2 * v]++ : e2.bl_tree[2 * y]++, s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4)); + } + function V(e2, t2, r2) { + var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; + for (0 === a2 && (h2 = 138, u2 = 3), n2 = 0; n2 <= r2; n2++) + if (i2 = a2, a2 = t2[2 * (n2 + 1) + 1], !(++o2 < h2 && i2 === a2)) { + if (o2 < u2) + for (; L(e2, i2, e2.bl_tree), 0 != --o2; ) + ; + else + 0 !== i2 ? (i2 !== s2 && (L(e2, i2, e2.bl_tree), o2--), L(e2, b, e2.bl_tree), P(e2, o2 - 3, 2)) : o2 <= 10 ? (L(e2, v, e2.bl_tree), P(e2, o2 - 3, 3)) : (L(e2, y, e2.bl_tree), P(e2, o2 - 11, 7)); + s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4); + } + } + n(T); + var q = false; + function J(e2, t2, r2, n2) { + P(e2, (s << 1) + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { + M(e3), n3 && (U(e3, r3), U(e3, ~r3)), i.arraySet(e3.pending_buf, e3.window, t3, r3, e3.pending), e3.pending += r3; + }(e2, t2, r2, true); + } + r._tr_init = function(e2) { + q || (function() { + var e3, t2, r2, n2, i2, s2 = new Array(g + 1); + for (n2 = r2 = 0; n2 < a - 1; n2++) + for (I[n2] = r2, e3 = 0; e3 < 1 << w[n2]; e3++) + A[r2++] = n2; + for (A[r2 - 1] = n2, n2 = i2 = 0; n2 < 16; n2++) + for (T[n2] = i2, e3 = 0; e3 < 1 << k[n2]; e3++) + E[i2++] = n2; + for (i2 >>= 7; n2 < f; n2++) + for (T[n2] = i2 << 7, e3 = 0; e3 < 1 << k[n2] - 7; e3++) + E[256 + i2++] = n2; + for (t2 = 0; t2 <= g; t2++) + s2[t2] = 0; + for (e3 = 0; e3 <= 143; ) + z[2 * e3 + 1] = 8, e3++, s2[8]++; + for (; e3 <= 255; ) + z[2 * e3 + 1] = 9, e3++, s2[9]++; + for (; e3 <= 279; ) + z[2 * e3 + 1] = 7, e3++, s2[7]++; + for (; e3 <= 287; ) + z[2 * e3 + 1] = 8, e3++, s2[8]++; + for (Z(z, l + 1, s2), e3 = 0; e3 < f; e3++) + C[2 * e3 + 1] = 5, C[2 * e3] = j(e3, 5); + O = new D(z, w, u + 1, l, g), B = new D(C, k, 0, f, g), R = new D(new Array(0), x, 0, c, p); + }(), q = true), e2.l_desc = new F(e2.dyn_ltree, O), e2.d_desc = new F(e2.dyn_dtree, B), e2.bl_desc = new F(e2.bl_tree, R), e2.bi_buf = 0, e2.bi_valid = 0, W(e2); + }, r._tr_stored_block = J, r._tr_flush_block = function(e2, t2, r2, n2) { + var i2, s2, a2 = 0; + 0 < e2.level ? (2 === e2.strm.data_type && (e2.strm.data_type = function(e3) { + var t3, r3 = 4093624447; + for (t3 = 0; t3 <= 31; t3++, r3 >>>= 1) + if (1 & r3 && 0 !== e3.dyn_ltree[2 * t3]) + return o; + if (0 !== e3.dyn_ltree[18] || 0 !== e3.dyn_ltree[20] || 0 !== e3.dyn_ltree[26]) + return h; + for (t3 = 32; t3 < u; t3++) + if (0 !== e3.dyn_ltree[2 * t3]) + return h; + return o; + }(e2)), Y(e2, e2.l_desc), Y(e2, e2.d_desc), a2 = function(e3) { + var t3; + for (X(e3, e3.dyn_ltree, e3.l_desc.max_code), X(e3, e3.dyn_dtree, e3.d_desc.max_code), Y(e3, e3.bl_desc), t3 = c - 1; 3 <= t3 && 0 === e3.bl_tree[2 * S[t3] + 1]; t3--) + ; + return e3.opt_len += 3 * (t3 + 1) + 5 + 5 + 4, t3; + }(e2), i2 = e2.opt_len + 3 + 7 >>> 3, (s2 = e2.static_len + 3 + 7 >>> 3) <= i2 && (i2 = s2)) : i2 = s2 = r2 + 5, r2 + 4 <= i2 && -1 !== t2 ? J(e2, t2, r2, n2) : 4 === e2.strategy || s2 === i2 ? (P(e2, 2 + (n2 ? 1 : 0), 3), K(e2, z, C)) : (P(e2, 4 + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { + var i3; + for (P(e3, t3 - 257, 5), P(e3, r3 - 1, 5), P(e3, n3 - 4, 4), i3 = 0; i3 < n3; i3++) + P(e3, e3.bl_tree[2 * S[i3] + 1], 3); + V(e3, e3.dyn_ltree, t3 - 1), V(e3, e3.dyn_dtree, r3 - 1); + }(e2, e2.l_desc.max_code + 1, e2.d_desc.max_code + 1, a2 + 1), K(e2, e2.dyn_ltree, e2.dyn_dtree)), W(e2), n2 && M(e2); + }, r._tr_tally = function(e2, t2, r2) { + return e2.pending_buf[e2.d_buf + 2 * e2.last_lit] = t2 >>> 8 & 255, e2.pending_buf[e2.d_buf + 2 * e2.last_lit + 1] = 255 & t2, e2.pending_buf[e2.l_buf + e2.last_lit] = 255 & r2, e2.last_lit++, 0 === t2 ? e2.dyn_ltree[2 * r2]++ : (e2.matches++, t2--, e2.dyn_ltree[2 * (A[r2] + u + 1)]++, e2.dyn_dtree[2 * N(t2)]++), e2.last_lit === e2.lit_bufsize - 1; + }, r._tr_align = function(e2) { + P(e2, 2, 3), L(e2, m, z), function(e3) { + 16 === e3.bi_valid ? (U(e3, e3.bi_buf), e3.bi_buf = 0, e3.bi_valid = 0) : 8 <= e3.bi_valid && (e3.pending_buf[e3.pending++] = 255 & e3.bi_buf, e3.bi_buf >>= 8, e3.bi_valid -= 8); + }(e2); + }; + }, { "../utils/common": 41 }], 53: [function(e, t, r) { + "use strict"; + t.exports = function() { + this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; + }; + }, {}], 54: [function(e, t, r) { + (function(e2) { + !function(r2, n) { + "use strict"; + if (!r2.setImmediate) { + var i, s, t2, a, o = 1, h = {}, u = false, l = r2.document, e3 = Object.getPrototypeOf && Object.getPrototypeOf(r2); + e3 = e3 && e3.setTimeout ? e3 : r2, i = "[object process]" === {}.toString.call(r2.process) ? function(e4) { + process.nextTick(function() { + c(e4); + }); + } : function() { + if (r2.postMessage && !r2.importScripts) { + var e4 = true, t3 = r2.onmessage; + return r2.onmessage = function() { + e4 = false; + }, r2.postMessage("", "*"), r2.onmessage = t3, e4; + } + }() ? (a = "setImmediate$" + Math.random() + "$", r2.addEventListener ? r2.addEventListener("message", d, false) : r2.attachEvent("onmessage", d), function(e4) { + r2.postMessage(a + e4, "*"); + }) : r2.MessageChannel ? ((t2 = new MessageChannel()).port1.onmessage = function(e4) { + c(e4.data); + }, function(e4) { + t2.port2.postMessage(e4); + }) : l && "onreadystatechange" in l.createElement("script") ? (s = l.documentElement, function(e4) { + var t3 = l.createElement("script"); + t3.onreadystatechange = function() { + c(e4), t3.onreadystatechange = null, s.removeChild(t3), t3 = null; + }, s.appendChild(t3); + }) : function(e4) { + setTimeout(c, 0, e4); + }, e3.setImmediate = function(e4) { + "function" != typeof e4 && (e4 = new Function("" + e4)); + for (var t3 = new Array(arguments.length - 1), r3 = 0; r3 < t3.length; r3++) + t3[r3] = arguments[r3 + 1]; + var n2 = { callback: e4, args: t3 }; + return h[o] = n2, i(o), o++; + }, e3.clearImmediate = f; + } + function f(e4) { + delete h[e4]; + } + function c(e4) { + if (u) + setTimeout(c, 0, e4); + else { + var t3 = h[e4]; + if (t3) { + u = true; + try { + !function(e5) { + var t4 = e5.callback, r3 = e5.args; + switch (r3.length) { + case 0: + t4(); + break; + case 1: + t4(r3[0]); + break; + case 2: + t4(r3[0], r3[1]); + break; + case 3: + t4(r3[0], r3[1], r3[2]); + break; + default: + t4.apply(n, r3); + } + }(t3); + } finally { + f(e4), u = false; + } + } + } + } + function d(e4) { + e4.source === r2 && "string" == typeof e4.data && 0 === e4.data.indexOf(a) && c(+e4.data.slice(a.length)); + } + }("undefined" == typeof self ? void 0 === e2 ? this : e2 : self); + }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); + }, {}] }, {}, [10])(10); + }); + } + }); + + // ../components/smart-camera-web.js + var VERSION = "1.0.2"; + var DEFAULT_NO_OF_LIVENESS_FRAMES = 8; + var PORTRAIT_ID_PREVIEW_WIDTH = 396; + var PORTRAIT_ID_PREVIEW_HEIGHT = 527; + function isSamsungMultiCameraDevice() { + const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\d{3}/); + if (!matchedModelNumber) { + return false; + } + const modelNumber = parseInt(matchedModelNumber[0].match(/\d{3}/)[0], 10); + const smallerModelNumber = 970; + return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber; + } + function getLivenessFramesIndices(totalNoOfFrames, numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES) { + const selectedFrames = []; + if (totalNoOfFrames < numberOfFramesRequired) { + throw new Error("SmartCameraWeb: Minimum required no of frames is ", numberOfFramesRequired); + } + const frameDivisor = numberOfFramesRequired - 1; + const frameInterval = Math.floor(totalNoOfFrames / frameDivisor); + let replacementFrameIndex = 1; + for (let i = 0; i < totalNoOfFrames; i += frameInterval) { + if (selectedFrames.length < 8) { + selectedFrames.push(i); + } else { + selectedFrames[replacementFrameIndex] = i; + selectedFrames.sort((a, b) => a - b); + replacementFrameIndex += 1; + } + } + const lastFrameIndex = totalNoOfFrames - 1; + if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) { + selectedFrames.push(lastFrameIndex); + } + return selectedFrames; + } + var SmartFileUpload = class _SmartFileUpload { + static memoryLimit = 1024e4; + static supportedTypes = ["image/jpeg", "image/png"]; + static getHumanSize(numberOfBytes) { + const units = [ + "B", + "kB", + "MB", + "GB", + "TB", + "PB", + "EB", + "ZB", + "YB" + ]; + const exponent = Math.min( + Math.floor(Math.log(numberOfBytes) / Math.log(1024)), + units.length - 1 + ); + const approx = numberOfBytes / 1024 ** exponent; + const output = exponent === 0 ? `${numberOfBytes} bytes` : `${approx.toFixed(0)} ${units[exponent]}`; + return output; + } + static getData(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = (e) => { + resolve(e.target.result); + }; + reader.onerror = () => { + reject(new Error("An error occurred reading the file. Please check the file, and try again")); + }; + reader.readAsDataURL(file); + }); + } + static async retrieve(files) { + if (files.length > 1) { + throw new Error("Only one file upload is permitted at a time"); + } + const file = files[0]; + if (!_SmartFileUpload.supportedTypes.includes(file.type)) { + throw new Error("Unsupported file format. Please ensure that you are providing a JPG or PNG image"); + } + if (file.size > _SmartFileUpload.memoryLimit) { + throw new Error(`${file.name} is too large. Please ensure that the file is less than ${_SmartFileUpload.getHumanSize(_SmartFileUpload.memoryLimit)}.`); + } + const imageAsDataUrl = await _SmartFileUpload.getData(file); + return imageAsDataUrl; + } + }; + function scwTemplateString() { + return ` + + + + + + + + + + + + + + + +
+

+

+
+ +
+ ${this.showNavigation ? ` + + ` : ""} +
+

+ We need access to your camera so that we can take selfie and proof-of-life images. +

+ + + + ${this.hideAttribution ? "" : ` + + `} +
+
+ + + + + + + + + + + + + + + + + + + + + + `; + } + var PoweredBySmileId = class extends HTMLElement { + constructor() { + super(); + const template = document.createElement("template"); + template.innerHTML = ` +

+ + + + + + + + + + + + + + + + + + + +

+ `; + this.attachShadow({ mode: "open" }).appendChild(template.content.cloneNode(true)); + } + }; + function hasMoreThanNColors(data, n = 16) { + const colors = /* @__PURE__ */ new Set(); + for (let i = 0; i < Math.min(data.length, 1e4); i += 4) { + colors.add(data[i] << 16 | data[i + 1] << 8 | data[i + 2]); + if (colors.size > n) { + return true; + } + } + return false; + } + window.customElements.define("powered-by-smile-id", PoweredBySmileId); + var SmartCameraWeb = class extends HTMLElement { + constructor() { + super(); + this.scwTemplateString = scwTemplateString.bind(this); + this.render = () => this.scwTemplateString(); + this.attachShadow({ mode: "open" }); + this.activeScreen = null; + } + setActiveScreen(element) { + this.activeScreen.hidden = true; + element.hidden = false; + this.activeScreen = element; + } + connectedCallback() { + this.shadowRoot.innerHTML = this.render(); + if ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices) { + this.setUpEventListeners(); + } else { + const heading = document.createElement("h1"); + heading.classList.add("error-message"); + heading.textContent = "Your browser does not support this integration"; + this.shadowRoot.innerHTML = heading; + } + } + disconnectedCallback() { + if (this.activeScreen) { + this.activeScreen.hidden = true; + } + this.activeScreen = null; + this.shadowRoot.innerHTML = ""; + } + static get observedAttributes() { + return ["document-capture-modes", "document-type", "hide-back-to-host", "show-navigation"]; + } + attributeChangedCallback(name) { + switch (name) { + case "document-capture-modes": + case "document-type": + case "hide-back-to-host": + case "show-navigation": + this.shadowRoot.innerHTML = this.render(); + this.setUpEventListeners(); + break; + default: + break; + } + } + setUpEventListeners() { + this.errorMessage = this.shadowRoot.querySelector("#error"); + this.requestScreen = this.shadowRoot.querySelector("#request-screen"); + this.activeScreen = this.requestScreen; + this.cameraScreen = this.shadowRoot.querySelector("#camera-screen"); + this.failedImageTestScreen = this.shadowRoot.querySelector("#failed-image-test-screen"); + this.reviewScreen = this.shadowRoot.querySelector("#review-screen"); + this.idEntryScreen = this.shadowRoot.querySelector("#id-entry-screen"); + this.IDCameraScreen = this.shadowRoot.querySelector("#id-camera-screen"); + this.IDReviewScreen = this.shadowRoot.querySelector("#id-review-screen"); + this.backOfIdEntryScreen = this.shadowRoot.querySelector("#back-of-id-entry-screen"); + this.backOfIDCameraScreen = this.shadowRoot.querySelector("#back-of-id-camera-screen"); + this.backOfIDReviewScreen = this.shadowRoot.querySelector("#back-of-id-review-screen"); + this.thanksScreen = this.shadowRoot.querySelector("#thanks-screen"); + this.videoContainer = this.shadowRoot.querySelector(".video-container > .video"); + this.smileCTA = this.shadowRoot.querySelector("#smile-cta"); + this.imageOutline = this.shadowRoot.querySelector("#image-outline path"); + this.startImageCapture = this.shadowRoot.querySelector("#start-image-capture"); + this.captureIDImage = this.shadowRoot.querySelector("#capture-id-image"); + this.captureBackOfIDImage = this.shadowRoot.querySelector("#capture-back-of-id-image"); + this.reviewImage = this.shadowRoot.querySelector("#review-image"); + this.IDReviewImage = this.shadowRoot.querySelector("#id-review-image"); + this.backOfIDReviewImage = this.shadowRoot.querySelector("#back-of-id-review-image"); + this.reStartImageCapture = this.shadowRoot.querySelector("#restart-image-capture"); + this.reCaptureIDImage = this.shadowRoot.querySelector("#re-capture-id-image"); + this.reCaptureBackOfIDImage = this.shadowRoot.querySelector("#re-capture-back-of-id-image"); + this.selectSelfie = this.shadowRoot.querySelector("#select-selfie"); + this.selectIDImage = this.shadowRoot.querySelector("#select-id-image"); + this.selectBackOfIDImage = this.shadowRoot.querySelector("#select-back-of-id-image"); + this.takeDocumentPhotoButton = this.idEntryScreen.querySelector("#take-photo"); + this.uploadDocumentPhotoButton = this.idEntryScreen.querySelector("#upload-photo"); + this.skipBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#skip-this-step"); + this.takeBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#take-photo"); + this.uploadBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#upload-photo"); + this.shadowRoot.querySelector("#request-camera-access").addEventListener("click", () => this.init()); + if (this.showNavigation) { + const backButtons = this.shadowRoot.querySelectorAll(".back-button-exit"); + backButtons.forEach((button) => { + button.addEventListener("click", () => { + this._backAndExit(); + }); + }); + const closeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + closeButtons.forEach((button) => { + button.addEventListener("click", () => { + this._exitSmartCamera(); + }); + }); + } + if (this.takeDocumentPhotoButton) + this.takeDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); + if (this.skipBackOfDocumentPhotoButton) + this.skipBackOfDocumentPhotoButton.addEventListener("click", () => this._skipBackDocument()); + if (this.takeBackOfDocumentPhotoButton) + this.takeBackOfDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); + if (this.uploadDocumentPhotoButton) + this.uploadDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); + if (this.uploadBackOfDocumentPhotoButton) + this.uploadBackOfDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); + this.backToSelfie = this.shadowRoot.querySelector("#back-button-selfie"); + this.backToIdEntryButton = this.shadowRoot.querySelector("#back-button-id-entry"); + this.backToBackIdEntryButton = this.shadowRoot.querySelector("#back-button-back-id-entry"); + this.backToIdImageButton = this.shadowRoot.querySelector("#back-button-id-image"); + if (this.backToSelfie) { + this.backToSelfie.addEventListener("click", () => { + this._reStartImageCapture(); + }); + } + if (this.backToIdEntryButton) { + this.backToIdEntryButton.addEventListener("click", () => { + this.setActiveScreen(this.idEntryScreen); + }); + } + if (this.backToBackIdEntryButton) { + this.backToBackIdEntryButton.addEventListener("click", () => { + this.setActiveScreen(this.backOfIdEntryScreen); + }); + } + if (this.backToIdImageButton) { + this.backToIdImageButton.addEventListener("click", () => { + this.setActiveScreen(this.IDReviewScreen); + }); + } + this.startImageCapture.addEventListener("click", () => { + this._startImageCapture(); + }); + this.selectSelfie.addEventListener("click", () => { + this._selectSelfie(); + }); + this.selectIDImage.addEventListener("click", () => { + this._selectIDImage(); + }); + this.selectBackOfIDImage.addEventListener("click", () => { + this._selectIDImage(true); + }); + this.captureIDImage.addEventListener("click", () => { + this._captureIDImage(); + }); + this.captureBackOfIDImage.addEventListener("click", () => { + this._captureIDImage(); + }); + this.reStartImageCapture.addEventListener("click", () => { + this._reStartImageCapture(); + }); + this.reCaptureIDImage.addEventListener("click", () => { + this._reCaptureIDImage(); + }); + this.reCaptureBackOfIDImage.addEventListener("click", () => { + this._reCaptureIDImage(); + }); + } + init() { + this._videoStreamDurationInMS = 7800; + this._imageCaptureIntervalInMS = 200; + this._data = { + images: [], + partner_params: { + libraryVersion: VERSION, + permissionGranted: false + } + }; + this._rawImages = []; + navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { + this.handleSuccess(stream); + }).catch((e) => { + this.handleError(e); + }); + } + reset() { + this.disconnectedCallback(); + this.connectedCallback(); + } + resetErrorMessage() { + this.errorMessage.textContent = ""; + } + handleSuccess(stream) { + const videoExists = !!this.videoContainer.querySelector("video"); + const video = videoExists ? this.videoContainer.querySelector("video") : document.createElement("video"); + video.autoplay = true; + video.playsInline = true; + video.muted = true; + if ("srcObject" in video) { + video.srcObject = stream; + } else { + video.src = window.URL.createObjectURL(stream); + } + video.play(); + if (!videoExists) + this.videoContainer.prepend(video); + this._data.partner_params.permissionGranted = true; + this.setActiveScreen(this.cameraScreen); + this._stream = stream; + this._video = video; + } + handleIDStream(stream) { + const videoExists = this.activeScreen === this.IDCameraScreen ? !!this.IDCameraScreen.querySelector("video") : !!this.backOfIDCameraScreen.querySelector("video"); + let video = null; + if (videoExists) { + if (this.activeScreen === this.IDCameraScreen) { + video = this.IDCameraScreen.querySelector("video"); + } else { + video = this.backOfIDCameraScreen.querySelector("video"); + } + } else { + video = document.createElement("video"); + } + video.autoplay = true; + video.playsInline = true; + video.muted = true; + if ("srcObject" in video) { + video.srcObject = stream; + } else { + video.src = window.URL.createObjectURL(stream); + } + video.play(); + const videoContainer = this.activeScreen === this.IDCameraScreen ? this.IDCameraScreen.querySelector(".id-video-container") : this.backOfIDCameraScreen.querySelector(".id-video-container"); + video.onloadedmetadata = () => { + videoContainer.querySelector(".actions").hidden = false; + }; + if (!videoExists) { + videoContainer.prepend(video); + } + this._IDStream = stream; + this._IDVideo = video; + } + handleError(e) { + switch (e.name) { + case "NotAllowedError": + case "SecurityError": + this.errorMessage.textContent = ` + Looks like camera access was not granted, or was blocked by a browser + level setting / extension. Please follow the prompt from the URL bar, + or extensions, and enable access. + You may need to refresh to start all over again + `; + break; + case "AbortError": + this.errorMessage.textContent = ` + Oops! Something happened, and we lost access to your stream. + Please refresh to start all over again + `; + break; + case "NotReadableError": + this.errorMessage.textContent = ` + There seems to be a problem with your device's camera, or its connection. + Please check this, and when resolved, try again. Or try another device. + `; + break; + case "NotFoundError": + this.errorMessage.textContent = ` + We are unable to find a video stream. + You may need to refresh to start all over again + `; + break; + case "TypeError": + this.errorMessage.textContent = ` + This site is insecure, and as such cannot have access to your camera. + Try to navigate to a secure version of this page, or contact the owner. + `; + break; + default: + this.errorMessage.textContent = e.message; + } + } + _startImageCapture() { + this.startImageCapture.disabled = true; + const imageOutlineLength = this.imageOutline.getTotalLength(); + this.imageOutline.style.transition = "none"; + this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`; + this.imageOutline.style.strokeDashoffset = imageOutlineLength; + this.imageOutline.getBoundingClientRect(); + this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1e3}s ease-in-out`; + this.imageOutline.style.strokeDashoffset = "0"; + this.smileCTA.style.animation = `fadeInOut ease ${this._videoStreamDurationInMS / 1e3}s`; + this._imageCaptureInterval = setInterval(() => { + this._capturePOLPhoto(); + }, this._imageCaptureIntervalInMS); + this._videoStreamTimeout = setTimeout(() => { + this._stopVideoStream(this._stream); + }, this._videoStreamDurationInMS); + } + _captureIDImage() { + const image = this._drawIDImage(); + if (this.activeScreen === this.IDCameraScreen) { + this.IDReviewImage.src = image; + } else { + this.backOfIDReviewImage.src = image; + } + this._data.images.push({ + image: image.split(",")[1], + image_type_id: this.activeScreen === this.IDCameraScreen ? 3 : 7 + }); + this._stopIDVideoStream(); + if (this.activeScreen === this.IDCameraScreen) { + this.setActiveScreen(this.IDReviewScreen); + } else { + this.setActiveScreen(this.backOfIDReviewScreen); + } + } + _drawImage(canvas, enableImageTests = true, video = this._video) { + this.resetErrorMessage(); + const context = canvas.getContext("2d"); + context.drawImage( + video, + 0, + 0, + video.videoWidth, + video.videoHeight, + 0, + 0, + canvas.width, + canvas.height + ); + if (enableImageTests) { + const imageData = context.getImageData(0, 0, canvas.width, canvas.height); + const hasEnoughColors = hasMoreThanNColors(imageData.data); + if (hasEnoughColors) { + return context; + } + throw new Error("Unable to capture webcam images - Please try another device"); + } else { + return context; + } + } + _capturePOLPhoto() { + const canvas = document.createElement("canvas"); + canvas.width = 240; + canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; + this._drawImage(canvas, false); + this._rawImages.push(canvas.toDataURL("image/jpeg")); + } + _captureReferencePhoto() { + const canvas = document.createElement("canvas"); + canvas.width = 480; + canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; + this._drawImage(canvas, !this.disableImageTests); + const image = canvas.toDataURL("image/jpeg"); + this._referenceImage = image; + this._data.images.push({ + image: image.split(",")[1], + image_type_id: 2 + }); + } + _skipBackDocument() { + this._publishSelectedImages(); + } + async _uploadDocument(event) { + this.resetErrorMessage(); + try { + const { files } = event.target; + const fileData = await SmartFileUpload.retrieve(files); + this._data.images.push({ + // NOTE: data URLs start with a file type before the base64 data, + // separated by a comma. + // + // we are only interested in the base64 segment, so we extract it + image: fileData.split(",")[1], + image_type_id: this.activeScreen === this.idEntryScreen ? 3 : 7 + }); + const nextScreen = this.activeScreen === this.idEntryScreen ? this.IDReviewScreen : this.backOfIDReviewScreen; + const previewImage = nextScreen.querySelector("img"); + previewImage.src = fileData; + this.setActiveScreen(nextScreen); + } catch (error) { + this.handleError(error); + } + } + _drawIDImage(video = this._IDVideo) { + const canvas = document.createElement("canvas"); + if (this.isPortraitCaptureView) { + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + const ctx = canvas.getContext("2d"); + ctx.drawImage(video, 0, 0, canvas.width, canvas.height); + const previewWidth = PORTRAIT_ID_PREVIEW_WIDTH; + const previewHeight = PORTRAIT_ID_PREVIEW_HEIGHT; + const paddingPercent = 0.5; + const paddedWidth = previewWidth * (1 + paddingPercent); + const paddedHeight = previewHeight * (1 + paddingPercent); + const cropWidth = paddedWidth; + const cropHeight = paddedHeight; + const cropLeft = (canvas.width - cropWidth) / 2; + const cropTop = (canvas.height - cropHeight) / 2; + const croppedCanvas = document.createElement("canvas"); + croppedCanvas.width = cropWidth; + croppedCanvas.height = cropHeight; + const croppedCtx = croppedCanvas.getContext("2d"); + croppedCtx.drawImage(canvas, cropLeft, cropTop, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); + return croppedCanvas.toDataURL("image/jpeg"); + } + canvas.width = 2240; + canvas.height = 1260; + const context = canvas.getContext("2d"); + const aspectRatio = video.videoWidth / video.videoHeight; + if (aspectRatio < 1) { + const imageFrame = this.activeScreen.querySelector('[class*="image-frame"]:not([hidden]) [href*="image-frame"]'); + const videoBox = video.getBoundingClientRect(); + const frameBox = imageFrame.getBoundingClientRect(); + const sourceXOffset = (frameBox.left - videoBox.left) / videoBox.width * video.videoWidth; + const sourceYOffset = (frameBox.top - videoBox.top) / videoBox.height * video.videoHeight; + const sourceWidth = frameBox.width * (video.videoWidth / videoBox.width); + const sourceHeight = frameBox.height * (video.videoHeight / videoBox.height); + canvas.height = canvas.width * frameBox.height / frameBox.width; + context.drawImage(video, sourceXOffset, sourceYOffset, sourceWidth, sourceHeight, 0, 0, canvas.width, canvas.height); + return canvas.toDataURL("image/jpeg"); + } + context.drawImage(video, 0, 0, canvas.width, canvas.height); + return canvas.toDataURL("image/jpeg"); + } + _stopVideoStream(stream) { + try { + clearTimeout(this._videoStreamTimeout); + clearInterval(this._imageCaptureInterval); + clearInterval(this._drawingInterval); + this.smileCTA.style.animation = "none"; + this._capturePOLPhoto(); + this._captureReferencePhoto(); + stream.getTracks().forEach((track) => track.stop()); + this.reviewImage.src = this._referenceImage; + const totalNoOfFrames = this._rawImages.length; + const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames); + this._data.images = this._data.images.concat(livenessFramesIndices.map((imageIndex) => ({ + image: this._rawImages[imageIndex].split(",")[1], + image_type_id: 6 + }))); + this.setActiveScreen(this.reviewScreen); + } catch (error) { + this.setActiveScreen(this.failedImageTestScreen); + } + } + _stopIDVideoStream(stream = this._IDStream) { + stream.getTracks().forEach((track) => track.stop()); + } + async _startIDCamera() { + try { + const stream = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: { + facingMode: "environment", + width: { min: 1280 }, + // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant) + // "We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges. + // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it." + zoom: isSamsungMultiCameraDevice() ? 2 : 1 + } + }); + if (this.activeScreen === this.idEntryScreen) { + this.setActiveScreen(this.IDCameraScreen); + } else if (this.activeScreen === this.backOfIdEntryScreen) { + this.setActiveScreen(this.backOfIDCameraScreen); + } + this.handleIDStream(stream); + } catch (e) { + this.handleError(e); + } + } + _selectSelfie() { + if (!this.captureID) { + this._publishSelectedImages(); + } else { + this.setActiveScreen(this.idEntryScreen); + } + } + _selectIDImage(backOfIDCaptured = false) { + if (!this.captureBackOfID || backOfIDCaptured) { + this._publishSelectedImages(); + } else { + this.setActiveScreen(this.backOfIdEntryScreen); + } + } + _publishSelectedImages() { + this.dispatchEvent( + new CustomEvent("imagesComputed", { detail: this._data }) + ); + this.setActiveScreen(this.thanksScreen); + } + _exitSmartCamera() { + this.dispatchEvent( + new CustomEvent("close", { detail: {} }) + ); + } + _backAndExit() { + this.dispatchEvent( + new CustomEvent("backExit", { detail: {} }) + ); + } + async _reStartImageCapture() { + this.startImageCapture.disabled = false; + this._rawImages = []; + this._data.images = []; + try { + const stream = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: true + }); + this.handleSuccess(stream); + } catch (e) { + this.handleError(e); + } + } + async _reCaptureIDImage() { + const previousScreen = this.activeScreen === this.IDReviewScreen ? this.idEntryScreen : this.backOfIdEntryScreen; + this.setActiveScreen(previousScreen); + this._data.images.pop(); + } + get captureID() { + return this.hasAttribute("capture-id"); + } + get captureBackOfID() { + return this.getAttribute("capture-id") === "back" || false; + } + get hideAttribution() { + return this.hasAttribute("hide-attribution"); + } + get showNavigation() { + return this.hasAttribute("show-navigation"); + } + get hideBackToHost() { + return this.hasAttribute("hide-back-to-host"); + } + get documentType() { + return this.getAttribute("document-type"); + } + get isPortraitCaptureView() { + return this.getAttribute("document-type") === "GREEN_BOOK"; + } + get documentCaptureModes() { + return this.getAttribute("document-capture-modes") || "camera"; + } + get supportBothCaptureModes() { + const value = this.documentCaptureModes; + return value.includes("camera") && value.includes("upload"); + } + get disableImageTests() { + return this.hasAttribute("disable-image-tests"); + } + get doNotUpload() { + return this.getAttribute("document-capture-modes") === "camera"; + } + }; + window.customElements.define("smart-camera-web", SmartCameraWeb); + + // src/js/doc-verification.js + var import_jszip = __toESM(require_jszip_min(), 1); + + // package.json + var version = "v1.2.3"; + + // src/js/components/Combobox.js + function generateId(prefix) { + const id = [...Array(30)].map(() => Math.random().toString(36)[3]).join(""); + return `${prefix}-${id}`; + } + function isElementInView(element) { + const bounding = element.getBoundingClientRect(); + return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth); + } + function isScrollable(element) { + return element && element.clientHeight < element.scrollHeight; + } + function maintainScrollVisibility(activeElement, scrollParent) { + const { offsetHeight, offsetTop } = activeElement; + const { offsetHeight: parentOffsetHeight, scrollTop } = scrollParent; + const isAbove = offsetTop < scrollTop; + const isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight; + if (isAbove) { + scrollParent.scrollTo(0, offsetTop); + } else if (isBelow) { + scrollParent.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight); + } + } + var ComboboxRoot = class extends HTMLElement { + constructor() { + super(); + this.handleRoaming = this.handleRoaming.bind(this); + } + connectedCallback() { + this.trigger = this.querySelector("smileid-combobox-trigger"); + document.addEventListener("click", this.handleRoaming); + this.addEventListener("focusout", this.handleRoaming); + this.addEventListener("blur", this.handleRoaming); + } + disconnectedCallback() { + document.removeEventListener("click", this.handleRoaming); + this.removeEventListener("focusout", this.handleRoaming); + this.removeEventListener("blur", this.handleRoaming); + } + handleRoaming(event) { + const target = event.relatedTarget || event.target; + if (this.contains(target)) { + return; + } + if (this.trigger.getAttribute("expanded") === "true") { + this.trigger.setAttribute("expanded", "false"); + } + } + }; + var ComboboxTrigger = class extends HTMLElement { + constructor() { + super(); + this.handleKeyUp = this.handleKeyUp.bind(this); + this.handleKeyDown = this.handleKeyDown.bind(this); + this.handleSelection = this.handleSelection.bind(this); + this.toggleExpansionState = this.toggleExpansionState.bind(this); + } + get type() { + return this.getAttribute("type") || "text"; + } + get label() { + return this.getAttribute("label") || ""; + } + get value() { + return this.getAttribute("value") || ""; + } + get disabled() { + return this.hasAttribute("disabled"); + } + connectedCallback() { + if (!this.label) { + throw new Error(": a label attribute is required"); + } + this.innerHTML = `${this.type === "text" ? ` +
+ + +
+ ` : ``}`; + this.setAttribute("expanded", false); + this.inputTrigger = this.querySelector("input"); + this.buttonTrigger = this.querySelector("button"); + this.buttonTrigger.setAttribute("aria-expanded", false); + this.buttonTrigger.setAttribute("role", "combobox"); + this.buttonTrigger.addEventListener("keydown", this.handleKeyDown); + this.buttonTrigger.addEventListener("click", this.toggleExpansionState); + if (this.inputTrigger) { + this.inputTrigger.setAttribute("aria-expanded", false); + this.inputTrigger.setAttribute("role", "combobox"); + this.inputTrigger.addEventListener("keydown", this.handleKeyDown); + this.inputTrigger.addEventListener("keyup", this.handleKeyUp); + this.inputTrigger.addEventListener("change", (e) => e.stopPropagation()); + } + this.listbox = this.parentElement.querySelector("smileid-combobox-listbox"); + this.options = Array.from( + this.parentElement.querySelectorAll("smileid-combobox-option") + ); + this.options.forEach((node) => { + node.addEventListener("Combobox::Option::Select", this.handleSelection); + }); + } + disconnectedCallback() { + this.buttonTrigger.removeEventListener("keydown", this.handleKeyDown); + this.buttonTrigger.removeEventListener("click", this.toggleExpansionState); + if (this.inputTrigger) { + this.inputTrigger.removeEventListener("keydown", this.handleKeyDown); + this.inputTrigger.removeEventListener("keyup", this.handleKeyUp); + this.inputTrigger.removeEventListener( + "change", + (e) => e.stopPropagation() + ); + } + if (this.options) { + this.options.forEach((node) => { + node.removeEventListener( + "Combobox::Option::Select", + this.handleSelection + ); + }); + } + } + handleKeyDown(event) { + if (event.ctrlKey || event.shiftKey) { + return; + } + const key = event.key; + switch (key) { + case "Enter": + case "Space": + case " ": + if (this.getAttribute("expanded") === "true") { + if (this.inputTrigger && (key === "Space" || key === " ")) { + this.resetListbox(); + } else { + event.preventDefault(); + const selectedOption = this.buttonTrigger.getAttribute( + "aria-activedescendant" + ); + if (selectedOption) { + document.getElementById(selectedOption).click(); + } + } + } else { + event.preventDefault(); + this.toggleExpansionState(); + } + break; + case "Esc": + case "Escape": + event.preventDefault(); + if (this.getAttribute("expanded") === "true") { + this.toggleExpansionState(); + } + break; + case "Down": + case "ArrowDown": + event.preventDefault(); + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + this.focusListbox("First"); + } else { + this.focusListbox("Down"); + } + break; + case "Up": + case "ArrowUp": + event.preventDefault(); + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + this.focusListbox("Last"); + } else { + this.focusListbox("Up"); + } + break; + case "Left": + case "ArrowLeft": + case "Right": + case "ArrowRight": + case "Home": + case "End": + this.resetListbox(); + break; + case "Tab": + break; + default: + break; + } + } + handleKeyUp(event) { + const key = event.key; + const isPrintableCharacter = (str) => str.length === 1 && str.match(/\S| /); + if (event.key === "Escape" || event.key === "Esc") { + event.preventDefault(); + if (this.getAttribute("expanded") === "true") { + this.toggleExpansionState(); + } else if (this.inputTrigger) { + this.inputTrigger.value = ""; + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Filter", { detail: "" }) + ); + } + } + if (isPrintableCharacter(key) || key === "Backspace") { + this.resetListbox(); + this.filterListbox(event.target.value); + } + } + toggleExpansionState() { + const listboxIsExpanded = this.getAttribute("expanded") === "true"; + this.setAttribute("expanded", !listboxIsExpanded); + this.buttonTrigger.setAttribute("aria-expanded", !listboxIsExpanded); + if (this.inputTrigger) { + this.inputTrigger.setAttribute("aria-expanded", !listboxIsExpanded); + } + } + handleSelection(event) { + if (this.inputTrigger) { + this.inputTrigger.value = event.detail.label; + } else { + this.buttonTrigger.textContent = event.detail.label; + } + this.toggleExpansionState(); + this.parentElement.dispatchEvent( + new CustomEvent("change", { + detail: { + value: event.detail.value + } + }) + ); + } + filterListbox(value) { + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + } + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Filter", { detail: value }) + ); + } + focusListbox(direction) { + this.resetListbox(); + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Focus", { + detail: { + direction + } + }) + ); + } + resetListbox() { + this.listbox.dispatchEvent(new CustomEvent("Combobox::Listbox::Reset")); + } + }; + var ComboboxListbox = class extends HTMLElement { + constructor() { + super(); + this.handleFilter = this.handleFilter.bind(this); + this.handleFocus = this.handleFocus.bind(this); + this.handleReset = this.handleReset.bind(this); + this.handleOptionSelection = this.handleOptionSelection.bind(this); + } + get emptyLabel() { + return this.getAttribute("empty-label"); + } + get emptyState() { + return ` +

+ ${this.emptyLabel || "No items"} +

+ `; + } + connectedCallback() { + this.setAttribute("role", "listbox"); + this.setAttribute("id", generateId("listbox")); + this.addEventListener("Combobox::Listbox::Filter", this.handleFilter); + this.addEventListener("Combobox::Listbox::Focus", this.handleFocus); + this.addEventListener("Combobox::Listbox::Reset", this.handleReset); + this.triggers = Array.from( + this.parentElement.querySelectorAll( + "smileid-combobox-trigger input, smileid-combobox-trigger button" + ) + ); + this.triggers.forEach( + (node) => node.setAttribute("aria-controls", this.getAttribute("id")) + ); + this.optionNodes = Array.from( + this.querySelectorAll("smileid-combobox-option") + ); + this.selectedNode = this.optionNodes.find( + (node) => !node.hasAttribute("hidden") && node.hasAttribute("aria-selected") + ) || this.optionNodes.filter((node) => !node.hasAttribute("hidden"))[0]; + this.selectedNode.setAttribute("tabindex", "0"); + this.optionNodes.forEach((node) => { + node.addEventListener( + "Combobox::Option::Select", + this.handleOptionSelection + ); + }); + if (this.optionNodes.length === 0) { + this.innerHTML = this.emptyState; + } + } + disconnectedCallback() { + this.removeEventListener("Combobox::Listbox::Filter", this.handleFilter); + this.removeEventListener("Combobox::Listbox::Focus", this.handleFocus); + this.removeEventListener("Combobox::Listbox::Reset", this.handleReset); + this.optionNodes.forEach((node) => { + node.removeEventListener( + "Combobox::Option::Select", + this.handleOptionSelection + ); + }); + } + static get observedAttributes() { + return ["search-term"]; + } + attributeChangedCallback(name, oldValue, newValue) { + switch (name) { + case "search-term": + if (oldValue && !newValue) { + this.optionNodes.forEach((node) => { + node.removeAttribute("hidden"); + }); + } else if (newValue) { + this.filterNodes(newValue); + } + break; + default: + break; + } + } + filterNodes(searchTerm) { + this.optionNodes.forEach((node) => { + const value = node.getAttribute("value").toLowerCase(); + const label = node.getAttribute("label").toLowerCase(); + const containsSearchTerm = value.includes(searchTerm.toLowerCase()) || label.includes(searchTerm.toLowerCase()); + if (containsSearchTerm) { + node.removeAttribute("hidden"); + } else { + node.setAttribute("hidden", true); + } + }); + const optionsVisible = this.optionNodes.find( + (node) => !node.hasAttribute("hidden") + ); + const emptyState = this.querySelector("#empty-state"); + if (!optionsVisible && !emptyState) { + this.insertAdjacentHTML("afterbegin", this.emptyState); + } else if (optionsVisible && emptyState) { + this.removeChild(emptyState); + } + } + handleFilter(event) { + const searchTerm = event.detail; + this.setAttribute("search-term", searchTerm); + } + handleFocus(event) { + this.setSelected(event.detail.direction); + } + handleReset() { + this.optionNodes.forEach((node) => node.setAttribute("tabindex", "-1")); + } + handleOptionSelection(event) { + const inputTrigger = this.triggers.filter( + (node) => node.tagName === "INPUT" + )[0]; + if (inputTrigger) { + this.setAttribute("search-term", event.detail.label); + } + } + setSelected(direction) { + const visibleOptions = this.optionNodes.filter( + (node) => !node.hasAttribute("hidden") + ); + this.selectedNode.setAttribute("tabindex", "0"); + const currentIndex = visibleOptions.findIndex( + (node) => node === this.selectedNode + ); + const lastIndex = visibleOptions.length - 1; + let nextIndex; + switch (direction) { + case "First": + nextIndex = 0; + break; + case "Last": + nextIndex = lastIndex; + break; + case "Up": + if (currentIndex === 0) { + nextIndex = lastIndex; + } else { + nextIndex = currentIndex - 1; + } + break; + default: + if (currentIndex === lastIndex) { + nextIndex = 0; + } else { + nextIndex = currentIndex + 1; + } + break; + } + if (currentIndex !== nextIndex) { + this.swapSelected(this.selectedNode, visibleOptions[nextIndex]); + } + } + swapSelected(currentNode, newNode) { + currentNode.setAttribute("tabindex", "-1"); + newNode.setAttribute("tabindex", "0"); + this.selectedNode = newNode; + if (isScrollable(this)) { + maintainScrollVisibility(this.selectedNode, this); + } + if (!isElementInView(newNode)) { + newNode.scrollIntoView({ behavior: "smooth", block: "nearest" }); + } + this.triggers.forEach( + (node) => node.setAttribute("aria-activedescendant", newNode.id) + ); + } + }; + var ComboboxOption = class extends HTMLElement { + connectedCallback() { + this.setAttribute("role", "option"); + this.setAttribute("tabindex", "-1"); + this.setAttribute("id", generateId("option")); + this.options = Array.from( + this.parentElement.querySelectorAll("smileid-combobox-option") + ); + this.addEventListener("click", this.select); + } + disconnectedCallback() { + this.removeEventListener("click", this.select); + } + get value() { + return this.getAttribute("value"); + } + get label() { + return this.getAttribute("label"); + } + select() { + const selectedOption = this.options.find( + (node) => node.getAttribute("aria-selected") + ); + if (selectedOption) { + selectedOption.removeAttribute("aria-selected"); + } + this.setAttribute("aria-selected", true); + this.dispatchEvent( + new CustomEvent("Combobox::Option::Select", { + detail: { + label: this.label, + value: this.value, + id: this.getAttribute("id") + } + }) + ); + } + }; + var Combobox_default = { + Root: ComboboxRoot, + Trigger: ComboboxTrigger, + List: ComboboxListbox, + Option: ComboboxOption + }; + + // src/js/doc-verification.js + (function documentVerification() { + "use strict"; + const endpoints = { + sandbox: "https://testapi.smileidentity.com/v1", + live: "https://api.smileidentity.com/v1", + production: "https://api.smileidentity.com/v1" + }; + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); + window.customElements.define("smileid-combobox", Combobox_default.Root); + window.customElements.define("smileid-combobox-trigger", Combobox_default.Trigger); + window.customElements.define("smileid-combobox-listbox", Combobox_default.List); + window.customElements.define("smileid-combobox-option", Combobox_default.Option); + let config; + let activeScreen; + let id_info; + let images; + let partner_params; + const LoadingScreen = document.querySelector("#loading-screen"); + const SelectIDType = document.querySelector("#select-id-type"); + const SmartCameraWeb2 = document.querySelector("smart-camera-web"); + const UploadProgressScreen = document.querySelector( + "#upload-progress-screen" + ); + const UploadFailureScreen = document.querySelector("#upload-failure-screen"); + const CompleteScreen = document.querySelector("#complete-screen"); + const CloseIframeButtons = document.querySelectorAll(".close-iframe"); + const RetryUploadButton = document.querySelector("#retry-upload"); + let fileToUpload; + let uploadURL; + async function getProductConstraints() { + const payload = { + token: config.token, + partner_id: config.partner_details.partner_id + }; + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + method: "POST", + body: JSON.stringify(payload) + }; + try { + const response = await fetch( + `${endpoints[config.environment]}/valid_documents`, + fetchConfig + ); + const json = await response.json(); + return json.valid_documents; + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + async function getLegacyProductConstraints() { + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + method: "GET" + }; + try { + const response = await fetch( + `${endpoints[config.environment]}/services`, + fetchConfig + ); + const json = await response.json(); + return json.hosted_web.doc_verification; + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + window.addEventListener( + "message", + async (event) => { + if (event.data && event.data.includes("SmileIdentity::Configuration")) { + config = JSON.parse(event.data); + activeScreen = LoadingScreen; + const productConstraints = await getProductConstraints(); + initializeSession(productConstraints); + getPartnerParams(); + } + }, + false + ); + function loadCountrySelector(countries, placeholderElement) { + const isSingleCountry = countries.length === 1; + const autocomplete = document.createElement("smileid-combobox"); + autocomplete.setAttribute("id", "country"); + autocomplete.innerHTML = ` + + + + + ${countries.map( + (country) => ` + + ${country.name} + + ` + ).join("\n")} + + `; + placeholderElement.replaceWith(autocomplete); + return autocomplete; + } + function loadIdTypeSelector(idTypes) { + const idTypeSelector = document.querySelector("#id-type-selector"); + let combobox = document.querySelector('smileid-combobox[id="id_type"]'); + if (!combobox) { + combobox = document.createElement("smileid-combobox"); + combobox.setAttribute("id", "id_type"); + } + combobox.innerHTML = ` + + + + + ${idTypes.map( + (idType) => ` + +
+

${idType.name}

+ ${idType.name === "Others" || idType.example && idType.example.length > 1 ? `${idType.example.length > 1 ? "e.g. " : ""}${idType.example.join(", ")}` : ""} +
+
+ ` + ).join("\n")} +
+ `; + if (idTypeSelector.hidden) { + idTypeSelector.appendChild(combobox); + idTypeSelector.removeAttribute("hidden"); + } + return combobox; + } + async function initializeSession(constraints) { + let selectedCountry; + let selectedIdType; + function loadIdTypes(countryCode) { + const countryIdTypes = constraints.find( + (item) => item.country.code === countryCode + ).id_types; + if (config.id_selection) { + return countryIdTypes.filter((idType) => { + return config.id_selection[countryCode].find((validIdType) => { + if (validIdType.toLowerCase() === "others") { + return !idType.code; + } + return validIdType === idType.code; + }); + }); + } + return countryIdTypes; + } + function initialiseIdTypeSelector(country, selectIdType) { + const idTypes = loadIdTypes(country); + const idTypeSelector = loadIdTypeSelector(idTypes, selectIdType); + idTypeSelector.addEventListener("change", (e) => { + selectedIdType = e.detail.value; + }); + } + const supportedCountries = constraints.map(({ country: { name, code } }) => ({ + code, + name + })).sort((a, b) => { + if (a.name < b.name) { + return -1; + } + if (a.name > b.name) { + return 1; + } + return 0; + }).map((item) => item.code); + let validCountries = []; + if (config.id_selection) { + const legacyConstraints = await getLegacyProductConstraints(); + Object.keys(config.id_selection).forEach((countryCode) => { + const isCountrySupported = supportedCountries.includes(countryCode); + if (!isCountrySupported) { + throw new Error(`SmileIdentity - ${countryCode} is not supported`); + } + const countryIndex = constraints.findIndex( + (entry) => entry.country.code === countryCode + ); + config.id_selection[countryCode].forEach((idSelectionIdType) => { + const isIdTypeSupported = constraints[countryIndex].id_types.find( + (constrainedIdType) => idSelectionIdType === constrainedIdType.code + ); + if (isIdTypeSupported) + return; + console.error( + `SmileIdentity - ${countryCode}-${idSelectionIdType} has been deprecated` + ); + if (idSelectionIdType.toLowerCase() !== "others") { + constraints[countryIndex].id_types.push({ + code: idSelectionIdType, + has_back: false, + name: legacyConstraints[countryCode].id_types[idSelectionIdType].label + }); + } + }); + }); + const selectedCountryList = Object.keys(config.id_selection); + validCountries = supportedCountries.filter( + (value) => selectedCountryList.includes(value) + ); + if (validCountries.length === 1) { + selectedCountry = validCountries[0]; + id_info = { + country: validCountries[0] + }; + const idTypes = config.id_selection[selectedCountry]; + if (idTypes.length === 1 || typeof idTypes === "string") { + id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; + const documentCaptureConfig = constraints.find((entry) => entry.country.code === selectedCountry).id_types.find((entry) => entry.code === id_info.id_type); + SmartCameraWeb2.setAttribute("document-type", id_info.id_type); + if (documentCaptureConfig.has_back) { + SmartCameraWeb2.setAttribute("capture-id", "back"); + } + if (config.document_capture_modes) { + SmartCameraWeb2.setAttribute( + "document-capture-modes", + config.document_capture_modes.join(",") + ); + } + SmartCameraWeb2.setAttribute("hide-back-to-host", true); + setActiveScreen(SmartCameraWeb2); + } + } + } else { + validCountries = supportedCountries; + } + const countries = validCountries.map((countryCode) => { + const countryObject = constraints.find( + (entry) => entry.country.code === countryCode + ).country; + return { + code: countryCode, + name: countryObject.name + }; + }); + if (!id_info || !id_info.id_type) { + const selectCountry = SelectIDType.querySelector("#country"); + const hostedWebConfigForm = document.querySelector( + 'form[name="hosted-web-config"]' + ); + selectCountry.disabled = false; + setActiveScreen(SelectIDType); + const countrySelector = loadCountrySelector(countries, selectCountry); + countrySelector.addEventListener("change", (e) => { + selectedCountry = e.detail ? e.detail.value : ""; + initialiseIdTypeSelector(selectedCountry); + }); + if (id_info && id_info.country) { + selectedCountry = id_info.country; + initialiseIdTypeSelector(selectedCountry); + } + hostedWebConfigForm.addEventListener("submit", (e) => { + e.preventDefault(); + id_info = { + country: selectedCountry, + id_type: selectedIdType + }; + SmartCameraWeb2.setAttribute("document-type", selectedIdType); + const documentCaptureConfig = constraints.find((entry) => entry.country.code === selectedCountry).id_types.find((entry) => entry.code === selectedIdType); + if (documentCaptureConfig.has_back) { + SmartCameraWeb2.setAttribute("capture-id", "back"); + } + if (config.document_capture_modes) { + SmartCameraWeb2.setAttribute( + "document-capture-modes", + config.document_capture_modes.join(",") + ); + } + setActiveScreen(SmartCameraWeb2); + }); + } + } + SmartCameraWeb2.addEventListener( + "imagesComputed", + (event) => { + images = event.detail.images; + setActiveScreen(UploadProgressScreen); + handleFormSubmit(event); + }, + false + ); + SmartCameraWeb2.addEventListener( + "backExit", + () => { + setActiveScreen(SelectIDType); + }, + false + ); + SmartCameraWeb2.addEventListener( + "close", + () => { + closeWindow(); + }, + false + ); + RetryUploadButton.addEventListener( + "click", + () => { + retryUpload(); + }, + false + ); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + closeWindow(); + }, + false + ); + }); + function getPartnerParams() { + function parseJWT(token) { + const base64Url = token.split(".")[1]; + const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); + const jsonPayload = decodeURIComponent( + atob(base64).split("").map(function(c) { + return `%${c.charCodeAt(0).toString(16)}`; + }).join("") + ); + return JSON.parse(jsonPayload); + } + const { partner_params: partnerParams } = parseJWT(config.token); + partner_params = { ...partnerParams, ...config.partner_params || {} }; + } + function setActiveScreen(node) { + activeScreen.hidden = true; + node.hidden = false; + activeScreen = node; + } + async function handleFormSubmit(event) { + event.preventDefault(); + const errorMessage = document.querySelector(".validation-message"); + if (errorMessage) + errorMessage.remove(); + try { + event.target.disabled = true; + [uploadURL, fileToUpload] = await Promise.all([ + getUploadURL(), + createZip() + ]); + uploadZip(fileToUpload, uploadURL); + event.target.disabled = false; + } catch (error) { + event.target.disabled = false; + displayErrorMessage("Something went wrong"); + console.error( + `SmileIdentity - ${error.name || error.message}: ${error.cause}` + ); + } + } + function displayErrorMessage(message) { + const p = document.createElement("p"); + p.textContent = message; + p.classList.add("validation-message"); + p.style.fontSize = "1.5rem"; + p.style.textAlign = "center"; + const main = document.querySelector("main"); + main.prepend(p); + } + async function createZip() { + const zip = new import_jszip.default(); + zip.file( + "info.json", + JSON.stringify({ + package_information: { + language: "Hosted Web Integration", + apiVersion: { + buildNumber: 0, + majorVersion: 2, + minorVersion: 0 + } + }, + id_info, + images + }) + ); + try { + const zipFile = await zip.generateAsync({ type: "blob" }); + return zipFile; + } catch (error) { + throw new Error("createZip failed", { cause: error }); + } + } + async function getUploadURL() { + const payload = { + source_sdk: config.sdk || "hosted_web", + source_sdk_version: config.sdk_version || version, + file_name: `${config.product}.zip`, + smile_client_id: config.partner_details.partner_id, + callback_url: config.callback_url, + token: config.token, + partner_params: { + ...partner_params, + job_type: 6 + } + }; + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + method: "POST", + body: JSON.stringify(payload) + }; + const URL = `${endpoints[config.environment] || config.environment}/upload`; + try { + const response = await fetch(URL, fetchConfig); + const json = await response.json(); + if (json.error) + throw new Error(json.error); + return json.upload_url; + } catch (error) { + throw new Error("getUploadURL failed", { cause: error }); + } + } + function uploadZip(file, destination) { + const request = new XMLHttpRequest(); + request.open("PUT", destination); + request.upload.addEventListener("load", function() { + return request.response; + }); + request.upload.addEventListener("error", function(e) { + setActiveScreen(UploadFailureScreen); + throw new Error("uploadZip failed", { cause: e }); + }); + request.onreadystatechange = function() { + if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { + setActiveScreen(CompleteScreen); + handleSuccess(); + window.setTimeout(closeWindow, 2e3); + } + if (request.readyState === XMLHttpRequest.DONE && request.status !== 200) { + setActiveScreen(UploadFailureScreen); + throw new Error("uploadZip failed", { cause: request }); + } + }; + request.setRequestHeader("Content-type", "application/zip"); + request.send(file); + } + function retryUpload() { + const fileUploaded = uploadZip(fileToUpload, uploadURL); + return fileUploaded; + } + function closeWindow() { + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + function handleSuccess() { + referenceWindow.postMessage("SmileIdentity::Success", "*"); + } + })(); +})(); +/*! Bundled license information: + +jszip/dist/jszip.min.js: + (*! + + JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + + (c) 2009-2016 Stuart Knightley + Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + + JSZip uses the library pako released under the MIT license : + https://github.com/nodeca/pako/blob/main/LICENSE + *) +*/ diff --git a/packages/embed/build/js/ekyc.min.js b/packages/embed/build/js/ekyc.min.js new file mode 100644 index 00000000..54508350 --- /dev/null +++ b/packages/embed/build/js/ekyc.min.js @@ -0,0 +1,3758 @@ +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + + // ../../node_modules/validate.js/validate.js + var require_validate = __commonJS({ + "../../node_modules/validate.js/validate.js"(exports, module) { + (function(exports2, module2, define2) { + "use strict"; + var validate3 = function(attributes, constraints, options) { + options = v.extend({}, v.options, options); + var results = v.runValidations(attributes, constraints, options), attr, validator; + if (results.some(function(r) { + return v.isPromise(r.error); + })) { + throw new Error("Use validate.async if you want support for promises"); + } + return validate3.processValidationResults(results, options); + }; + var v = validate3; + v.extend = function(obj) { + [].slice.call(arguments, 1).forEach(function(source) { + for (var attr in source) { + obj[attr] = source[attr]; + } + }); + return obj; + }; + v.extend(validate3, { + // This is the version of the library as a semver. + // The toString function will allow it to be coerced into a string + version: { + major: 0, + minor: 13, + patch: 1, + metadata: null, + toString: function() { + var version2 = v.format("%{major}.%{minor}.%{patch}", v.version); + if (!v.isEmpty(v.version.metadata)) { + version2 += "+" + v.version.metadata; + } + return version2; + } + }, + // Below is the dependencies that are used in validate.js + // The constructor of the Promise implementation. + // If you are using Q.js, RSVP or any other A+ compatible implementation + // override this attribute to be the constructor of that promise. + // Since jQuery promises aren't A+ compatible they won't work. + Promise: typeof Promise !== "undefined" ? Promise : ( + /* istanbul ignore next */ + null + ), + EMPTY_STRING_REGEXP: /^\s*$/, + // Runs the validators specified by the constraints object. + // Will return an array of the format: + // [{attribute: "", error: ""}, ...] + runValidations: function(attributes, constraints, options) { + var results = [], attr, validatorName, value, validators, validator, validatorOptions, error; + if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) { + attributes = v.collectFormValues(attributes); + } + for (attr in constraints) { + value = v.getDeepObjectValue(attributes, attr); + validators = v.result(constraints[attr], value, attributes, attr, options, constraints); + for (validatorName in validators) { + validator = v.validators[validatorName]; + if (!validator) { + error = v.format("Unknown validator %{name}", { name: validatorName }); + throw new Error(error); + } + validatorOptions = validators[validatorName]; + validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints); + if (!validatorOptions) { + continue; + } + results.push({ + attribute: attr, + value, + validator: validatorName, + globalOptions: options, + attributes, + options: validatorOptions, + error: validator.call( + validator, + value, + validatorOptions, + attr, + attributes, + options + ) + }); + } + } + return results; + }, + // Takes the output from runValidations and converts it to the correct + // output format. + processValidationResults: function(errors, options) { + errors = v.pruneEmptyErrors(errors, options); + errors = v.expandMultipleErrors(errors, options); + errors = v.convertErrorMessages(errors, options); + var format = options.format || "grouped"; + if (typeof v.formatters[format] === "function") { + errors = v.formatters[format](errors); + } else { + throw new Error(v.format("Unknown format %{format}", options)); + } + return v.isEmpty(errors) ? void 0 : errors; + }, + // Runs the validations with support for promises. + // This function will return a promise that is settled when all the + // validation promises have been completed. + // It can be called even if no validations returned a promise. + async: function(attributes, constraints, options) { + options = v.extend({}, v.async.options, options); + var WrapErrors = options.wrapErrors || function(errors) { + return errors; + }; + if (options.cleanAttributes !== false) { + attributes = v.cleanAttributes(attributes, constraints); + } + var results = v.runValidations(attributes, constraints, options); + return new v.Promise(function(resolve, reject) { + v.waitForResults(results).then(function() { + var errors = v.processValidationResults(results, options); + if (errors) { + reject(new WrapErrors(errors, options, attributes, constraints)); + } else { + resolve(attributes); + } + }, function(err) { + reject(err); + }); + }); + }, + single: function(value, constraints, options) { + options = v.extend({}, v.single.options, options, { + format: "flat", + fullMessages: false + }); + return v({ single: value }, { single: constraints }, options); + }, + // Returns a promise that is resolved when all promises in the results array + // are settled. The promise returned from this function is always resolved, + // never rejected. + // This function modifies the input argument, it replaces the promises + // with the value returned from the promise. + waitForResults: function(results) { + return results.reduce(function(memo, result) { + if (!v.isPromise(result.error)) { + return memo; + } + return memo.then(function() { + return result.error.then(function(error) { + result.error = error || null; + }); + }); + }, new v.Promise(function(r) { + r(); + })); + }, + // If the given argument is a call: function the and: function return the value + // otherwise just return the value. Additional arguments will be passed as + // arguments to the function. + // Example: + // ``` + // result('foo') // 'foo' + // result(Math.max, 1, 2) // 2 + // ``` + result: function(value) { + var args = [].slice.call(arguments, 1); + if (typeof value === "function") { + value = value.apply(null, args); + } + return value; + }, + // Checks if the value is a number. This function does not consider NaN a + // number like many other `isNumber` functions do. + isNumber: function(value) { + return typeof value === "number" && !isNaN(value); + }, + // Returns false if the object is not a function + isFunction: function(value) { + return typeof value === "function"; + }, + // A simple check to verify that the value is an integer. Uses `isNumber` + // and a simple modulo check. + isInteger: function(value) { + return v.isNumber(value) && value % 1 === 0; + }, + // Checks if the value is a boolean + isBoolean: function(value) { + return typeof value === "boolean"; + }, + // Uses the `Object` function to check if the given argument is an object. + isObject: function(obj) { + return obj === Object(obj); + }, + // Simply checks if the object is an instance of a date + isDate: function(obj) { + return obj instanceof Date; + }, + // Returns false if the object is `null` of `undefined` + isDefined: function(obj) { + return obj !== null && obj !== void 0; + }, + // Checks if the given argument is a promise. Anything with a `then` + // function is considered a promise. + isPromise: function(p) { + return !!p && v.isFunction(p.then); + }, + isJqueryElement: function(o) { + return o && v.isString(o.jquery); + }, + isDomElement: function(o) { + if (!o) { + return false; + } + if (!o.querySelectorAll || !o.querySelector) { + return false; + } + if (v.isObject(document) && o === document) { + return true; + } + if (typeof HTMLElement === "object") { + return o instanceof HTMLElement; + } else { + return o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string"; + } + }, + isEmpty: function(value) { + var attr; + if (!v.isDefined(value)) { + return true; + } + if (v.isFunction(value)) { + return false; + } + if (v.isString(value)) { + return v.EMPTY_STRING_REGEXP.test(value); + } + if (v.isArray(value)) { + return value.length === 0; + } + if (v.isDate(value)) { + return false; + } + if (v.isObject(value)) { + for (attr in value) { + return false; + } + return true; + } + return false; + }, + // Formats the specified strings with the given values like so: + // ``` + // format("Foo: %{foo}", {foo: "bar"}) // "Foo bar" + // ``` + // If you want to write %{...} without having it replaced simply + // prefix it with % like this `Foo: %%{foo}` and it will be returned + // as `"Foo: %{foo}"` + format: v.extend(function(str, vals) { + if (!v.isString(str)) { + return str; + } + return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) { + if (m1 === "%") { + return "%{" + m2 + "}"; + } else { + return String(vals[m2]); + } + }); + }, { + // Finds %{key} style patterns in the given string + FORMAT_REGEXP: /(%?)%\{([^\}]+)\}/g + }), + // "Prettifies" the given string. + // Prettifying means replacing [.\_-] with spaces as well as splitting + // camel case words. + prettify: function(str) { + if (v.isNumber(str)) { + if (str * 100 % 1 === 0) { + return "" + str; + } else { + return parseFloat(Math.round(str * 100) / 100).toFixed(2); + } + } + if (v.isArray(str)) { + return str.map(function(s) { + return v.prettify(s); + }).join(", "); + } + if (v.isObject(str)) { + if (!v.isDefined(str.toString)) { + return JSON.stringify(str); + } + return str.toString(); + } + str = "" + str; + return str.replace(/([^\s])\.([^\s])/g, "$1 $2").replace(/\\+/g, "").replace(/[_-]/g, " ").replace(/([a-z])([A-Z])/g, function(m0, m1, m2) { + return "" + m1 + " " + m2.toLowerCase(); + }).toLowerCase(); + }, + stringifyValue: function(value, options) { + var prettify = options && options.prettify || v.prettify; + return prettify(value); + }, + isString: function(value) { + return typeof value === "string"; + }, + isArray: function(value) { + return {}.toString.call(value) === "[object Array]"; + }, + // Checks if the object is a hash, which is equivalent to an object that + // is neither an array nor a function. + isHash: function(value) { + return v.isObject(value) && !v.isArray(value) && !v.isFunction(value); + }, + contains: function(obj, value) { + if (!v.isDefined(obj)) { + return false; + } + if (v.isArray(obj)) { + return obj.indexOf(value) !== -1; + } + return value in obj; + }, + unique: function(array) { + if (!v.isArray(array)) { + return array; + } + return array.filter(function(el, index, array2) { + return array2.indexOf(el) == index; + }); + }, + forEachKeyInKeypath: function(object, keypath, callback) { + if (!v.isString(keypath)) { + return void 0; + } + var key = "", i, escape = false; + for (i = 0; i < keypath.length; ++i) { + switch (keypath[i]) { + case ".": + if (escape) { + escape = false; + key += "."; + } else { + object = callback(object, key, false); + key = ""; + } + break; + case "\\": + if (escape) { + escape = false; + key += "\\"; + } else { + escape = true; + } + break; + default: + escape = false; + key += keypath[i]; + break; + } + } + return callback(object, key, true); + }, + getDeepObjectValue: function(obj, keypath) { + if (!v.isObject(obj)) { + return void 0; + } + return v.forEachKeyInKeypath(obj, keypath, function(obj2, key) { + if (v.isObject(obj2)) { + return obj2[key]; + } + }); + }, + // This returns an object with all the values of the form. + // It uses the input name as key and the value as value + // So for example this: + // + // would return: + // {email: "foo@bar.com"} + collectFormValues: function(form, options) { + var values = {}, i, j, input, inputs, option, value; + if (v.isJqueryElement(form)) { + form = form[0]; + } + if (!form) { + return values; + } + options = options || {}; + inputs = form.querySelectorAll("input[name], textarea[name]"); + for (i = 0; i < inputs.length; ++i) { + input = inputs.item(i); + if (v.isDefined(input.getAttribute("data-ignored"))) { + continue; + } + var name = input.name.replace(/\./g, "\\\\."); + value = v.sanitizeFormValue(input.value, options); + if (input.type === "number") { + value = value ? +value : null; + } else if (input.type === "checkbox") { + if (input.attributes.value) { + if (!input.checked) { + value = values[name] || null; + } + } else { + value = input.checked; + } + } else if (input.type === "radio") { + if (!input.checked) { + value = values[name] || null; + } + } + values[name] = value; + } + inputs = form.querySelectorAll("select[name]"); + for (i = 0; i < inputs.length; ++i) { + input = inputs.item(i); + if (v.isDefined(input.getAttribute("data-ignored"))) { + continue; + } + if (input.multiple) { + value = []; + for (j in input.options) { + option = input.options[j]; + if (option && option.selected) { + value.push(v.sanitizeFormValue(option.value, options)); + } + } + } else { + var _val = typeof input.options[input.selectedIndex] !== "undefined" ? input.options[input.selectedIndex].value : ( + /* istanbul ignore next */ + "" + ); + value = v.sanitizeFormValue(_val, options); + } + values[input.name] = value; + } + return values; + }, + sanitizeFormValue: function(value, options) { + if (options.trim && v.isString(value)) { + value = value.trim(); + } + if (options.nullify !== false && value === "") { + return null; + } + return value; + }, + capitalize: function(str) { + if (!v.isString(str)) { + return str; + } + return str[0].toUpperCase() + str.slice(1); + }, + // Remove all errors who's error attribute is empty (null or undefined) + pruneEmptyErrors: function(errors) { + return errors.filter(function(error) { + return !v.isEmpty(error.error); + }); + }, + // In + // [{error: ["err1", "err2"], ...}] + // Out + // [{error: "err1", ...}, {error: "err2", ...}] + // + // All attributes in an error with multiple messages are duplicated + // when expanding the errors. + expandMultipleErrors: function(errors) { + var ret = []; + errors.forEach(function(error) { + if (v.isArray(error.error)) { + error.error.forEach(function(msg) { + ret.push(v.extend({}, error, { error: msg })); + }); + } else { + ret.push(error); + } + }); + return ret; + }, + // Converts the error mesages by prepending the attribute name unless the + // message is prefixed by ^ + convertErrorMessages: function(errors, options) { + options = options || {}; + var ret = [], prettify = options.prettify || v.prettify; + errors.forEach(function(errorInfo) { + var error = v.result( + errorInfo.error, + errorInfo.value, + errorInfo.attribute, + errorInfo.options, + errorInfo.attributes, + errorInfo.globalOptions + ); + if (!v.isString(error)) { + ret.push(errorInfo); + return; + } + if (error[0] === "^") { + error = error.slice(1); + } else if (options.fullMessages !== false) { + error = v.capitalize(prettify(errorInfo.attribute)) + " " + error; + } + error = error.replace(/\\\^/g, "^"); + error = v.format(error, { + value: v.stringifyValue(errorInfo.value, options) + }); + ret.push(v.extend({}, errorInfo, { error })); + }); + return ret; + }, + // In: + // [{attribute: "", ...}] + // Out: + // {"": [{attribute: "", ...}]} + groupErrorsByAttribute: function(errors) { + var ret = {}; + errors.forEach(function(error) { + var list = ret[error.attribute]; + if (list) { + list.push(error); + } else { + ret[error.attribute] = [error]; + } + }); + return ret; + }, + // In: + // [{error: "", ...}, {error: "", ...}] + // Out: + // ["", ""] + flattenErrorsToArray: function(errors) { + return errors.map(function(error) { + return error.error; + }).filter(function(value, index, self) { + return self.indexOf(value) === index; + }); + }, + cleanAttributes: function(attributes, whitelist) { + function whitelistCreator(obj, key, last) { + if (v.isObject(obj[key])) { + return obj[key]; + } + return obj[key] = last ? true : {}; + } + function buildObjectWhitelist(whitelist2) { + var ow = {}, lastObject, attr; + for (attr in whitelist2) { + if (!whitelist2[attr]) { + continue; + } + v.forEachKeyInKeypath(ow, attr, whitelistCreator); + } + return ow; + } + function cleanRecursive(attributes2, whitelist2) { + if (!v.isObject(attributes2)) { + return attributes2; + } + var ret = v.extend({}, attributes2), w, attribute; + for (attribute in attributes2) { + w = whitelist2[attribute]; + if (v.isObject(w)) { + ret[attribute] = cleanRecursive(ret[attribute], w); + } else if (!w) { + delete ret[attribute]; + } + } + return ret; + } + if (!v.isObject(whitelist) || !v.isObject(attributes)) { + return {}; + } + whitelist = buildObjectWhitelist(whitelist); + return cleanRecursive(attributes, whitelist); + }, + exposeModule: function(validate4, root, exports3, module3, define3) { + if (exports3) { + if (module3 && module3.exports) { + exports3 = module3.exports = validate4; + } + exports3.validate = validate4; + } else { + root.validate = validate4; + if (validate4.isFunction(define3) && define3.amd) { + define3([], function() { + return validate4; + }); + } + } + }, + warn: function(msg) { + if (typeof console !== "undefined" && console.warn) { + console.warn("[validate.js] " + msg); + } + }, + error: function(msg) { + if (typeof console !== "undefined" && console.error) { + console.error("[validate.js] " + msg); + } + } + }); + validate3.validators = { + // Presence validates that the value isn't empty + presence: function(value, options) { + options = v.extend({}, this.options, options); + if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) { + return options.message || this.message || "can't be blank"; + } + }, + length: function(value, options, attribute) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var is = options.is, maximum = options.maximum, minimum = options.minimum, tokenizer = options.tokenizer || function(val) { + return val; + }, err, errors = []; + value = tokenizer(value); + var length = value.length; + if (!v.isNumber(length)) { + return options.message || this.notValid || "has an incorrect length"; + } + if (v.isNumber(is) && length !== is) { + err = options.wrongLength || this.wrongLength || "is the wrong length (should be %{count} characters)"; + errors.push(v.format(err, { count: is })); + } + if (v.isNumber(minimum) && length < minimum) { + err = options.tooShort || this.tooShort || "is too short (minimum is %{count} characters)"; + errors.push(v.format(err, { count: minimum })); + } + if (v.isNumber(maximum) && length > maximum) { + err = options.tooLong || this.tooLong || "is too long (maximum is %{count} characters)"; + errors.push(v.format(err, { count: maximum })); + } + if (errors.length > 0) { + return options.message || errors; + } + }, + numericality: function(value, options, attribute, attributes, globalOptions) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var errors = [], name, count, checks = { + greaterThan: function(v2, c) { + return v2 > c; + }, + greaterThanOrEqualTo: function(v2, c) { + return v2 >= c; + }, + equalTo: function(v2, c) { + return v2 === c; + }, + lessThan: function(v2, c) { + return v2 < c; + }, + lessThanOrEqualTo: function(v2, c) { + return v2 <= c; + }, + divisibleBy: function(v2, c) { + return v2 % c === 0; + } + }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; + if (v.isString(value) && options.strict) { + var pattern = "^-?(0|[1-9]\\d*)"; + if (!options.onlyInteger) { + pattern += "(\\.\\d+)?"; + } + pattern += "$"; + if (!new RegExp(pattern).test(value)) { + return options.message || options.notValid || this.notValid || this.message || "must be a valid number"; + } + } + if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) { + value = +value; + } + if (!v.isNumber(value)) { + return options.message || options.notValid || this.notValid || this.message || "is not a number"; + } + if (options.onlyInteger && !v.isInteger(value)) { + return options.message || options.notInteger || this.notInteger || this.message || "must be an integer"; + } + for (name in checks) { + count = options[name]; + if (v.isNumber(count) && !checks[name](value, count)) { + var key = "not" + v.capitalize(name); + var msg = options[key] || this[key] || this.message || "must be %{type} %{count}"; + errors.push(v.format(msg, { + count, + type: prettify(name) + })); + } + } + if (options.odd && value % 2 !== 1) { + errors.push(options.notOdd || this.notOdd || this.message || "must be odd"); + } + if (options.even && value % 2 !== 0) { + errors.push(options.notEven || this.notEven || this.message || "must be even"); + } + if (errors.length) { + return options.message || errors; + } + }, + datetime: v.extend(function(value, options) { + if (!v.isFunction(this.parse) || !v.isFunction(this.format)) { + throw new Error("Both the parse and format functions needs to be set to use the datetime/date validator"); + } + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var err, errors = [], earliest = options.earliest ? this.parse(options.earliest, options) : NaN, latest = options.latest ? this.parse(options.latest, options) : NaN; + value = this.parse(value, options); + if (isNaN(value) || options.dateOnly && value % 864e5 !== 0) { + err = options.notValid || options.message || this.notValid || "must be a valid date"; + return v.format(err, { value: arguments[0] }); + } + if (!isNaN(earliest) && value < earliest) { + err = options.tooEarly || options.message || this.tooEarly || "must be no earlier than %{date}"; + err = v.format(err, { + value: this.format(value, options), + date: this.format(earliest, options) + }); + errors.push(err); + } + if (!isNaN(latest) && value > latest) { + err = options.tooLate || options.message || this.tooLate || "must be no later than %{date}"; + err = v.format(err, { + date: this.format(latest, options), + value: this.format(value, options) + }); + errors.push(err); + } + if (errors.length) { + return v.unique(errors); + } + }, { + parse: null, + format: null + }), + date: function(value, options) { + options = v.extend({}, options, { dateOnly: true }); + return v.validators.datetime.call(v.validators.datetime, value, options); + }, + format: function(value, options) { + if (v.isString(options) || options instanceof RegExp) { + options = { pattern: options }; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is invalid", pattern = options.pattern, match; + if (!v.isDefined(value)) { + return; + } + if (!v.isString(value)) { + return message; + } + if (v.isString(pattern)) { + pattern = new RegExp(options.pattern, options.flags); + } + match = pattern.exec(value); + if (!match || match[0].length != value.length) { + return message; + } + }, + inclusion: function(value, options) { + if (!v.isDefined(value)) { + return; + } + if (v.isArray(options)) { + options = { within: options }; + } + options = v.extend({}, this.options, options); + if (v.contains(options.within, value)) { + return; + } + var message = options.message || this.message || "^%{value} is not included in the list"; + return v.format(message, { value }); + }, + exclusion: function(value, options) { + if (!v.isDefined(value)) { + return; + } + if (v.isArray(options)) { + options = { within: options }; + } + options = v.extend({}, this.options, options); + if (!v.contains(options.within, value)) { + return; + } + var message = options.message || this.message || "^%{value} is restricted"; + if (v.isString(options.within[value])) { + value = options.within[value]; + } + return v.format(message, { value }); + }, + email: v.extend(function(value, options) { + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not a valid email"; + if (!v.isDefined(value)) { + return; + } + if (!v.isString(value)) { + return message; + } + if (!this.PATTERN.exec(value)) { + return message; + } + }, { + PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i + }), + equality: function(value, options, attribute, attributes, globalOptions) { + if (!v.isDefined(value)) { + return; + } + if (v.isString(options)) { + options = { attribute: options }; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not equal to %{attribute}"; + if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) { + throw new Error("The attribute must be a non empty string"); + } + var otherValue = v.getDeepObjectValue(attributes, options.attribute), comparator = options.comparator || function(v1, v2) { + return v1 === v2; + }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; + if (!comparator(value, otherValue, options, attribute, attributes)) { + return v.format(message, { attribute: prettify(options.attribute) }); + } + }, + // A URL validator that is used to validate URLs with the ability to + // restrict schemes and some domains. + url: function(value, options) { + if (!v.isDefined(value)) { + return; + } + options = v.extend({}, this.options, options); + var message = options.message || this.message || "is not a valid url", schemes = options.schemes || this.schemes || ["http", "https"], allowLocal = options.allowLocal || this.allowLocal || false, allowDataUrl = options.allowDataUrl || this.allowDataUrl || false; + if (!v.isString(value)) { + return message; + } + var regex = "^(?:(?:" + schemes.join("|") + ")://)(?:\\S+(?::\\S*)?@)?(?:"; + var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"; + if (allowLocal) { + tld += "?"; + } else { + regex += // IP address exclusion + // private & local networks + "(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})"; + } + regex += // IP address dotted notation octets + // excludes loopback network 0.0.0.0 + // excludes reserved space >= 224.0.0.0 + // excludes network & broacast addresses + // (first & last IP address of each class) + "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + tld + ")(?::\\d{2,5})?(?:[/?#]\\S*)?$"; + if (allowDataUrl) { + var mediaType = "\\w+\\/[-+.\\w]+(?:;[\\w=]+)*"; + var urlchar = "[A-Za-z0-9-_.!~\\*'();\\/?:@&=+$,%]*"; + var dataurl = "data:(?:" + mediaType + ")?(?:;base64)?," + urlchar; + regex = "(?:" + regex + ")|(?:^" + dataurl + "$)"; + } + var PATTERN = new RegExp(regex, "i"); + if (!PATTERN.exec(value)) { + return message; + } + }, + type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) { + if (v.isString(originalOptions)) { + originalOptions = { type: originalOptions }; + } + if (!v.isDefined(value)) { + return; + } + var options = v.extend({}, this.options, originalOptions); + var type = options.type; + if (!v.isDefined(type)) { + throw new Error("No type was specified"); + } + var check; + if (v.isFunction(type)) { + check = type; + } else { + check = this.types[type]; + } + if (!v.isFunction(check)) { + throw new Error("validate.validators.type.types." + type + " must be a function."); + } + if (!check(value, options, attribute, attributes, globalOptions)) { + var message = originalOptions.message || this.messages[type] || this.message || options.message || (v.isFunction(type) ? "must be of the correct type" : "must be of type %{type}"); + if (v.isFunction(message)) { + message = message(value, originalOptions, attribute, attributes, globalOptions); + } + return v.format(message, { attribute: v.prettify(attribute), type }); + } + }, { + types: { + object: function(value) { + return v.isObject(value) && !v.isArray(value); + }, + array: v.isArray, + integer: v.isInteger, + number: v.isNumber, + string: v.isString, + date: v.isDate, + boolean: v.isBoolean + }, + messages: {} + }) + }; + validate3.formatters = { + detailed: function(errors) { + return errors; + }, + flat: v.flattenErrorsToArray, + grouped: function(errors) { + var attr; + errors = v.groupErrorsByAttribute(errors); + for (attr in errors) { + errors[attr] = v.flattenErrorsToArray(errors[attr]); + } + return errors; + }, + constraint: function(errors) { + var attr; + errors = v.groupErrorsByAttribute(errors); + for (attr in errors) { + errors[attr] = errors[attr].map(function(result) { + return result.validator; + }).sort(); + } + return errors; + } + }; + validate3.exposeModule(validate3, this, exports2, module2, define2); + }).call( + exports, + typeof exports !== "undefined" ? ( + /* istanbul ignore next */ + exports + ) : null, + typeof module !== "undefined" ? ( + /* istanbul ignore next */ + module + ) : null, + typeof define !== "undefined" ? ( + /* istanbul ignore next */ + define + ) : null + ); + } + }); + + // src/js/ekyc.js + var import_validate2 = __toESM(require_validate(), 1); + + // src/js/components/ConsentScreen.js + function templateString() { + return ` + + + + + + + + `; + } + var EndUserConsent = class extends HTMLElement { + constructor() { + super(); + this.idRequiresTotpConsent = ["BVN_MFA"]; + this.templateString = templateString.bind(this); + this.render = () => { + return this.templateString(); + }; + this.attachShadow({ mode: "open" }); + } + connectedCallback() { + this.pages = []; + const template = document.createElement("template"); + template.innerHTML = this.render(); + this.shadowRoot.appendChild(template.content.cloneNode(true)); + this.consentScreen = this.shadowRoot.querySelector("#consent-screen"); + this.totpConsentApp = this.shadowRoot.querySelector("totp-consent-app"); + this.consentRejectedScreen = this.shadowRoot.querySelector( + "#consent-rejected-screen" + ); + this.allowButton = this.shadowRoot.querySelector("#allow"); + this.rejectButton = this.shadowRoot.querySelector("#cancel"); + this.backToConsentButton = this.shadowRoot.querySelector("#back-to-consent"); + this.confirmConsentRejectionButton = this.shadowRoot.querySelector( + "#confirm-consent-rejection" + ); + this.backButton = this.shadowRoot.querySelector("#back-button"); + const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + this.allowButton.addEventListener( + "click", + (e) => this.handleConsentGrant(e) + ); + this.rejectButton.addEventListener( + "click", + (e) => this.handleConsentGrant(e) + ); + this.backToConsentButton.addEventListener( + "click", + () => this.setActiveScreen(this.consentScreen) + ); + this.confirmConsentRejectionButton.addEventListener( + "click", + (e) => this.handleConsentRejection(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", + (e) => this.handleTotpConsentEvents(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentGranted::TOTP", + (e) => this.handleTotpConsentEvents(e) + ); + this.totpConsentApp.addEventListener( + "SmileIdentity::ConsentDenied::Back", + (e) => this.handleBackEvents(e) + ); + this.backButton.addEventListener("click", (e) => { + this.handleBackEvents(e); + }); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + this.closeWindow(); + }, + false + ); + }); + this.activeScreen = this.consentScreen; + } + setActiveScreen(screen) { + this.activeScreen.hidden = true; + screen.hidden = false; + this.activeScreen = screen; + } + get baseUrl() { + return this.getAttribute("base-url"); + } + get country() { + return this.getAttribute("country"); + } + get demoMode() { + return !!this.hasAttribute("demo-mode"); + } + get hideBack() { + return this.hasAttribute("hide-back-to-host"); + } + get idHint() { + return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; + } + get idRegex() { + return this.getAttribute("id-regex"); + } + get idType() { + return this.getAttribute("id-type"); + } + get idTypeLabel() { + return this.getAttribute("id-type-label"); + } + get partnerId() { + return this.getAttribute("partner-id"); + } + get partnerName() { + return this.getAttribute("partner-name"); + } + get partnerLogoURL() { + return this.getAttribute("partner-logo"); + } + get partnerPolicyURL() { + return this.getAttribute("policy-url"); + } + get themeColor() { + return this.getAttribute("theme-color") || "#043C93"; + } + get token() { + return this.getAttribute("token"); + } + handleConsentGrant(e) { + const granted = e.target === this.allowButton; + if (granted) { + if (this.idRequiresTotpConsent.includes(this.idType)) { + this.setActiveScreen(this.totpConsentApp); + this.pages.push(this.consentScreen); + } else { + this.dispatchEvent( + new CustomEvent("SmileIdentity::ConsentGranted", { + detail: { + consented: { + personal_details: granted, + contact_information: granted, + document_information: granted + } + } + }) + ); + } + } else { + this.setActiveScreen(this.consentRejectedScreen); + } + } + handleConsentRejection() { + this.dispatchEvent(new CustomEvent("SmileIdentity::ConsentDenied")); + } + handleTotpConsentEvents(e) { + const customEvent = new CustomEvent(e.type, { + detail: { + ...e.detail + } + }); + this.dispatchEvent(customEvent); + } + handleBackEvents() { + const page = this.pages.pop(); + if (page) { + this.setActiveScreen(page); + } else { + this.dispatchEvent(new CustomEvent("SmileIdentity::Exit")); + } + } + closeWindow() { + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + }; + var ConsentScreen_default = EndUserConsent; + + // src/js/components/TotpConsentApp.js + var import_validate = __toESM(require_validate(), 1); + function postData(url, data) { + return fetch(url, { + method: "POST", + mode: "cors", + cache: "no-cache", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + body: JSON.stringify(data) + }); + } + function markup() { + return ` + + +
+ +

+ Enter your ${this.idTypeLabel} +

+ +
+
+ + + + +

+ ${this.idHint} +

+
+ + +
+
+ + + + + `; + } + var TotpBasedConsent = class extends HTMLElement { + constructor() { + super(); + this.templateString = markup.bind(this); + this.render = () => { + return this.templateString(); + }; + this.attachShadow({ mode: "open" }); + this.modes = []; + this["otp-delivery-mode"] = ""; + this.queryOtpModes = this.queryOtpModes.bind(this); + this.selectOtpMode = this.selectOtpMode.bind(this); + this.submitOtp = this.submitOtp.bind(this); + this.switchContactMethod = this.switchContactMethod.bind(this); + this.handleTotpConsentGrant = this.handleTotpConsentGrant.bind(this); + this.handleTotpConsentContactMethodsOutdated = this.handleTotpConsentContactMethodsOutdated.bind(this); + this.pages = []; + } + static get observedAttributes() { + return ["modes", "otp-delivery-mode"]; + } + attributeChangedCallback(name) { + switch (name) { + case "modes": + case "otp-delivery-mode": { + const updatedTemplate = document.createElement("template"); + updatedTemplate.innerHTML = this.render(); + const updatedNode = updatedTemplate.content.cloneNode(true).querySelector(`#${this.activeScreen.id}`); + updatedNode.hidden = false; + this.shadowRoot.replaceChild(updatedNode, this.activeScreen); + this.setUpEventListeners(); + this.setActiveScreen(updatedNode); + break; + } + default: + break; + } + } + setUpEventListeners() { + this.idEntryScreen = this.shadowRoot.querySelector("#id-entry"); + this.selectModeScreen = this.shadowRoot.querySelector("#select-mode"); + this.otpVerificationScreen = this.shadowRoot.querySelector("#otp-verification"); + if (!this.activeScreen) { + this.activeScreen = this.idEntryScreen; + } + this.queryOtpModesButton = this.idEntryScreen.querySelector("#query-otp-modes"); + this.backButton = this.idEntryScreen.querySelector("#back-button"); + this.selectOtpModeButton = this.selectModeScreen.querySelector("#select-otp-mode"); + this.entryBackbutton = this.selectModeScreen.querySelector( + "#back-to-entry-button" + ); + this.contactMethodsOutdatedButton = this.selectModeScreen.querySelector( + "#contact-methods-outdated" + ); + this.submitOtpButton = this.otpVerificationScreen.querySelector("#submit-otp"); + this.switchContactMethodButton = this.otpVerificationScreen.querySelector( + ".try-another-method" + ); + const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + this.idNumberInput = this.idEntryScreen.querySelector("#id_number"); + this.modeInputs = this.selectModeScreen.querySelectorAll('[name="mode"]'); + this.otpInput = this.otpVerificationScreen.querySelector("#totp-token"); + this.queryOtpModesButton.addEventListener( + "click", + (e) => this.queryOtpModes(e) + ); + this.selectOtpModeButton.addEventListener( + "click", + (e) => this.selectOtpMode(e) + ); + this.submitOtpButton.addEventListener("click", (e) => this.submitOtp(e)); + this.switchContactMethodButton.addEventListener( + "click", + (e) => this.switchContactMethod(e) + ); + this.contactMethodsOutdatedButton.addEventListener( + "click", + (e) => this.handleTotpConsentContactMethodsOutdated(e) + ); + this.entryBackbutton.addEventListener("click", () => { + this.handleBackClick(); + }); + this.backButton.addEventListener("click", () => { + this.handleBackClick(); + }); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + this.closeWindow(); + }, + false + ); + }); + } + closeWindow() { + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + handleBackClick() { + const page = this.pages.pop(); + if (page) { + this.setActiveScreen(page); + } else { + this.dispatchEvent( + new CustomEvent("SmileIdentity::ConsentDenied::Back", {}) + ); + } + } + connectedCallback() { + const template = document.createElement("template"); + template.innerHTML = this.render(); + this.shadowRoot.appendChild(template.content.cloneNode(true)); + this.setUpEventListeners(); + } + switchContactMethod() { + this.queryOtpModes(); + } + resetForm() { + const invalidElements = this.activeScreen.querySelectorAll("[aria-invalid]"); + invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); + const validationMessages = this.activeScreen.querySelectorAll( + ".validation-message" + ); + validationMessages.forEach((el) => el.remove()); + } + handleIdNumberValidationErrors(errors) { + const fields = Object.keys(errors); + fields.forEach((field) => { + const input = this.activeScreen.querySelector(`#${field}`); + input.setAttribute("aria-invalid", "true"); + input.setAttribute("aria-describedby", `${field}-hint`); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("id", `${field}-hint`); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = errors[field][0]; + input.insertAdjacentElement("afterend", errorDiv); + }); + } + handleActiveScreenErrors(error) { + const submitButton = this.activeScreen.querySelector('[type="submit"]'); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = error; + submitButton.insertAdjacentElement("beforebegin", errorDiv); + } + validateIdNumber(idNumber) { + const validationConstraints = { + id_number: { + presence: { + allowEmpty: false, + message: "is required" + }, + format: new RegExp(this.idRegex) + } + }; + const errors = (0, import_validate.default)({ id_number: idNumber }, validationConstraints); + if (errors) { + this.handleIdNumberValidationErrors(errors); + } + return errors; + } + async queryOtpModes(event) { + if (event) { + event.preventDefault(); + this.resetForm(); + } + const validationErrors = this.validateIdNumber(this.idNumberInput.value); + localStorage.setItem("idNumber", this.idNumberInput.value || this.idNumber); + if (!validationErrors) { + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + partner_id: this.partnerId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.sessionId = json.session_id; + this.modes = json.modes; + this.setActiveScreen(this.selectModeScreen); + this.setAttribute("modes", json.modes); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + } + async selectOtpMode(event) { + event.preventDefault(); + this.resetForm(); + this.mode = Array.prototype.find.call( + this.modeInputs, + (node) => node.checked + ).value; + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + mode: this.mode, + partner_id: this.partnerId, + session_id: this.sessionId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent/mode`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.selectedOtpDeliveryMode = this.modes.filter( + (mode) => mode[this.mode] + )[0][this.mode]; + this.setActiveScreen(this.otpVerificationScreen); + this.setAttribute("otp-delivery-mode", this.selectedOtpDeliveryMode); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + async submitOtp(event) { + event.preventDefault(); + this.resetForm(); + this.otp = this.otpInput.value; + const data = { + country: this.country, + id_number: this.idNumber, + id_type: this.idType, + otp: this.otp, + partner_id: this.partnerId, + session_id: this.sessionId, + token: this.token + }; + const url = `${this.baseUrl}/totp_consent/otp`; + try { + this.toggleLoading(); + const response = await postData(url, data); + const json = await response.json(); + this.toggleLoading(); + if (!response.ok) { + this.handleActiveScreenErrors(json.error); + } else { + this.handleTotpConsentGrant(event); + } + } catch (error) { + this.toggleLoading(); + this.handleActiveScreenErrors(error.message); + } + } + toggleLoading() { + const button = this.activeScreen.querySelector('button[type="submit"]'); + const text = button.querySelector(".text"); + const arrow = button.querySelector("svg"); + const spinner = button.querySelector(".spinner"); + button.toggleAttribute("disabled"); + text.toggleAttribute("hidden"); + arrow.toggleAttribute("hidden"); + spinner.toggleAttribute("hidden"); + } + setActiveScreen(screen) { + this.activeScreen.hidden = true; + screen.hidden = false; + this.activeScreen = screen; + } + get baseUrl() { + return this.getAttribute("base-url"); + } + get country() { + return this.getAttribute("country"); + } + get idHint() { + return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; + } + get idNumber() { + return localStorage.getItem("idNumber"); + } + get idRegex() { + return this.getAttribute("id-regex"); + } + get idType() { + return this.getAttribute("id-type"); + } + get idTypeLabel() { + return this.getAttribute("id-type-label"); + } + get partnerId() { + return this.getAttribute("partner-id"); + } + get partnerName() { + return this.getAttribute("partner-name"); + } + get token() { + return this.getAttribute("token"); + } + handleTotpConsentGrant() { + const customEvent = new CustomEvent("SmileIdentity::ConsentGranted::TOTP", { + detail: { + id_number: this.idNumber, + session_id: this.sessionId, + consented: { + personal_details: true, + contact_information: true, + document_information: true + } + } + }); + this.dispatchEvent(customEvent); + } + handleTotpConsentContactMethodsOutdated() { + const tag = "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated"; + const customEvent = new CustomEvent(tag, { + detail: { + message: tag, + data: { + id_number: this.idNumber, + session_id: this.sessionId + } + } + }); + this.dispatchEvent(customEvent); + } + }; + var TotpConsentApp_default = TotpBasedConsent; + + // src/js/components/Combobox.js + function generateId(prefix) { + const id = [...Array(30)].map(() => Math.random().toString(36)[3]).join(""); + return `${prefix}-${id}`; + } + function isElementInView(element) { + const bounding = element.getBoundingClientRect(); + return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth); + } + function isScrollable(element) { + return element && element.clientHeight < element.scrollHeight; + } + function maintainScrollVisibility(activeElement, scrollParent) { + const { offsetHeight, offsetTop } = activeElement; + const { offsetHeight: parentOffsetHeight, scrollTop } = scrollParent; + const isAbove = offsetTop < scrollTop; + const isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight; + if (isAbove) { + scrollParent.scrollTo(0, offsetTop); + } else if (isBelow) { + scrollParent.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight); + } + } + var ComboboxRoot = class extends HTMLElement { + constructor() { + super(); + this.handleRoaming = this.handleRoaming.bind(this); + } + connectedCallback() { + this.trigger = this.querySelector("smileid-combobox-trigger"); + document.addEventListener("click", this.handleRoaming); + this.addEventListener("focusout", this.handleRoaming); + this.addEventListener("blur", this.handleRoaming); + } + disconnectedCallback() { + document.removeEventListener("click", this.handleRoaming); + this.removeEventListener("focusout", this.handleRoaming); + this.removeEventListener("blur", this.handleRoaming); + } + handleRoaming(event) { + const target = event.relatedTarget || event.target; + if (this.contains(target)) { + return; + } + if (this.trigger.getAttribute("expanded") === "true") { + this.trigger.setAttribute("expanded", "false"); + } + } + }; + var ComboboxTrigger = class extends HTMLElement { + constructor() { + super(); + this.handleKeyUp = this.handleKeyUp.bind(this); + this.handleKeyDown = this.handleKeyDown.bind(this); + this.handleSelection = this.handleSelection.bind(this); + this.toggleExpansionState = this.toggleExpansionState.bind(this); + } + get type() { + return this.getAttribute("type") || "text"; + } + get label() { + return this.getAttribute("label") || ""; + } + get value() { + return this.getAttribute("value") || ""; + } + get disabled() { + return this.hasAttribute("disabled"); + } + connectedCallback() { + if (!this.label) { + throw new Error(": a label attribute is required"); + } + this.innerHTML = `${this.type === "text" ? ` +
+ + +
+ ` : ``}`; + this.setAttribute("expanded", false); + this.inputTrigger = this.querySelector("input"); + this.buttonTrigger = this.querySelector("button"); + this.buttonTrigger.setAttribute("aria-expanded", false); + this.buttonTrigger.setAttribute("role", "combobox"); + this.buttonTrigger.addEventListener("keydown", this.handleKeyDown); + this.buttonTrigger.addEventListener("click", this.toggleExpansionState); + if (this.inputTrigger) { + this.inputTrigger.setAttribute("aria-expanded", false); + this.inputTrigger.setAttribute("role", "combobox"); + this.inputTrigger.addEventListener("keydown", this.handleKeyDown); + this.inputTrigger.addEventListener("keyup", this.handleKeyUp); + this.inputTrigger.addEventListener("change", (e) => e.stopPropagation()); + } + this.listbox = this.parentElement.querySelector("smileid-combobox-listbox"); + this.options = Array.from( + this.parentElement.querySelectorAll("smileid-combobox-option") + ); + this.options.forEach((node) => { + node.addEventListener("Combobox::Option::Select", this.handleSelection); + }); + } + disconnectedCallback() { + this.buttonTrigger.removeEventListener("keydown", this.handleKeyDown); + this.buttonTrigger.removeEventListener("click", this.toggleExpansionState); + if (this.inputTrigger) { + this.inputTrigger.removeEventListener("keydown", this.handleKeyDown); + this.inputTrigger.removeEventListener("keyup", this.handleKeyUp); + this.inputTrigger.removeEventListener( + "change", + (e) => e.stopPropagation() + ); + } + if (this.options) { + this.options.forEach((node) => { + node.removeEventListener( + "Combobox::Option::Select", + this.handleSelection + ); + }); + } + } + handleKeyDown(event) { + if (event.ctrlKey || event.shiftKey) { + return; + } + const key = event.key; + switch (key) { + case "Enter": + case "Space": + case " ": + if (this.getAttribute("expanded") === "true") { + if (this.inputTrigger && (key === "Space" || key === " ")) { + this.resetListbox(); + } else { + event.preventDefault(); + const selectedOption = this.buttonTrigger.getAttribute( + "aria-activedescendant" + ); + if (selectedOption) { + document.getElementById(selectedOption).click(); + } + } + } else { + event.preventDefault(); + this.toggleExpansionState(); + } + break; + case "Esc": + case "Escape": + event.preventDefault(); + if (this.getAttribute("expanded") === "true") { + this.toggleExpansionState(); + } + break; + case "Down": + case "ArrowDown": + event.preventDefault(); + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + this.focusListbox("First"); + } else { + this.focusListbox("Down"); + } + break; + case "Up": + case "ArrowUp": + event.preventDefault(); + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + this.focusListbox("Last"); + } else { + this.focusListbox("Up"); + } + break; + case "Left": + case "ArrowLeft": + case "Right": + case "ArrowRight": + case "Home": + case "End": + this.resetListbox(); + break; + case "Tab": + break; + default: + break; + } + } + handleKeyUp(event) { + const key = event.key; + const isPrintableCharacter = (str) => str.length === 1 && str.match(/\S| /); + if (event.key === "Escape" || event.key === "Esc") { + event.preventDefault(); + if (this.getAttribute("expanded") === "true") { + this.toggleExpansionState(); + } else if (this.inputTrigger) { + this.inputTrigger.value = ""; + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Filter", { detail: "" }) + ); + } + } + if (isPrintableCharacter(key) || key === "Backspace") { + this.resetListbox(); + this.filterListbox(event.target.value); + } + } + toggleExpansionState() { + const listboxIsExpanded = this.getAttribute("expanded") === "true"; + this.setAttribute("expanded", !listboxIsExpanded); + this.buttonTrigger.setAttribute("aria-expanded", !listboxIsExpanded); + if (this.inputTrigger) { + this.inputTrigger.setAttribute("aria-expanded", !listboxIsExpanded); + } + } + handleSelection(event) { + if (this.inputTrigger) { + this.inputTrigger.value = event.detail.label; + } else { + this.buttonTrigger.textContent = event.detail.label; + } + this.toggleExpansionState(); + this.parentElement.dispatchEvent( + new CustomEvent("change", { + detail: { + value: event.detail.value + } + }) + ); + } + filterListbox(value) { + if (this.getAttribute("expanded") !== "true") { + this.toggleExpansionState(); + } + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Filter", { detail: value }) + ); + } + focusListbox(direction) { + this.resetListbox(); + this.listbox.dispatchEvent( + new CustomEvent("Combobox::Listbox::Focus", { + detail: { + direction + } + }) + ); + } + resetListbox() { + this.listbox.dispatchEvent(new CustomEvent("Combobox::Listbox::Reset")); + } + }; + var ComboboxListbox = class extends HTMLElement { + constructor() { + super(); + this.handleFilter = this.handleFilter.bind(this); + this.handleFocus = this.handleFocus.bind(this); + this.handleReset = this.handleReset.bind(this); + this.handleOptionSelection = this.handleOptionSelection.bind(this); + } + get emptyLabel() { + return this.getAttribute("empty-label"); + } + get emptyState() { + return ` +

+ ${this.emptyLabel || "No items"} +

+ `; + } + connectedCallback() { + this.setAttribute("role", "listbox"); + this.setAttribute("id", generateId("listbox")); + this.addEventListener("Combobox::Listbox::Filter", this.handleFilter); + this.addEventListener("Combobox::Listbox::Focus", this.handleFocus); + this.addEventListener("Combobox::Listbox::Reset", this.handleReset); + this.triggers = Array.from( + this.parentElement.querySelectorAll( + "smileid-combobox-trigger input, smileid-combobox-trigger button" + ) + ); + this.triggers.forEach( + (node) => node.setAttribute("aria-controls", this.getAttribute("id")) + ); + this.optionNodes = Array.from( + this.querySelectorAll("smileid-combobox-option") + ); + this.selectedNode = this.optionNodes.find( + (node) => !node.hasAttribute("hidden") && node.hasAttribute("aria-selected") + ) || this.optionNodes.filter((node) => !node.hasAttribute("hidden"))[0]; + this.selectedNode.setAttribute("tabindex", "0"); + this.optionNodes.forEach((node) => { + node.addEventListener( + "Combobox::Option::Select", + this.handleOptionSelection + ); + }); + if (this.optionNodes.length === 0) { + this.innerHTML = this.emptyState; + } + } + disconnectedCallback() { + this.removeEventListener("Combobox::Listbox::Filter", this.handleFilter); + this.removeEventListener("Combobox::Listbox::Focus", this.handleFocus); + this.removeEventListener("Combobox::Listbox::Reset", this.handleReset); + this.optionNodes.forEach((node) => { + node.removeEventListener( + "Combobox::Option::Select", + this.handleOptionSelection + ); + }); + } + static get observedAttributes() { + return ["search-term"]; + } + attributeChangedCallback(name, oldValue, newValue) { + switch (name) { + case "search-term": + if (oldValue && !newValue) { + this.optionNodes.forEach((node) => { + node.removeAttribute("hidden"); + }); + } else if (newValue) { + this.filterNodes(newValue); + } + break; + default: + break; + } + } + filterNodes(searchTerm) { + this.optionNodes.forEach((node) => { + const value = node.getAttribute("value").toLowerCase(); + const label = node.getAttribute("label").toLowerCase(); + const containsSearchTerm = value.includes(searchTerm.toLowerCase()) || label.includes(searchTerm.toLowerCase()); + if (containsSearchTerm) { + node.removeAttribute("hidden"); + } else { + node.setAttribute("hidden", true); + } + }); + const optionsVisible = this.optionNodes.find( + (node) => !node.hasAttribute("hidden") + ); + const emptyState = this.querySelector("#empty-state"); + if (!optionsVisible && !emptyState) { + this.insertAdjacentHTML("afterbegin", this.emptyState); + } else if (optionsVisible && emptyState) { + this.removeChild(emptyState); + } + } + handleFilter(event) { + const searchTerm = event.detail; + this.setAttribute("search-term", searchTerm); + } + handleFocus(event) { + this.setSelected(event.detail.direction); + } + handleReset() { + this.optionNodes.forEach((node) => node.setAttribute("tabindex", "-1")); + } + handleOptionSelection(event) { + const inputTrigger = this.triggers.filter( + (node) => node.tagName === "INPUT" + )[0]; + if (inputTrigger) { + this.setAttribute("search-term", event.detail.label); + } + } + setSelected(direction) { + const visibleOptions = this.optionNodes.filter( + (node) => !node.hasAttribute("hidden") + ); + this.selectedNode.setAttribute("tabindex", "0"); + const currentIndex = visibleOptions.findIndex( + (node) => node === this.selectedNode + ); + const lastIndex = visibleOptions.length - 1; + let nextIndex; + switch (direction) { + case "First": + nextIndex = 0; + break; + case "Last": + nextIndex = lastIndex; + break; + case "Up": + if (currentIndex === 0) { + nextIndex = lastIndex; + } else { + nextIndex = currentIndex - 1; + } + break; + default: + if (currentIndex === lastIndex) { + nextIndex = 0; + } else { + nextIndex = currentIndex + 1; + } + break; + } + if (currentIndex !== nextIndex) { + this.swapSelected(this.selectedNode, visibleOptions[nextIndex]); + } + } + swapSelected(currentNode, newNode) { + currentNode.setAttribute("tabindex", "-1"); + newNode.setAttribute("tabindex", "0"); + this.selectedNode = newNode; + if (isScrollable(this)) { + maintainScrollVisibility(this.selectedNode, this); + } + if (!isElementInView(newNode)) { + newNode.scrollIntoView({ behavior: "smooth", block: "nearest" }); + } + this.triggers.forEach( + (node) => node.setAttribute("aria-activedescendant", newNode.id) + ); + } + }; + var ComboboxOption = class extends HTMLElement { + connectedCallback() { + this.setAttribute("role", "option"); + this.setAttribute("tabindex", "-1"); + this.setAttribute("id", generateId("option")); + this.options = Array.from( + this.parentElement.querySelectorAll("smileid-combobox-option") + ); + this.addEventListener("click", this.select); + } + disconnectedCallback() { + this.removeEventListener("click", this.select); + } + get value() { + return this.getAttribute("value"); + } + get label() { + return this.getAttribute("label"); + } + select() { + const selectedOption = this.options.find( + (node) => node.getAttribute("aria-selected") + ); + if (selectedOption) { + selectedOption.removeAttribute("aria-selected"); + } + this.setAttribute("aria-selected", true); + this.dispatchEvent( + new CustomEvent("Combobox::Option::Select", { + detail: { + label: this.label, + value: this.value, + id: this.getAttribute("id") + } + }) + ); + } + }; + var Combobox_default = { + Root: ComboboxRoot, + Trigger: ComboboxTrigger, + List: ComboboxListbox, + Option: ComboboxOption + }; + + // package.json + var version = "v1.2.3"; + + // src/js/ekyc.js + (function eKYC() { + "use strict"; + const endpoints = { + development: "https://devapi.smileidentity.com/v1", + sandbox: "https://testapi.smileidentity.com/v1", + live: "https://api.smileidentity.com/v1", + production: "https://api.smileidentity.com/v1" + }; + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); + window.customElements.define("end-user-consent", ConsentScreen_default); + window.customElements.define("totp-consent-app", TotpConsentApp_default); + window.customElements.define("smileid-combobox", Combobox_default.Root); + window.customElements.define("smileid-combobox-trigger", Combobox_default.Trigger); + window.customElements.define("smileid-combobox-listbox", Combobox_default.List); + window.customElements.define("smileid-combobox-option", Combobox_default.Option); + const pages = []; + let activeScreen; + let config; + let consent_information; + let EndUserConsent2; + let id_info; + let partner_params; + let ngBankCodes; + let productConstraints; + const LoadingScreen = document.querySelector("#loading-screen"); + const SelectIDType = document.querySelector("#select-id-type"); + const IDInfoForm = document.querySelector("#id-info"); + const CompleteScreen = document.querySelector("#complete-screen"); + let disableBackOnFirstScreen = false; + const CloseIframeButtons = document.querySelectorAll(".close-iframe"); + function postData2(url = "", data = {}) { + return fetch(url, { + method: "POST", + mode: "cors", + cache: "no-cache", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + body: JSON.stringify(data) + }); + } + async function getProductConstraints() { + try { + const productsConfigPayload = { + partner_id: config.partner_details.partner_id, + token: config.token, + partner_params + }; + const productsConfigUrl = `${endpoints[config.environment]}/products_config`; + const productsConfigPromise = postData2( + productsConfigUrl, + productsConfigPayload + ); + const servicesPromise = fetch( + `${endpoints[config.environment]}/services` + ); + const [productsConfigResponse, servicesResponse] = await Promise.all([ + productsConfigPromise, + servicesPromise + ]); + if (productsConfigResponse.ok && servicesResponse.ok) { + const partnerConstraints = await productsConfigResponse.json(); + const generalConstraints = await servicesResponse.json(); + ngBankCodes = generalConstraints.bank_codes; + const previewBvnMfa = config.previewBVNMFA; + if (previewBvnMfa) { + generalConstraints.hosted_web.enhanced_kyc.NG.id_types.BVN_MFA = { + id_number_regex: "^[0-9]{11}$", + label: "Bank Verification Number (with OTP)", + required_fields: [ + "country", + "id_type", + "session_id", + "user_id", + "job_id" + ], + test_data: "00000000000" + }; + } + return { + partnerConstraints, + generalConstraints: generalConstraints.hosted_web.enhanced_kyc + }; + } + throw new Error("Failed to get supported ID types"); + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + window.addEventListener( + "message", + async (event) => { + if (event.data && event.data.includes("SmileIdentity::Configuration")) { + config = JSON.parse(event.data); + activeScreen = LoadingScreen; + getPartnerParams(); + const { partnerConstraints, generalConstraints } = await getProductConstraints(); + productConstraints = generalConstraints; + initializeSession(generalConstraints, partnerConstraints); + } + }, + false + ); + function setInitialScreen(partnerConstraints) { + const { country: selectedCountry, id_type: selectedIDType } = id_info; + const selectedIdRequiresConsent = partnerConstraints.consentRequired[selectedCountry] ? partnerConstraints.consentRequired[selectedCountry].includes( + selectedIDType + ) : false; + if (selectedIdRequiresConsent || config.consent_required || config.demo_mode) { + const IDRequiresConsent = selectedIdRequiresConsent || config.consent_required && config.consent_required[selectedCountry] && config.consent_required[selectedCountry].includes(selectedIDType); + if (IDRequiresConsent || config.demo_mode) { + customizeConsentScreen(); + setActiveScreen(EndUserConsent2); + } else { + setActiveScreen(IDInfoForm); + } + } else { + hideIdFromBackExit(); + setActiveScreen(IDInfoForm); + } + customizeForm(); + } + function hideIdFromBackExit() { + if (!disableBackOnFirstScreen) + return; + IDInfoForm.querySelector(".nav").classList.add("justify-right"); + IDInfoForm.querySelector(".back-wrapper").style.display = "none"; + } + function initializeSession(generalConstraints, partnerConstraints) { + const supportedCountries = Object.keys(generalConstraints).map((countryCode) => ({ + code: countryCode, + name: generalConstraints[countryCode].name + })).sort((a, b) => { + if (a.name < b.name) { + return -1; + } + if (a.name > b.name) { + return 1; + } + return 0; + }).map((item) => item.code); + let validCountries = []; + if (config.id_selection) { + const selectedCountryList = Object.keys(config.id_selection); + validCountries = supportedCountries.filter( + (value) => selectedCountryList.includes(value) + ); + if (validCountries.length === 1) { + const selectedCountry = validCountries[0]; + id_info = { + country: validCountries[0] + }; + const idTypes = config.id_selection[selectedCountry]; + if (idTypes.length === 1 || typeof idTypes === "string") { + id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; + disableBackOnFirstScreen = true; + setInitialScreen(partnerConstraints); + } + } + } else { + validCountries = Object.keys(partnerConstraints.idSelection.enhanced_kyc); + } + if (!id_info || !id_info.id_type) { + const selectCountry = SelectIDType.querySelector("#country"); + const selectIDType = SelectIDType.querySelector("#id_type"); + const hostedWebConfigForm = document.querySelector( + 'form[name="hosted-web-config"]' + ); + selectCountry.disabled = false; + setActiveScreen(SelectIDType); + const loadIdTypes = (countryCode) => { + if (countryCode) { + const validIDTypes = config.id_selection ? config.id_selection : partnerConstraints.idSelection.enhanced_kyc; + const constrainedIDTypes = Object.keys( + generalConstraints[countryCode].id_types + ); + const selectedIDTypes = validIDTypes[countryCode].filter( + (value) => constrainedIDTypes.includes(value) + ); + selectIDType.innerHTML = ""; + const initialOption = document.createElement("option"); + initialOption.setAttribute("value", ""); + initialOption.textContent = "--Please Select--"; + selectIDType.appendChild(initialOption); + selectedIDTypes.forEach((IDType) => { + const option = document.createElement("option"); + option.setAttribute("value", IDType); + option.textContent = generalConstraints[countryCode].id_types[IDType].label; + selectIDType.appendChild(option); + }); + selectIDType.disabled = false; + } else { + selectIDType.innerHTML = ""; + const option = document.createElement("option"); + option.disabled = true; + option.setAttribute("value", ""); + option.textContent = "--Select Country First--"; + selectIDType.appendChild(option); + } + }; + selectCountry.addEventListener("change", (e) => { + loadIdTypes(e.target.value); + }); + validCountries.forEach((country) => { + const countryObject = generalConstraints[country]; + if (countryObject) { + const option = document.createElement("option"); + option.setAttribute("value", country); + option.textContent = countryObject.name; + if (id_info && id_info.country && country === id_info.country) { + option.setAttribute("selected", true); + selectCountry.value = country; + selectCountry.disabled = true; + loadIdTypes(country); + } + selectCountry.appendChild(option); + } + }); + hostedWebConfigForm.addEventListener("submit", (e) => { + e.preventDefault(); + const selectedCountry = selectCountry.value; + const selectedIDType = selectIDType.value; + id_info = { + country: selectedCountry, + id_type: selectedIDType + }; + setInitialScreen(partnerConstraints); + }); + } + } + function initiateDemoMode() { + const demoTips = document.querySelectorAll(".demo-tip"); + Array.prototype.forEach.call(demoTips, (tip) => { + tip.hidden = false; + }); + const script = document.createElement("script"); + script.type = "text/javascript"; + script.src = "js/demo-ekyc.min.js"; + document.body.appendChild(script); + } + IDInfoForm.querySelector("#submitForm").addEventListener( + "click", + (event) => { + handleFormSubmit(event); + }, + false + ); + IDInfoForm.querySelector("#back-button").addEventListener( + "click", + (event) => { + event.preventDefault(); + const page = pages.pop(); + setActiveScreen(page); + }, + false + ); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + closeWindow(true); + }, + false + ); + }); + function customizeConsentScreen() { + const partnerDetails = config.partner_details; + const main = document.querySelector("main"); + EndUserConsent2 = document.querySelector("end-user-consent"); + if (EndUserConsent2) { + main.removeChild(EndUserConsent2); + } + EndUserConsent2 = document.createElement("end-user-consent"); + EndUserConsent2.setAttribute( + "base-url", + endpoints[config.environment] || config.environment + ); + EndUserConsent2.setAttribute("country", id_info.country); + EndUserConsent2.setAttribute( + "id-regex", + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ); + EndUserConsent2.setAttribute("id-type", id_info.id_type); + EndUserConsent2.setAttribute( + "id-type-label", + productConstraints[id_info.country].id_types[id_info.id_type].label + ); + EndUserConsent2.setAttribute("partner-id", partnerDetails.partner_id); + EndUserConsent2.setAttribute("partner-name", partnerDetails.name); + EndUserConsent2.setAttribute("partner-logo", partnerDetails.logo_url); + EndUserConsent2.setAttribute("policy-url", partnerDetails.policy_url); + EndUserConsent2.setAttribute("theme-color", partnerDetails.theme_color); + EndUserConsent2.setAttribute("token", config.token); + if (disableBackOnFirstScreen) { + EndUserConsent2.setAttribute("hide-back-to-host", true); + } + if (config.demo_mode) { + EndUserConsent2.setAttribute("demo-mode", config.demo_mode); + localStorage.setItem( + "SmileIdentityConstraints", + JSON.stringify(productConstraints, null, 2) + ); + initiateDemoMode(); + } + EndUserConsent2.addEventListener( + "SmileIdentity::Exit", + () => { + setActiveScreen(SelectIDType); + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentGranted", + (event) => { + consent_information = event.detail; + if (consent_information.consented.personal_details) { + id_info.consent_information = consent_information; + setActiveScreen(IDInfoForm); + } + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentGranted::TOTP", + (event) => { + consent_information = event.detail; + if (consent_information.consented.personal_details) { + id_info.id_number = consent_information.id_number; + id_info.session_id = consent_information.session_id; + id_info.consent_information = consent_information; + handleFormSubmit(); + } + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentDenied", + () => { + referenceWindow.postMessage("SmileIdentity::ConsentDenied", "*"); + closeWindow(); + }, + false + ); + EndUserConsent2.addEventListener( + "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", + (event) => { + referenceWindow.postMessage(event.detail, "*"); + closeWindow(); + }, + false + ); + main.appendChild(EndUserConsent2); + } + function customizeForm() { + setGuideTextForIDType(); + setFormInputs(); + } + function setGuideTextForIDType() { + const label = document.querySelector('[for="id_number"]'); + const input = document.querySelector("#id_number"); + label.innerHTML = productConstraints[id_info.country].id_types[id_info.id_type].label; + input.setAttribute( + "placeholder", + productConstraints[id_info.country].id_types[id_info.id_type].test_data + ); + input.setAttribute( + "pattern", + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ); + } + function loadBankCodes(bankCodes, placeholderElement) { + const autocomplete = document.createElement("smileid-combobox"); + autocomplete.setAttribute("id", "bank_code"); + autocomplete.innerHTML = ` + + + + + ${bankCodes.map( + (bank) => ` + + ${bank.name} + + ` + ).join("\n")} + + `; + placeholderElement.replaceWith(autocomplete); + autocomplete.addEventListener("change", (e) => { + id_info.bank_code = e.detail ? e.detail.value : ""; + }); + return autocomplete; + } + function setFormInputs() { + const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; + const showIdNumber = requiredFields.some( + (fieldName) => fieldName.includes("id_number") + ); + if (showIdNumber) { + const IdNumber = IDInfoForm.querySelector("div#id-number"); + IdNumber.hidden = false; + } + const showNames = requiredFields.some( + (fieldName) => fieldName.includes("name") + ); + if (showNames) { + const Names = IDInfoForm.querySelector("fieldset#names"); + Names.hidden = false; + } + const showDOB = requiredFields.some( + (fieldName) => fieldName.includes("dob") + ); + if (showDOB) { + const DOB = IDInfoForm.querySelector("fieldset#dob"); + DOB.hidden = false; + } + const showCitizenship = requiredFields.some( + (fieldName) => fieldName.includes("citizenship") + ); + if (showCitizenship) { + const Citizenship = IDInfoForm.querySelector("fieldset#citizenships"); + Citizenship.hidden = false; + } + const showBankCode = requiredFields.some( + (fieldName) => fieldName.includes("bank_code") + ); + if (showBankCode) { + const BankCode = IDInfoForm.querySelector("fieldset#bank-code"); + loadBankCodes(ngBankCodes, BankCode.querySelector("#bank_code")); + BankCode.hidden = false; + } + } + function getPartnerParams() { + function parseJWT(token) { + const base64Url = token.split(".")[1]; + const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); + const jsonPayload = decodeURIComponent( + atob(base64).split("").map(function(c) { + return `%${c.charCodeAt(0).toString(16)}`; + }).join("") + ); + return JSON.parse(jsonPayload); + } + const { partner_params: partnerParams } = parseJWT(config.token); + partner_params = { ...partnerParams, ...config.partner_params || {} }; + } + function setActiveScreen(node) { + activeScreen.hidden = true; + node.hidden = false; + pages.push(activeScreen); + activeScreen = node; + } + function resetForm() { + const invalidElements = IDInfoForm.querySelectorAll("[aria-invalid]"); + invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); + const validationMessages = document.querySelectorAll(".validation-message"); + validationMessages.forEach((el) => el.remove()); + } + function validateInputs(payload) { + const validationConstraints = {}; + const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; + const showIdNumber = requiredFields.some( + (fieldName) => fieldName.includes("id_number") + ); + if (showIdNumber) { + validationConstraints.id_number = { + presence: { + allowEmpty: false, + message: "is required" + }, + format: new RegExp( + productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex + ) + }; + } + const showNames = requiredFields.some( + (fieldName) => fieldName.includes("name") + ); + if (showNames) { + validationConstraints.first_name = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.last_name = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const showDOB = requiredFields.some( + (fieldName) => fieldName.includes("dob") + ); + if (showDOB) { + validationConstraints.day = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.month = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + validationConstraints.year = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const showCitizenship = requiredFields.some( + (fieldName) => fieldName.includes("citizenship") + ); + if (showCitizenship) { + validationConstraints.citizenship = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const showBankCode = requiredFields.some( + (fieldName) => fieldName.includes("bank_code") + ); + if (showBankCode) { + validationConstraints.bank_code = { + presence: { + allowEmpty: false, + message: "is required" + } + }; + } + const validation = (0, import_validate2.default)(payload, validationConstraints); + if (validation) { + handleValidationErrors(validation); + const submitButton = IDInfoForm.querySelector('[type="button"]'); + submitButton.removeAttribute("disabled"); + } + return validation; + } + function handleValidationErrors(errors) { + const fields = Object.keys(errors); + fields.forEach((field) => { + const input = IDInfoForm.querySelector(`#${field}`); + input.setAttribute("aria-invalid", "true"); + input.setAttribute("aria-describedby", `${field}-hint`); + const errorDiv = document.createElement("div"); + errorDiv.setAttribute("id", `${field}-hint`); + errorDiv.setAttribute("class", "validation-message"); + errorDiv.textContent = errors[field][0]; + input.insertAdjacentElement("afterend", errorDiv); + }); + } + async function handleFormSubmit(event) { + if (event) { + event.preventDefault(); + resetForm(); + } + const form = IDInfoForm.querySelector("form"); + const formData = new FormData(form); + const payload = { ...id_info, ...Object.fromEntries(formData.entries()) }; + const isInvalid = validateInputs(payload); + if (isInvalid) { + return; + } + id_info = { + dob: `${payload.year}-${payload.month}-${payload.day}`, + entered: true, + ...payload, + ...id_info + }; + try { + if (event && event.target) + event.target.disabled = true; + await submitIdInfoForm(); + if (event && event.target) + event.target.disabled = false; + complete(); + } catch (error) { + if (event && event.target) + event.target.disabled = false; + displayErrorMessage("Something went wrong"); + console.error( + `SmileIdentity - ${error.name || error.message}: ${error.cause}` + ); + } + } + function displayErrorMessage(message) { + const p = document.createElement("p"); + p.textContent = message; + p.classList.add("validation-message"); + p.style.fontSize = "1.5rem"; + p.style.textAlign = "center"; + const main = document.querySelector("main"); + main.prepend(p); + } + async function submitIdInfoForm() { + const { year, month, day, ...data } = id_info; + const dob = year && month && day ? `${year}-${month}-${day}` : void 0; + const { + callback_url, + token, + partner_details: { partner_id } + } = config; + const payload = { + ...data, + dob, + partner_id, + callback_url, + token, + source_sdk: config.sdk || "hosted_web", + source_sdk_version: config.sdk_version || version, + partner_params: { + ...partner_params, + job_type: 5 + } + }; + const URL = `${endpoints[config.environment]}/async_id_verification`; + const response = await postData2(URL, payload); + const json = await response.json(); + if (json.error) + throw new Error(json.error); + } + function complete() { + const countryName = productConstraints[id_info.country].name; + const idTypeName = productConstraints[id_info.country].id_types[id_info.id_type].label; + const thankYouMessage = CompleteScreen.querySelector("#thank-you-message"); + thankYouMessage.textContent = `We will process your ${countryName} - ${idTypeName} information to verify your identity`; + setActiveScreen(CompleteScreen); + handleSuccess(); + window.setTimeout(closeWindow, 2e3); + } + function closeWindow(userTriggered) { + const message = userTriggered ? "SmileIdentity::Close" : "SmileIdentity::Close::System"; + referenceWindow.postMessage(message, "*"); + } + function handleSuccess() { + referenceWindow.postMessage("SmileIdentity::Success", "*"); + } + })(); +})(); +/*! Bundled license information: + +validate.js/validate.js: + (*! + * validate.js 0.13.1 + * + * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp + * Validate.js may be freely distributed under the MIT license. + * For all details and documentation: + * http://validatejs.org/ + *) +*/ diff --git a/packages/embed/build/js/enhanced-document-verification.min.js b/packages/embed/build/js/enhanced-document-verification.min.js new file mode 100644 index 00000000..faa10499 --- /dev/null +++ b/packages/embed/build/js/enhanced-document-verification.min.js @@ -0,0 +1,4838 @@ +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] + }) : x)(function(x) { + if (typeof require !== "undefined") + return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); + }); + var __commonJS = (cb, mod) => function __require2() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + + // ../../node_modules/jszip/dist/jszip.min.js + var require_jszip_min = __commonJS({ + "../../node_modules/jszip/dist/jszip.min.js"(exports, module) { + !function(e) { + if ("object" == typeof exports && "undefined" != typeof module) + module.exports = e(); + else if ("function" == typeof define && define.amd) + define([], e); + else { + ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e(); + } + }(function() { + return function s(a, o, h) { + function u(r, e2) { + if (!o[r]) { + if (!a[r]) { + var t = "function" == typeof __require && __require; + if (!e2 && t) + return t(r, true); + if (l) + return l(r, true); + var n = new Error("Cannot find module '" + r + "'"); + throw n.code = "MODULE_NOT_FOUND", n; + } + var i = o[r] = { exports: {} }; + a[r][0].call(i.exports, function(e3) { + var t2 = a[r][1][e3]; + return u(t2 || e3); + }, i, i.exports, s, a, o, h); + } + return o[r].exports; + } + for (var l = "function" == typeof __require && __require, e = 0; e < h.length; e++) + u(h[e]); + return u; + }({ 1: [function(e, t, r) { + "use strict"; + var d = e("./utils"), c = e("./support"), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + r.encode = function(e2) { + for (var t2, r2, n, i, s, a, o, h = [], u = 0, l = e2.length, f = l, c2 = "string" !== d.getTypeOf(e2); u < e2.length; ) + f = l - u, n = c2 ? (t2 = e2[u++], r2 = u < l ? e2[u++] : 0, u < l ? e2[u++] : 0) : (t2 = e2.charCodeAt(u++), r2 = u < l ? e2.charCodeAt(u++) : 0, u < l ? e2.charCodeAt(u++) : 0), i = t2 >> 2, s = (3 & t2) << 4 | r2 >> 4, a = 1 < f ? (15 & r2) << 2 | n >> 6 : 64, o = 2 < f ? 63 & n : 64, h.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)); + return h.join(""); + }, r.decode = function(e2) { + var t2, r2, n, i, s, a, o = 0, h = 0, u = "data:"; + if (e2.substr(0, u.length) === u) + throw new Error("Invalid base64 input, it looks like a data url."); + var l, f = 3 * (e2 = e2.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; + if (e2.charAt(e2.length - 1) === p.charAt(64) && f--, e2.charAt(e2.length - 2) === p.charAt(64) && f--, f % 1 != 0) + throw new Error("Invalid base64 input, bad content length."); + for (l = c.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e2.length; ) + t2 = p.indexOf(e2.charAt(o++)) << 2 | (i = p.indexOf(e2.charAt(o++))) >> 4, r2 = (15 & i) << 4 | (s = p.indexOf(e2.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e2.charAt(o++))), l[h++] = t2, 64 !== s && (l[h++] = r2), 64 !== a && (l[h++] = n); + return l; + }; + }, { "./support": 30, "./utils": 32 }], 2: [function(e, t, r) { + "use strict"; + var n = e("./external"), i = e("./stream/DataWorker"), s = e("./stream/Crc32Probe"), a = e("./stream/DataLengthProbe"); + function o(e2, t2, r2, n2, i2) { + this.compressedSize = e2, this.uncompressedSize = t2, this.crc32 = r2, this.compression = n2, this.compressedContent = i2; + } + o.prototype = { getContentWorker: function() { + var e2 = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), t2 = this; + return e2.on("end", function() { + if (this.streamInfo.data_length !== t2.uncompressedSize) + throw new Error("Bug : uncompressed data size mismatch"); + }), e2; + }, getCompressedWorker: function() { + return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); + } }, o.createWorkerFrom = function(e2, t2, r2) { + return e2.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t2.compressWorker(r2)).pipe(new a("compressedSize")).withStreamInfo("compression", t2); + }, t.exports = o; + }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e, t, r) { + "use strict"; + var n = e("./stream/GenericWorker"); + r.STORE = { magic: "\0\0", compressWorker: function() { + return new n("STORE compression"); + }, uncompressWorker: function() { + return new n("STORE decompression"); + } }, r.DEFLATE = e("./flate"); + }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e, t, r) { + "use strict"; + var n = e("./utils"); + var o = function() { + for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { + e2 = r2; + for (var n2 = 0; n2 < 8; n2++) + e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; + t2[r2] = e2; + } + return t2; + }(); + t.exports = function(e2, t2) { + return void 0 !== e2 && e2.length ? "string" !== n.getTypeOf(e2) ? function(e3, t3, r2, n2) { + var i = o, s = n2 + r2; + e3 ^= -1; + for (var a = n2; a < s; a++) + e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3[a])]; + return -1 ^ e3; + }(0 | t2, e2, e2.length, 0) : function(e3, t3, r2, n2) { + var i = o, s = n2 + r2; + e3 ^= -1; + for (var a = n2; a < s; a++) + e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3.charCodeAt(a))]; + return -1 ^ e3; + }(0 | t2, e2, e2.length, 0) : 0; + }; + }, { "./utils": 32 }], 5: [function(e, t, r) { + "use strict"; + r.base64 = false, r.binary = false, r.dir = false, r.createFolders = true, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null; + }, {}], 6: [function(e, t, r) { + "use strict"; + var n = null; + n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n }; + }, { lie: 37 }], 7: [function(e, t, r) { + "use strict"; + var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i = e("pako"), s = e("./utils"), a = e("./stream/GenericWorker"), o = n ? "uint8array" : "array"; + function h(e2, t2) { + a.call(this, "FlateWorker/" + e2), this._pako = null, this._pakoAction = e2, this._pakoOptions = t2, this.meta = {}; + } + r.magic = "\b\0", s.inherits(h, a), h.prototype.processChunk = function(e2) { + this.meta = e2.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e2.data), false); + }, h.prototype.flush = function() { + a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); + }, h.prototype.cleanUp = function() { + a.prototype.cleanUp.call(this), this._pako = null; + }, h.prototype._createPako = function() { + this._pako = new i[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); + var t2 = this; + this._pako.onData = function(e2) { + t2.push({ data: e2, meta: t2.meta }); + }; + }, r.compressWorker = function(e2) { + return new h("Deflate", e2); + }, r.uncompressWorker = function() { + return new h("Inflate", {}); + }; + }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e, t, r) { + "use strict"; + function A(e2, t2) { + var r2, n2 = ""; + for (r2 = 0; r2 < t2; r2++) + n2 += String.fromCharCode(255 & e2), e2 >>>= 8; + return n2; + } + function n(e2, t2, r2, n2, i2, s2) { + var a, o, h = e2.file, u = e2.compression, l = s2 !== O.utf8encode, f = I.transformTo("string", s2(h.name)), c = I.transformTo("string", O.utf8encode(h.name)), d = h.comment, p = I.transformTo("string", s2(d)), m = I.transformTo("string", O.utf8encode(d)), _ = c.length !== h.name.length, g = m.length !== d.length, b = "", v = "", y = "", w = h.dir, k = h.date, x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; + t2 && !r2 || (x.crc32 = e2.crc32, x.compressedSize = e2.compressedSize, x.uncompressedSize = e2.uncompressedSize); + var S = 0; + t2 && (S |= 8), l || !_ && !g || (S |= 2048); + var z = 0, C = 0; + w && (z |= 16), "UNIX" === i2 ? (C = 798, z |= function(e3, t3) { + var r3 = e3; + return e3 || (r3 = t3 ? 16893 : 33204), (65535 & r3) << 16; + }(h.unixPermissions, w)) : (C = 20, z |= function(e3) { + return 63 & (e3 || 0); + }(h.dosPermissions)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v = A(1, 1) + A(B(f), 4) + c, b += "up" + A(v.length, 2) + v), g && (y = A(1, 1) + A(B(p), 4) + m, b += "uc" + A(y.length, 2) + y); + var E = ""; + return E += "\n\0", E += A(S, 2), E += u.magic, E += A(a, 2), E += A(o, 2), E += A(x.crc32, 4), E += A(x.compressedSize, 4), E += A(x.uncompressedSize, 4), E += A(f.length, 2), E += A(b.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + E + f + b, dirRecord: R.CENTRAL_FILE_HEADER + A(C, 2) + E + A(p.length, 2) + "\0\0\0\0" + A(z, 4) + A(n2, 4) + f + b + p }; + } + var I = e("../utils"), i = e("../stream/GenericWorker"), O = e("../utf8"), B = e("../crc32"), R = e("../signature"); + function s(e2, t2, r2, n2) { + i.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t2, this.zipPlatform = r2, this.encodeFileName = n2, this.streamFiles = e2, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; + } + I.inherits(s, i), s.prototype.push = function(e2) { + var t2 = e2.meta.percent || 0, r2 = this.entriesCount, n2 = this._sources.length; + this.accumulate ? this.contentBuffer.push(e2) : (this.bytesWritten += e2.data.length, i.prototype.push.call(this, { data: e2.data, meta: { currentFile: this.currentFile, percent: r2 ? (t2 + 100 * (r2 - n2 - 1)) / r2 : 100 } })); + }, s.prototype.openedSource = function(e2) { + this.currentSourceOffset = this.bytesWritten, this.currentFile = e2.file.name; + var t2 = this.streamFiles && !e2.file.dir; + if (t2) { + var r2 = n(e2, t2, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + this.push({ data: r2.fileRecord, meta: { percent: 0 } }); + } else + this.accumulate = true; + }, s.prototype.closedSource = function(e2) { + this.accumulate = false; + var t2 = this.streamFiles && !e2.file.dir, r2 = n(e2, t2, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + if (this.dirRecords.push(r2.dirRecord), t2) + this.push({ data: function(e3) { + return R.DATA_DESCRIPTOR + A(e3.crc32, 4) + A(e3.compressedSize, 4) + A(e3.uncompressedSize, 4); + }(e2), meta: { percent: 100 } }); + else + for (this.push({ data: r2.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) + this.push(this.contentBuffer.shift()); + this.currentFile = null; + }, s.prototype.flush = function() { + for (var e2 = this.bytesWritten, t2 = 0; t2 < this.dirRecords.length; t2++) + this.push({ data: this.dirRecords[t2], meta: { percent: 100 } }); + var r2 = this.bytesWritten - e2, n2 = function(e3, t3, r3, n3, i2) { + var s2 = I.transformTo("string", i2(n3)); + return R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A(e3, 2) + A(e3, 2) + A(t3, 4) + A(r3, 4) + A(s2.length, 2) + s2; + }(this.dirRecords.length, r2, e2, this.zipComment, this.encodeFileName); + this.push({ data: n2, meta: { percent: 100 } }); + }, s.prototype.prepareNextSource = function() { + this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); + }, s.prototype.registerPrevious = function(e2) { + this._sources.push(e2); + var t2 = this; + return e2.on("data", function(e3) { + t2.processChunk(e3); + }), e2.on("end", function() { + t2.closedSource(t2.previous.streamInfo), t2._sources.length ? t2.prepareNextSource() : t2.end(); + }), e2.on("error", function(e3) { + t2.error(e3); + }), this; + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true)); + }, s.prototype.error = function(e2) { + var t2 = this._sources; + if (!i.prototype.error.call(this, e2)) + return false; + for (var r2 = 0; r2 < t2.length; r2++) + try { + t2[r2].error(e2); + } catch (e3) { + } + return true; + }, s.prototype.lock = function() { + i.prototype.lock.call(this); + for (var e2 = this._sources, t2 = 0; t2 < e2.length; t2++) + e2[t2].lock(); + }, t.exports = s; + }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e, t, r) { + "use strict"; + var u = e("../compressions"), n = e("./ZipFileWorker"); + r.generateWorker = function(e2, a, t2) { + var o = new n(a.streamFiles, t2, a.platform, a.encodeFileName), h = 0; + try { + e2.forEach(function(e3, t3) { + h++; + var r2 = function(e4, t4) { + var r3 = e4 || t4, n3 = u[r3]; + if (!n3) + throw new Error(r3 + " is not a valid compression method !"); + return n3; + }(t3.options.compression, a.compression), n2 = t3.options.compressionOptions || a.compressionOptions || {}, i = t3.dir, s = t3.date; + t3._compressWorker(r2, n2).withStreamInfo("file", { name: e3, dir: i, date: s, comment: t3.comment || "", unixPermissions: t3.unixPermissions, dosPermissions: t3.dosPermissions }).pipe(o); + }), o.entriesCount = h; + } catch (e3) { + o.error(e3); + } + return o; + }; + }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e, t, r) { + "use strict"; + function n() { + if (!(this instanceof n)) + return new n(); + if (arguments.length) + throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); + this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { + var e2 = new n(); + for (var t2 in this) + "function" != typeof this[t2] && (e2[t2] = this[t2]); + return e2; + }; + } + (n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.10.1", n.loadAsync = function(e2, t2) { + return new n().loadAsync(e2, t2); + }, n.external = e("./external"), t.exports = n; + }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e, t, r) { + "use strict"; + var u = e("./utils"), i = e("./external"), n = e("./utf8"), s = e("./zipEntries"), a = e("./stream/Crc32Probe"), l = e("./nodejsUtils"); + function f(n2) { + return new i.Promise(function(e2, t2) { + var r2 = n2.decompressed.getContentWorker().pipe(new a()); + r2.on("error", function(e3) { + t2(e3); + }).on("end", function() { + r2.streamInfo.crc32 !== n2.decompressed.crc32 ? t2(new Error("Corrupted zip : CRC32 mismatch")) : e2(); + }).resume(); + }); + } + t.exports = function(e2, o) { + var h = this; + return o = u.extend(o || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n.utf8decode }), l.isNode && l.isStream(e2) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u.prepareContent("the loaded zip file", e2, true, o.optimizedBinaryString, o.base64).then(function(e3) { + var t2 = new s(o); + return t2.load(e3), t2; + }).then(function(e3) { + var t2 = [i.Promise.resolve(e3)], r2 = e3.files; + if (o.checkCRC32) + for (var n2 = 0; n2 < r2.length; n2++) + t2.push(f(r2[n2])); + return i.Promise.all(t2); + }).then(function(e3) { + for (var t2 = e3.shift(), r2 = t2.files, n2 = 0; n2 < r2.length; n2++) { + var i2 = r2[n2], s2 = i2.fileNameStr, a2 = u.resolve(i2.fileNameStr); + h.file(a2, i2.decompressed, { binary: true, optimizedBinaryString: true, date: i2.date, dir: i2.dir, comment: i2.fileCommentStr.length ? i2.fileCommentStr : null, unixPermissions: i2.unixPermissions, dosPermissions: i2.dosPermissions, createFolders: o.createFolders }), i2.dir || (h.file(a2).unsafeOriginalName = s2); + } + return t2.zipComment.length && (h.comment = t2.zipComment), h; + }); + }; + }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("../stream/GenericWorker"); + function s(e2, t2) { + i.call(this, "Nodejs stream input adapter for " + e2), this._upstreamEnded = false, this._bindStream(t2); + } + n.inherits(s, i), s.prototype._bindStream = function(e2) { + var t2 = this; + (this._stream = e2).pause(), e2.on("data", function(e3) { + t2.push({ data: e3, meta: { percent: 0 } }); + }).on("error", function(e3) { + t2.isPaused ? this.generatedError = e3 : t2.error(e3); + }).on("end", function() { + t2.isPaused ? t2._upstreamEnded = true : t2.end(); + }); + }, s.prototype.pause = function() { + return !!i.prototype.pause.call(this) && (this._stream.pause(), true); + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); + }, t.exports = s; + }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e, t, r) { + "use strict"; + var i = e("readable-stream").Readable; + function n(e2, t2, r2) { + i.call(this, t2), this._helper = e2; + var n2 = this; + e2.on("data", function(e3, t3) { + n2.push(e3) || n2._helper.pause(), r2 && r2(t3); + }).on("error", function(e3) { + n2.emit("error", e3); + }).on("end", function() { + n2.push(null); + }); + } + e("../utils").inherits(n, i), n.prototype._read = function() { + this._helper.resume(); + }, t.exports = n; + }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e, t, r) { + "use strict"; + t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e2, t2) { + if (Buffer.from && Buffer.from !== Uint8Array.from) + return Buffer.from(e2, t2); + if ("number" == typeof e2) + throw new Error('The "data" argument must not be a number'); + return new Buffer(e2, t2); + }, allocBuffer: function(e2) { + if (Buffer.alloc) + return Buffer.alloc(e2); + var t2 = new Buffer(e2); + return t2.fill(0), t2; + }, isBuffer: function(e2) { + return Buffer.isBuffer(e2); + }, isStream: function(e2) { + return e2 && "function" == typeof e2.on && "function" == typeof e2.pause && "function" == typeof e2.resume; + } }; + }, {}], 15: [function(e, t, r) { + "use strict"; + function s(e2, t2, r2) { + var n2, i2 = u.getTypeOf(t2), s2 = u.extend(r2 || {}, f); + s2.date = s2.date || /* @__PURE__ */ new Date(), null !== s2.compression && (s2.compression = s2.compression.toUpperCase()), "string" == typeof s2.unixPermissions && (s2.unixPermissions = parseInt(s2.unixPermissions, 8)), s2.unixPermissions && 16384 & s2.unixPermissions && (s2.dir = true), s2.dosPermissions && 16 & s2.dosPermissions && (s2.dir = true), s2.dir && (e2 = g(e2)), s2.createFolders && (n2 = _(e2)) && b.call(this, n2, true); + var a2 = "string" === i2 && false === s2.binary && false === s2.base64; + r2 && void 0 !== r2.binary || (s2.binary = !a2), (t2 instanceof c && 0 === t2.uncompressedSize || s2.dir || !t2 || 0 === t2.length) && (s2.base64 = false, s2.binary = true, t2 = "", s2.compression = "STORE", i2 = "string"); + var o2 = null; + o2 = t2 instanceof c || t2 instanceof l ? t2 : p.isNode && p.isStream(t2) ? new m(e2, t2) : u.prepareContent(e2, t2, s2.binary, s2.optimizedBinaryString, s2.base64); + var h2 = new d(e2, o2, s2); + this.files[e2] = h2; + } + var i = e("./utf8"), u = e("./utils"), l = e("./stream/GenericWorker"), a = e("./stream/StreamHelper"), f = e("./defaults"), c = e("./compressedObject"), d = e("./zipObject"), o = e("./generate"), p = e("./nodejsUtils"), m = e("./nodejs/NodejsStreamInputAdapter"), _ = function(e2) { + "/" === e2.slice(-1) && (e2 = e2.substring(0, e2.length - 1)); + var t2 = e2.lastIndexOf("/"); + return 0 < t2 ? e2.substring(0, t2) : ""; + }, g = function(e2) { + return "/" !== e2.slice(-1) && (e2 += "/"), e2; + }, b = function(e2, t2) { + return t2 = void 0 !== t2 ? t2 : f.createFolders, e2 = g(e2), this.files[e2] || s.call(this, e2, null, { dir: true, createFolders: t2 }), this.files[e2]; + }; + function h(e2) { + return "[object RegExp]" === Object.prototype.toString.call(e2); + } + var n = { load: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, forEach: function(e2) { + var t2, r2, n2; + for (t2 in this.files) + n2 = this.files[t2], (r2 = t2.slice(this.root.length, t2.length)) && t2.slice(0, this.root.length) === this.root && e2(r2, n2); + }, filter: function(r2) { + var n2 = []; + return this.forEach(function(e2, t2) { + r2(e2, t2) && n2.push(t2); + }), n2; + }, file: function(e2, t2, r2) { + if (1 !== arguments.length) + return e2 = this.root + e2, s.call(this, e2, t2, r2), this; + if (h(e2)) { + var n2 = e2; + return this.filter(function(e3, t3) { + return !t3.dir && n2.test(e3); + }); + } + var i2 = this.files[this.root + e2]; + return i2 && !i2.dir ? i2 : null; + }, folder: function(r2) { + if (!r2) + return this; + if (h(r2)) + return this.filter(function(e3, t3) { + return t3.dir && r2.test(e3); + }); + var e2 = this.root + r2, t2 = b.call(this, e2), n2 = this.clone(); + return n2.root = t2.name, n2; + }, remove: function(r2) { + r2 = this.root + r2; + var e2 = this.files[r2]; + if (e2 || ("/" !== r2.slice(-1) && (r2 += "/"), e2 = this.files[r2]), e2 && !e2.dir) + delete this.files[r2]; + else + for (var t2 = this.filter(function(e3, t3) { + return t3.name.slice(0, r2.length) === r2; + }), n2 = 0; n2 < t2.length; n2++) + delete this.files[t2[n2].name]; + return this; + }, generate: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, generateInternalStream: function(e2) { + var t2, r2 = {}; + try { + if ((r2 = u.extend(e2 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r2.type.toLowerCase(), r2.compression = r2.compression.toUpperCase(), "binarystring" === r2.type && (r2.type = "string"), !r2.type) + throw new Error("No output type specified."); + u.checkSupport(r2.type), "darwin" !== r2.platform && "freebsd" !== r2.platform && "linux" !== r2.platform && "sunos" !== r2.platform || (r2.platform = "UNIX"), "win32" === r2.platform && (r2.platform = "DOS"); + var n2 = r2.comment || this.comment || ""; + t2 = o.generateWorker(this, r2, n2); + } catch (e3) { + (t2 = new l("error")).error(e3); + } + return new a(t2, r2.type || "string", r2.mimeType); + }, generateAsync: function(e2, t2) { + return this.generateInternalStream(e2).accumulate(t2); + }, generateNodeStream: function(e2, t2) { + return (e2 = e2 || {}).type || (e2.type = "nodebuffer"), this.generateInternalStream(e2).toNodejsStream(t2); + } }; + t.exports = n; + }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e, t, r) { + "use strict"; + t.exports = e("stream"); + }, { stream: void 0 }], 17: [function(e, t, r) { + "use strict"; + var n = e("./DataReader"); + function i(e2) { + n.call(this, e2); + for (var t2 = 0; t2 < this.data.length; t2++) + e2[t2] = 255 & e2[t2]; + } + e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { + return this.data[this.zero + e2]; + }, i.prototype.lastIndexOfSignature = function(e2) { + for (var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.length - 4; 0 <= s; --s) + if (this.data[s] === t2 && this.data[s + 1] === r2 && this.data[s + 2] === n2 && this.data[s + 3] === i2) + return s - this.zero; + return -1; + }, i.prototype.readAndCheckSignature = function(e2) { + var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.readData(4); + return t2 === s[0] && r2 === s[1] && n2 === s[2] && i2 === s[3]; + }, i.prototype.readData = function(e2) { + if (this.checkOffset(e2), 0 === e2) + return []; + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e, t, r) { + "use strict"; + var n = e("../utils"); + function i(e2) { + this.data = e2, this.length = e2.length, this.index = 0, this.zero = 0; + } + i.prototype = { checkOffset: function(e2) { + this.checkIndex(this.index + e2); + }, checkIndex: function(e2) { + if (this.length < this.zero + e2 || e2 < 0) + throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e2 + "). Corrupted zip ?"); + }, setIndex: function(e2) { + this.checkIndex(e2), this.index = e2; + }, skip: function(e2) { + this.setIndex(this.index + e2); + }, byteAt: function() { + }, readInt: function(e2) { + var t2, r2 = 0; + for (this.checkOffset(e2), t2 = this.index + e2 - 1; t2 >= this.index; t2--) + r2 = (r2 << 8) + this.byteAt(t2); + return this.index += e2, r2; + }, readString: function(e2) { + return n.transformTo("string", this.readData(e2)); + }, readData: function() { + }, lastIndexOfSignature: function() { + }, readAndCheckSignature: function() { + }, readDate: function() { + var e2 = this.readInt(4); + return new Date(Date.UTC(1980 + (e2 >> 25 & 127), (e2 >> 21 & 15) - 1, e2 >> 16 & 31, e2 >> 11 & 31, e2 >> 5 & 63, (31 & e2) << 1)); + } }, t.exports = i; + }, { "../utils": 32 }], 19: [function(e, t, r) { + "use strict"; + var n = e("./Uint8ArrayReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.readData = function(e2) { + this.checkOffset(e2); + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e, t, r) { + "use strict"; + var n = e("./DataReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { + return this.data.charCodeAt(this.zero + e2); + }, i.prototype.lastIndexOfSignature = function(e2) { + return this.data.lastIndexOf(e2) - this.zero; + }, i.prototype.readAndCheckSignature = function(e2) { + return e2 === this.readData(4); + }, i.prototype.readData = function(e2) { + this.checkOffset(e2); + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e, t, r) { + "use strict"; + var n = e("./ArrayReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.readData = function(e2) { + if (this.checkOffset(e2), 0 === e2) + return new Uint8Array(0); + var t2 = this.data.subarray(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("../support"), s = e("./ArrayReader"), a = e("./StringReader"), o = e("./NodeBufferReader"), h = e("./Uint8ArrayReader"); + t.exports = function(e2) { + var t2 = n.getTypeOf(e2); + return n.checkSupport(t2), "string" !== t2 || i.uint8array ? "nodebuffer" === t2 ? new o(e2) : i.uint8array ? new h(n.transformTo("uint8array", e2)) : new s(n.transformTo("array", e2)) : new a(e2); + }; + }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e, t, r) { + "use strict"; + r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\x07\b"; + }, {}], 24: [function(e, t, r) { + "use strict"; + var n = e("./GenericWorker"), i = e("../utils"); + function s(e2) { + n.call(this, "ConvertWorker to " + e2), this.destType = e2; + } + i.inherits(s, n), s.prototype.processChunk = function(e2) { + this.push({ data: i.transformTo(this.destType, e2.data), meta: e2.meta }); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e, t, r) { + "use strict"; + var n = e("./GenericWorker"), i = e("../crc32"); + function s() { + n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); + } + e("../utils").inherits(s, n), s.prototype.processChunk = function(e2) { + this.streamInfo.crc32 = i(e2.data, this.streamInfo.crc32 || 0), this.push(e2); + }, t.exports = s; + }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("./GenericWorker"); + function s(e2) { + i.call(this, "DataLengthProbe for " + e2), this.propName = e2, this.withStreamInfo(e2, 0); + } + n.inherits(s, i), s.prototype.processChunk = function(e2) { + if (e2) { + var t2 = this.streamInfo[this.propName] || 0; + this.streamInfo[this.propName] = t2 + e2.data.length; + } + i.prototype.processChunk.call(this, e2); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("./GenericWorker"); + function s(e2) { + i.call(this, "DataWorker"); + var t2 = this; + this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e2.then(function(e3) { + t2.dataIsReady = true, t2.data = e3, t2.max = e3 && e3.length || 0, t2.type = n.getTypeOf(e3), t2.isPaused || t2._tickAndRepeat(); + }, function(e3) { + t2.error(e3); + }); + } + n.inherits(s, i), s.prototype.cleanUp = function() { + i.prototype.cleanUp.call(this), this.data = null; + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n.delay(this._tickAndRepeat, [], this)), true); + }, s.prototype._tickAndRepeat = function() { + this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); + }, s.prototype._tick = function() { + if (this.isPaused || this.isFinished) + return false; + var e2 = null, t2 = Math.min(this.max, this.index + 16384); + if (this.index >= this.max) + return this.end(); + switch (this.type) { + case "string": + e2 = this.data.substring(this.index, t2); + break; + case "uint8array": + e2 = this.data.subarray(this.index, t2); + break; + case "array": + case "nodebuffer": + e2 = this.data.slice(this.index, t2); + } + return this.index = t2, this.push({ data: e2, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e, t, r) { + "use strict"; + function n(e2) { + this.name = e2 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; + } + n.prototype = { push: function(e2) { + this.emit("data", e2); + }, end: function() { + if (this.isFinished) + return false; + this.flush(); + try { + this.emit("end"), this.cleanUp(), this.isFinished = true; + } catch (e2) { + this.emit("error", e2); + } + return true; + }, error: function(e2) { + return !this.isFinished && (this.isPaused ? this.generatedError = e2 : (this.isFinished = true, this.emit("error", e2), this.previous && this.previous.error(e2), this.cleanUp()), true); + }, on: function(e2, t2) { + return this._listeners[e2].push(t2), this; + }, cleanUp: function() { + this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; + }, emit: function(e2, t2) { + if (this._listeners[e2]) + for (var r2 = 0; r2 < this._listeners[e2].length; r2++) + this._listeners[e2][r2].call(this, t2); + }, pipe: function(e2) { + return e2.registerPrevious(this); + }, registerPrevious: function(e2) { + if (this.isLocked) + throw new Error("The stream '" + this + "' has already been used."); + this.streamInfo = e2.streamInfo, this.mergeStreamInfo(), this.previous = e2; + var t2 = this; + return e2.on("data", function(e3) { + t2.processChunk(e3); + }), e2.on("end", function() { + t2.end(); + }), e2.on("error", function(e3) { + t2.error(e3); + }), this; + }, pause: function() { + return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); + }, resume: function() { + if (!this.isPaused || this.isFinished) + return false; + var e2 = this.isPaused = false; + return this.generatedError && (this.error(this.generatedError), e2 = true), this.previous && this.previous.resume(), !e2; + }, flush: function() { + }, processChunk: function(e2) { + this.push(e2); + }, withStreamInfo: function(e2, t2) { + return this.extraStreamInfo[e2] = t2, this.mergeStreamInfo(), this; + }, mergeStreamInfo: function() { + for (var e2 in this.extraStreamInfo) + Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e2) && (this.streamInfo[e2] = this.extraStreamInfo[e2]); + }, lock: function() { + if (this.isLocked) + throw new Error("The stream '" + this + "' has already been used."); + this.isLocked = true, this.previous && this.previous.lock(); + }, toString: function() { + var e2 = "Worker " + this.name; + return this.previous ? this.previous + " -> " + e2 : e2; + } }, t.exports = n; + }, {}], 29: [function(e, t, r) { + "use strict"; + var h = e("../utils"), i = e("./ConvertWorker"), s = e("./GenericWorker"), u = e("../base64"), n = e("../support"), a = e("../external"), o = null; + if (n.nodestream) + try { + o = e("../nodejs/NodejsStreamOutputAdapter"); + } catch (e2) { + } + function l(e2, o2) { + return new a.Promise(function(t2, r2) { + var n2 = [], i2 = e2._internalType, s2 = e2._outputType, a2 = e2._mimeType; + e2.on("data", function(e3, t3) { + n2.push(e3), o2 && o2(t3); + }).on("error", function(e3) { + n2 = [], r2(e3); + }).on("end", function() { + try { + var e3 = function(e4, t3, r3) { + switch (e4) { + case "blob": + return h.newBlob(h.transformTo("arraybuffer", t3), r3); + case "base64": + return u.encode(t3); + default: + return h.transformTo(e4, t3); + } + }(s2, function(e4, t3) { + var r3, n3 = 0, i3 = null, s3 = 0; + for (r3 = 0; r3 < t3.length; r3++) + s3 += t3[r3].length; + switch (e4) { + case "string": + return t3.join(""); + case "array": + return Array.prototype.concat.apply([], t3); + case "uint8array": + for (i3 = new Uint8Array(s3), r3 = 0; r3 < t3.length; r3++) + i3.set(t3[r3], n3), n3 += t3[r3].length; + return i3; + case "nodebuffer": + return Buffer.concat(t3); + default: + throw new Error("concat : unsupported type '" + e4 + "'"); + } + }(i2, n2), a2); + t2(e3); + } catch (e4) { + r2(e4); + } + n2 = []; + }).resume(); + }); + } + function f(e2, t2, r2) { + var n2 = t2; + switch (t2) { + case "blob": + case "arraybuffer": + n2 = "uint8array"; + break; + case "base64": + n2 = "string"; + } + try { + this._internalType = n2, this._outputType = t2, this._mimeType = r2, h.checkSupport(n2), this._worker = e2.pipe(new i(n2)), e2.lock(); + } catch (e3) { + this._worker = new s("error"), this._worker.error(e3); + } + } + f.prototype = { accumulate: function(e2) { + return l(this, e2); + }, on: function(e2, t2) { + var r2 = this; + return "data" === e2 ? this._worker.on(e2, function(e3) { + t2.call(r2, e3.data, e3.meta); + }) : this._worker.on(e2, function() { + h.delay(t2, arguments, r2); + }), this; + }, resume: function() { + return h.delay(this._worker.resume, [], this._worker), this; + }, pause: function() { + return this._worker.pause(), this; + }, toNodejsStream: function(e2) { + if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) + throw new Error(this._outputType + " is not supported by this method"); + return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e2); + } }, t.exports = f; + }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e, t, r) { + "use strict"; + if (r.base64 = true, r.array = true, r.string = true, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) + r.blob = false; + else { + var n = new ArrayBuffer(0); + try { + r.blob = 0 === new Blob([n], { type: "application/zip" }).size; + } catch (e2) { + try { + var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); + i.append(n), r.blob = 0 === i.getBlob("application/zip").size; + } catch (e3) { + r.blob = false; + } + } + } + try { + r.nodestream = !!e("readable-stream").Readable; + } catch (e2) { + r.nodestream = false; + } + }, { "readable-stream": 16 }], 31: [function(e, t, s) { + "use strict"; + for (var o = e("./utils"), h = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), u = new Array(256), i = 0; i < 256; i++) + u[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1; + u[254] = u[254] = 1; + function a() { + n.call(this, "utf-8 decode"), this.leftOver = null; + } + function l() { + n.call(this, "utf-8 encode"); + } + s.utf8encode = function(e2) { + return h.nodebuffer ? r.newBufferFrom(e2, "utf-8") : function(e3) { + var t2, r2, n2, i2, s2, a2 = e3.length, o2 = 0; + for (i2 = 0; i2 < a2; i2++) + 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o2 += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; + for (t2 = h.uint8array ? new Uint8Array(o2) : new Array(o2), i2 = s2 = 0; s2 < o2; i2++) + 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); + return t2; + }(e2); + }, s.utf8decode = function(e2) { + return h.nodebuffer ? o.transformTo("nodebuffer", e2).toString("utf-8") : function(e3) { + var t2, r2, n2, i2, s2 = e3.length, a2 = new Array(2 * s2); + for (t2 = r2 = 0; t2 < s2; ) + if ((n2 = e3[t2++]) < 128) + a2[r2++] = n2; + else if (4 < (i2 = u[n2])) + a2[r2++] = 65533, t2 += i2 - 1; + else { + for (n2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && t2 < s2; ) + n2 = n2 << 6 | 63 & e3[t2++], i2--; + 1 < i2 ? a2[r2++] = 65533 : n2 < 65536 ? a2[r2++] = n2 : (n2 -= 65536, a2[r2++] = 55296 | n2 >> 10 & 1023, a2[r2++] = 56320 | 1023 & n2); + } + return a2.length !== r2 && (a2.subarray ? a2 = a2.subarray(0, r2) : a2.length = r2), o.applyFromCharCode(a2); + }(e2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2)); + }, o.inherits(a, n), a.prototype.processChunk = function(e2) { + var t2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2.data); + if (this.leftOver && this.leftOver.length) { + if (h.uint8array) { + var r2 = t2; + (t2 = new Uint8Array(r2.length + this.leftOver.length)).set(this.leftOver, 0), t2.set(r2, this.leftOver.length); + } else + t2 = this.leftOver.concat(t2); + this.leftOver = null; + } + var n2 = function(e3, t3) { + var r3; + for ((t3 = t3 || e3.length) > e3.length && (t3 = e3.length), r3 = t3 - 1; 0 <= r3 && 128 == (192 & e3[r3]); ) + r3--; + return r3 < 0 ? t3 : 0 === r3 ? t3 : r3 + u[e3[r3]] > t3 ? r3 : t3; + }(t2), i2 = t2; + n2 !== t2.length && (h.uint8array ? (i2 = t2.subarray(0, n2), this.leftOver = t2.subarray(n2, t2.length)) : (i2 = t2.slice(0, n2), this.leftOver = t2.slice(n2, t2.length))), this.push({ data: s.utf8decode(i2), meta: e2.meta }); + }, a.prototype.flush = function() { + this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); + }, s.Utf8DecodeWorker = a, o.inherits(l, n), l.prototype.processChunk = function(e2) { + this.push({ data: s.utf8encode(e2.data), meta: e2.meta }); + }, s.Utf8EncodeWorker = l; + }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e, t, a) { + "use strict"; + var o = e("./support"), h = e("./base64"), r = e("./nodejsUtils"), u = e("./external"); + function n(e2) { + return e2; + } + function l(e2, t2) { + for (var r2 = 0; r2 < e2.length; ++r2) + t2[r2] = 255 & e2.charCodeAt(r2); + return t2; + } + e("setimmediate"), a.newBlob = function(t2, r2) { + a.checkSupport("blob"); + try { + return new Blob([t2], { type: r2 }); + } catch (e2) { + try { + var n2 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); + return n2.append(t2), n2.getBlob(r2); + } catch (e3) { + throw new Error("Bug : can't construct the Blob."); + } + } + }; + var i = { stringifyByChunk: function(e2, t2, r2) { + var n2 = [], i2 = 0, s2 = e2.length; + if (s2 <= r2) + return String.fromCharCode.apply(null, e2); + for (; i2 < s2; ) + "array" === t2 || "nodebuffer" === t2 ? n2.push(String.fromCharCode.apply(null, e2.slice(i2, Math.min(i2 + r2, s2)))) : n2.push(String.fromCharCode.apply(null, e2.subarray(i2, Math.min(i2 + r2, s2)))), i2 += r2; + return n2.join(""); + }, stringifyByChar: function(e2) { + for (var t2 = "", r2 = 0; r2 < e2.length; r2++) + t2 += String.fromCharCode(e2[r2]); + return t2; + }, applyCanBeUsed: { uint8array: function() { + try { + return o.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; + } catch (e2) { + return false; + } + }(), nodebuffer: function() { + try { + return o.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length; + } catch (e2) { + return false; + } + }() } }; + function s(e2) { + var t2 = 65536, r2 = a.getTypeOf(e2), n2 = true; + if ("uint8array" === r2 ? n2 = i.applyCanBeUsed.uint8array : "nodebuffer" === r2 && (n2 = i.applyCanBeUsed.nodebuffer), n2) + for (; 1 < t2; ) + try { + return i.stringifyByChunk(e2, r2, t2); + } catch (e3) { + t2 = Math.floor(t2 / 2); + } + return i.stringifyByChar(e2); + } + function f(e2, t2) { + for (var r2 = 0; r2 < e2.length; r2++) + t2[r2] = e2[r2]; + return t2; + } + a.applyFromCharCode = s; + var c = {}; + c.string = { string: n, array: function(e2) { + return l(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return c.string.uint8array(e2).buffer; + }, uint8array: function(e2) { + return l(e2, new Uint8Array(e2.length)); + }, nodebuffer: function(e2) { + return l(e2, r.allocBuffer(e2.length)); + } }, c.array = { string: s, array: n, arraybuffer: function(e2) { + return new Uint8Array(e2).buffer; + }, uint8array: function(e2) { + return new Uint8Array(e2); + }, nodebuffer: function(e2) { + return r.newBufferFrom(e2); + } }, c.arraybuffer = { string: function(e2) { + return s(new Uint8Array(e2)); + }, array: function(e2) { + return f(new Uint8Array(e2), new Array(e2.byteLength)); + }, arraybuffer: n, uint8array: function(e2) { + return new Uint8Array(e2); + }, nodebuffer: function(e2) { + return r.newBufferFrom(new Uint8Array(e2)); + } }, c.uint8array = { string: s, array: function(e2) { + return f(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return e2.buffer; + }, uint8array: n, nodebuffer: function(e2) { + return r.newBufferFrom(e2); + } }, c.nodebuffer = { string: s, array: function(e2) { + return f(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return c.nodebuffer.uint8array(e2).buffer; + }, uint8array: function(e2) { + return f(e2, new Uint8Array(e2.length)); + }, nodebuffer: n }, a.transformTo = function(e2, t2) { + if (t2 = t2 || "", !e2) + return t2; + a.checkSupport(e2); + var r2 = a.getTypeOf(t2); + return c[r2][e2](t2); + }, a.resolve = function(e2) { + for (var t2 = e2.split("/"), r2 = [], n2 = 0; n2 < t2.length; n2++) { + var i2 = t2[n2]; + "." === i2 || "" === i2 && 0 !== n2 && n2 !== t2.length - 1 || (".." === i2 ? r2.pop() : r2.push(i2)); + } + return r2.join("/"); + }, a.getTypeOf = function(e2) { + return "string" == typeof e2 ? "string" : "[object Array]" === Object.prototype.toString.call(e2) ? "array" : o.nodebuffer && r.isBuffer(e2) ? "nodebuffer" : o.uint8array && e2 instanceof Uint8Array ? "uint8array" : o.arraybuffer && e2 instanceof ArrayBuffer ? "arraybuffer" : void 0; + }, a.checkSupport = function(e2) { + if (!o[e2.toLowerCase()]) + throw new Error(e2 + " is not supported by this platform"); + }, a.MAX_VALUE_16BITS = 65535, a.MAX_VALUE_32BITS = -1, a.pretty = function(e2) { + var t2, r2, n2 = ""; + for (r2 = 0; r2 < (e2 || "").length; r2++) + n2 += "\\x" + ((t2 = e2.charCodeAt(r2)) < 16 ? "0" : "") + t2.toString(16).toUpperCase(); + return n2; + }, a.delay = function(e2, t2, r2) { + setImmediate(function() { + e2.apply(r2 || null, t2 || []); + }); + }, a.inherits = function(e2, t2) { + function r2() { + } + r2.prototype = t2.prototype, e2.prototype = new r2(); + }, a.extend = function() { + var e2, t2, r2 = {}; + for (e2 = 0; e2 < arguments.length; e2++) + for (t2 in arguments[e2]) + Object.prototype.hasOwnProperty.call(arguments[e2], t2) && void 0 === r2[t2] && (r2[t2] = arguments[e2][t2]); + return r2; + }, a.prepareContent = function(r2, e2, n2, i2, s2) { + return u.Promise.resolve(e2).then(function(n3) { + return o.blob && (n3 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n3))) && "undefined" != typeof FileReader ? new u.Promise(function(t2, r3) { + var e3 = new FileReader(); + e3.onload = function(e4) { + t2(e4.target.result); + }, e3.onerror = function(e4) { + r3(e4.target.error); + }, e3.readAsArrayBuffer(n3); + }) : n3; + }).then(function(e3) { + var t2 = a.getTypeOf(e3); + return t2 ? ("arraybuffer" === t2 ? e3 = a.transformTo("uint8array", e3) : "string" === t2 && (s2 ? e3 = h.decode(e3) : n2 && true !== i2 && (e3 = function(e4) { + return l(e4, o.uint8array ? new Uint8Array(e4.length) : new Array(e4.length)); + }(e3))), e3) : u.Promise.reject(new Error("Can't read the data of '" + r2 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); + }); + }; + }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e, t, r) { + "use strict"; + var n = e("./reader/readerFor"), i = e("./utils"), s = e("./signature"), a = e("./zipEntry"), o = e("./support"); + function h(e2) { + this.files = [], this.loadOptions = e2; + } + h.prototype = { checkSignature: function(e2) { + if (!this.reader.readAndCheckSignature(e2)) { + this.reader.index -= 4; + var t2 = this.reader.readString(4); + throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t2) + ", expected " + i.pretty(e2) + ")"); + } + }, isSignature: function(e2, t2) { + var r2 = this.reader.index; + this.reader.setIndex(e2); + var n2 = this.reader.readString(4) === t2; + return this.reader.setIndex(r2), n2; + }, readBlockEndOfCentral: function() { + this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); + var e2 = this.reader.readData(this.zipCommentLength), t2 = o.uint8array ? "uint8array" : "array", r2 = i.transformTo(t2, e2); + this.zipComment = this.loadOptions.decodeFileName(r2); + }, readBlockZip64EndOfCentral: function() { + this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; + for (var e2, t2, r2, n2 = this.zip64EndOfCentralSize - 44; 0 < n2; ) + e2 = this.reader.readInt(2), t2 = this.reader.readInt(4), r2 = this.reader.readData(t2), this.zip64ExtensibleData[e2] = { id: e2, length: t2, value: r2 }; + }, readBlockZip64EndOfCentralLocator: function() { + if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) + throw new Error("Multi-volumes zip are not supported"); + }, readLocalFiles: function() { + var e2, t2; + for (e2 = 0; e2 < this.files.length; e2++) + t2 = this.files[e2], this.reader.setIndex(t2.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t2.readLocalPart(this.reader), t2.handleUTF8(), t2.processAttributes(); + }, readCentralDir: function() { + var e2; + for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER); ) + (e2 = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e2); + if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) + throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); + }, readEndOfCentral: function() { + var e2 = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END); + if (e2 < 0) + throw !this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); + this.reader.setIndex(e2); + var t2 = e2; + if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) { + if (this.zip64 = true, (e2 = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); + if (this.reader.setIndex(e2), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); + this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); + } + var r2 = this.centralDirOffset + this.centralDirSize; + this.zip64 && (r2 += 20, r2 += 12 + this.zip64EndOfCentralSize); + var n2 = t2 - r2; + if (0 < n2) + this.isSignature(t2, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n2); + else if (n2 < 0) + throw new Error("Corrupted zip: missing " + Math.abs(n2) + " bytes."); + }, prepareReader: function(e2) { + this.reader = n(e2); + }, load: function(e2) { + this.prepareReader(e2), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); + } }, t.exports = h; + }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e, t, r) { + "use strict"; + var n = e("./reader/readerFor"), s = e("./utils"), i = e("./compressedObject"), a = e("./crc32"), o = e("./utf8"), h = e("./compressions"), u = e("./support"); + function l(e2, t2) { + this.options = e2, this.loadOptions = t2; + } + l.prototype = { isEncrypted: function() { + return 1 == (1 & this.bitFlag); + }, useUTF8: function() { + return 2048 == (2048 & this.bitFlag); + }, readLocalPart: function(e2) { + var t2, r2; + if (e2.skip(22), this.fileNameLength = e2.readInt(2), r2 = e2.readInt(2), this.fileName = e2.readData(this.fileNameLength), e2.skip(r2), -1 === this.compressedSize || -1 === this.uncompressedSize) + throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); + if (null === (t2 = function(e3) { + for (var t3 in h) + if (Object.prototype.hasOwnProperty.call(h, t3) && h[t3].magic === e3) + return h[t3]; + return null; + }(this.compressionMethod))) + throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")"); + this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t2, e2.readData(this.compressedSize)); + }, readCentralPart: function(e2) { + this.versionMadeBy = e2.readInt(2), e2.skip(2), this.bitFlag = e2.readInt(2), this.compressionMethod = e2.readString(2), this.date = e2.readDate(), this.crc32 = e2.readInt(4), this.compressedSize = e2.readInt(4), this.uncompressedSize = e2.readInt(4); + var t2 = e2.readInt(2); + if (this.extraFieldsLength = e2.readInt(2), this.fileCommentLength = e2.readInt(2), this.diskNumberStart = e2.readInt(2), this.internalFileAttributes = e2.readInt(2), this.externalFileAttributes = e2.readInt(4), this.localHeaderOffset = e2.readInt(4), this.isEncrypted()) + throw new Error("Encrypted zip are not supported"); + e2.skip(t2), this.readExtraFields(e2), this.parseZIP64ExtraField(e2), this.fileComment = e2.readData(this.fileCommentLength); + }, processAttributes: function() { + this.unixPermissions = null, this.dosPermissions = null; + var e2 = this.versionMadeBy >> 8; + this.dir = !!(16 & this.externalFileAttributes), 0 == e2 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e2 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); + }, parseZIP64ExtraField: function() { + if (this.extraFields[1]) { + var e2 = n(this.extraFields[1].value); + this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = e2.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = e2.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = e2.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = e2.readInt(4)); + } + }, readExtraFields: function(e2) { + var t2, r2, n2, i2 = e2.index + this.extraFieldsLength; + for (this.extraFields || (this.extraFields = {}); e2.index + 4 < i2; ) + t2 = e2.readInt(2), r2 = e2.readInt(2), n2 = e2.readData(r2), this.extraFields[t2] = { id: t2, length: r2, value: n2 }; + e2.setIndex(i2); + }, handleUTF8: function() { + var e2 = u.uint8array ? "uint8array" : "array"; + if (this.useUTF8()) + this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment); + else { + var t2 = this.findExtraFieldUnicodePath(); + if (null !== t2) + this.fileNameStr = t2; + else { + var r2 = s.transformTo(e2, this.fileName); + this.fileNameStr = this.loadOptions.decodeFileName(r2); + } + var n2 = this.findExtraFieldUnicodeComment(); + if (null !== n2) + this.fileCommentStr = n2; + else { + var i2 = s.transformTo(e2, this.fileComment); + this.fileCommentStr = this.loadOptions.decodeFileName(i2); + } + } + }, findExtraFieldUnicodePath: function() { + var e2 = this.extraFields[28789]; + if (e2) { + var t2 = n(e2.value); + return 1 !== t2.readInt(1) ? null : a(this.fileName) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); + } + return null; + }, findExtraFieldUnicodeComment: function() { + var e2 = this.extraFields[25461]; + if (e2) { + var t2 = n(e2.value); + return 1 !== t2.readInt(1) ? null : a(this.fileComment) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); + } + return null; + } }, t.exports = l; + }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e, t, r) { + "use strict"; + function n(e2, t2, r2) { + this.name = e2, this.dir = r2.dir, this.date = r2.date, this.comment = r2.comment, this.unixPermissions = r2.unixPermissions, this.dosPermissions = r2.dosPermissions, this._data = t2, this._dataBinary = r2.binary, this.options = { compression: r2.compression, compressionOptions: r2.compressionOptions }; + } + var s = e("./stream/StreamHelper"), i = e("./stream/DataWorker"), a = e("./utf8"), o = e("./compressedObject"), h = e("./stream/GenericWorker"); + n.prototype = { internalStream: function(e2) { + var t2 = null, r2 = "string"; + try { + if (!e2) + throw new Error("No output type specified."); + var n2 = "string" === (r2 = e2.toLowerCase()) || "text" === r2; + "binarystring" !== r2 && "text" !== r2 || (r2 = "string"), t2 = this._decompressWorker(); + var i2 = !this._dataBinary; + i2 && !n2 && (t2 = t2.pipe(new a.Utf8EncodeWorker())), !i2 && n2 && (t2 = t2.pipe(new a.Utf8DecodeWorker())); + } catch (e3) { + (t2 = new h("error")).error(e3); + } + return new s(t2, r2, ""); + }, async: function(e2, t2) { + return this.internalStream(e2).accumulate(t2); + }, nodeStream: function(e2, t2) { + return this.internalStream(e2 || "nodebuffer").toNodejsStream(t2); + }, _compressWorker: function(e2, t2) { + if (this._data instanceof o && this._data.compression.magic === e2.magic) + return this._data.getCompressedWorker(); + var r2 = this._decompressWorker(); + return this._dataBinary || (r2 = r2.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r2, e2, t2); + }, _decompressWorker: function() { + return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof h ? this._data : new i(this._data); + } }; + for (var u = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, f = 0; f < u.length; f++) + n.prototype[u[f]] = l; + t.exports = n; + }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e, l, t) { + (function(t2) { + "use strict"; + var r, n, e2 = t2.MutationObserver || t2.WebKitMutationObserver; + if (e2) { + var i = 0, s = new e2(u), a = t2.document.createTextNode(""); + s.observe(a, { characterData: true }), r = function() { + a.data = i = ++i % 2; + }; + } else if (t2.setImmediate || void 0 === t2.MessageChannel) + r = "document" in t2 && "onreadystatechange" in t2.document.createElement("script") ? function() { + var e3 = t2.document.createElement("script"); + e3.onreadystatechange = function() { + u(), e3.onreadystatechange = null, e3.parentNode.removeChild(e3), e3 = null; + }, t2.document.documentElement.appendChild(e3); + } : function() { + setTimeout(u, 0); + }; + else { + var o = new t2.MessageChannel(); + o.port1.onmessage = u, r = function() { + o.port2.postMessage(0); + }; + } + var h = []; + function u() { + var e3, t3; + n = true; + for (var r2 = h.length; r2; ) { + for (t3 = h, h = [], e3 = -1; ++e3 < r2; ) + t3[e3](); + r2 = h.length; + } + n = false; + } + l.exports = function(e3) { + 1 !== h.push(e3) || n || r(); + }; + }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); + }, {}], 37: [function(e, t, r) { + "use strict"; + var i = e("immediate"); + function u() { + } + var l = {}, s = ["REJECTED"], a = ["FULFILLED"], n = ["PENDING"]; + function o(e2) { + if ("function" != typeof e2) + throw new TypeError("resolver must be a function"); + this.state = n, this.queue = [], this.outcome = void 0, e2 !== u && d(this, e2); + } + function h(e2, t2, r2) { + this.promise = e2, "function" == typeof t2 && (this.onFulfilled = t2, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r2 && (this.onRejected = r2, this.callRejected = this.otherCallRejected); + } + function f(t2, r2, n2) { + i(function() { + var e2; + try { + e2 = r2(n2); + } catch (e3) { + return l.reject(t2, e3); + } + e2 === t2 ? l.reject(t2, new TypeError("Cannot resolve promise with itself")) : l.resolve(t2, e2); + }); + } + function c(e2) { + var t2 = e2 && e2.then; + if (e2 && ("object" == typeof e2 || "function" == typeof e2) && "function" == typeof t2) + return function() { + t2.apply(e2, arguments); + }; + } + function d(t2, e2) { + var r2 = false; + function n2(e3) { + r2 || (r2 = true, l.reject(t2, e3)); + } + function i2(e3) { + r2 || (r2 = true, l.resolve(t2, e3)); + } + var s2 = p(function() { + e2(i2, n2); + }); + "error" === s2.status && n2(s2.value); + } + function p(e2, t2) { + var r2 = {}; + try { + r2.value = e2(t2), r2.status = "success"; + } catch (e3) { + r2.status = "error", r2.value = e3; + } + return r2; + } + (t.exports = o).prototype.finally = function(t2) { + if ("function" != typeof t2) + return this; + var r2 = this.constructor; + return this.then(function(e2) { + return r2.resolve(t2()).then(function() { + return e2; + }); + }, function(e2) { + return r2.resolve(t2()).then(function() { + throw e2; + }); + }); + }, o.prototype.catch = function(e2) { + return this.then(null, e2); + }, o.prototype.then = function(e2, t2) { + if ("function" != typeof e2 && this.state === a || "function" != typeof t2 && this.state === s) + return this; + var r2 = new this.constructor(u); + this.state !== n ? f(r2, this.state === a ? e2 : t2, this.outcome) : this.queue.push(new h(r2, e2, t2)); + return r2; + }, h.prototype.callFulfilled = function(e2) { + l.resolve(this.promise, e2); + }, h.prototype.otherCallFulfilled = function(e2) { + f(this.promise, this.onFulfilled, e2); + }, h.prototype.callRejected = function(e2) { + l.reject(this.promise, e2); + }, h.prototype.otherCallRejected = function(e2) { + f(this.promise, this.onRejected, e2); + }, l.resolve = function(e2, t2) { + var r2 = p(c, t2); + if ("error" === r2.status) + return l.reject(e2, r2.value); + var n2 = r2.value; + if (n2) + d(e2, n2); + else { + e2.state = a, e2.outcome = t2; + for (var i2 = -1, s2 = e2.queue.length; ++i2 < s2; ) + e2.queue[i2].callFulfilled(t2); + } + return e2; + }, l.reject = function(e2, t2) { + e2.state = s, e2.outcome = t2; + for (var r2 = -1, n2 = e2.queue.length; ++r2 < n2; ) + e2.queue[r2].callRejected(t2); + return e2; + }, o.resolve = function(e2) { + if (e2 instanceof this) + return e2; + return l.resolve(new this(u), e2); + }, o.reject = function(e2) { + var t2 = new this(u); + return l.reject(t2, e2); + }, o.all = function(e2) { + var r2 = this; + if ("[object Array]" !== Object.prototype.toString.call(e2)) + return this.reject(new TypeError("must be an array")); + var n2 = e2.length, i2 = false; + if (!n2) + return this.resolve([]); + var s2 = new Array(n2), a2 = 0, t2 = -1, o2 = new this(u); + for (; ++t2 < n2; ) + h2(e2[t2], t2); + return o2; + function h2(e3, t3) { + r2.resolve(e3).then(function(e4) { + s2[t3] = e4, ++a2 !== n2 || i2 || (i2 = true, l.resolve(o2, s2)); + }, function(e4) { + i2 || (i2 = true, l.reject(o2, e4)); + }); + } + }, o.race = function(e2) { + var t2 = this; + if ("[object Array]" !== Object.prototype.toString.call(e2)) + return this.reject(new TypeError("must be an array")); + var r2 = e2.length, n2 = false; + if (!r2) + return this.resolve([]); + var i2 = -1, s2 = new this(u); + for (; ++i2 < r2; ) + a2 = e2[i2], t2.resolve(a2).then(function(e3) { + n2 || (n2 = true, l.resolve(s2, e3)); + }, function(e3) { + n2 || (n2 = true, l.reject(s2, e3)); + }); + var a2; + return s2; + }; + }, { immediate: 36 }], 38: [function(e, t, r) { + "use strict"; + var n = {}; + (0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n; + }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e, t, r) { + "use strict"; + var a = e("./zlib/deflate"), o = e("./utils/common"), h = e("./utils/strings"), i = e("./zlib/messages"), s = e("./zlib/zstream"), u = Object.prototype.toString, l = 0, f = -1, c = 0, d = 8; + function p(e2) { + if (!(this instanceof p)) + return new p(e2); + this.options = o.assign({ level: f, method: d, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c, to: "" }, e2 || {}); + var t2 = this.options; + t2.raw && 0 < t2.windowBits ? t2.windowBits = -t2.windowBits : t2.gzip && 0 < t2.windowBits && t2.windowBits < 16 && (t2.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0; + var r2 = a.deflateInit2(this.strm, t2.level, t2.method, t2.windowBits, t2.memLevel, t2.strategy); + if (r2 !== l) + throw new Error(i[r2]); + if (t2.header && a.deflateSetHeader(this.strm, t2.header), t2.dictionary) { + var n2; + if (n2 = "string" == typeof t2.dictionary ? h.string2buf(t2.dictionary) : "[object ArrayBuffer]" === u.call(t2.dictionary) ? new Uint8Array(t2.dictionary) : t2.dictionary, (r2 = a.deflateSetDictionary(this.strm, n2)) !== l) + throw new Error(i[r2]); + this._dict_set = true; + } + } + function n(e2, t2) { + var r2 = new p(t2); + if (r2.push(e2, true), r2.err) + throw r2.msg || i[r2.err]; + return r2.result; + } + p.prototype.push = function(e2, t2) { + var r2, n2, i2 = this.strm, s2 = this.options.chunkSize; + if (this.ended) + return false; + n2 = t2 === ~~t2 ? t2 : true === t2 ? 4 : 0, "string" == typeof e2 ? i2.input = h.string2buf(e2) : "[object ArrayBuffer]" === u.call(e2) ? i2.input = new Uint8Array(e2) : i2.input = e2, i2.next_in = 0, i2.avail_in = i2.input.length; + do { + if (0 === i2.avail_out && (i2.output = new o.Buf8(s2), i2.next_out = 0, i2.avail_out = s2), 1 !== (r2 = a.deflate(i2, n2)) && r2 !== l) + return this.onEnd(r2), !(this.ended = true); + 0 !== i2.avail_out && (0 !== i2.avail_in || 4 !== n2 && 2 !== n2) || ("string" === this.options.to ? this.onData(h.buf2binstring(o.shrinkBuf(i2.output, i2.next_out))) : this.onData(o.shrinkBuf(i2.output, i2.next_out))); + } while ((0 < i2.avail_in || 0 === i2.avail_out) && 1 !== r2); + return 4 === n2 ? (r2 = a.deflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === l) : 2 !== n2 || (this.onEnd(l), !(i2.avail_out = 0)); + }, p.prototype.onData = function(e2) { + this.chunks.push(e2); + }, p.prototype.onEnd = function(e2) { + e2 === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; + }, r.Deflate = p, r.deflate = n, r.deflateRaw = function(e2, t2) { + return (t2 = t2 || {}).raw = true, n(e2, t2); + }, r.gzip = function(e2, t2) { + return (t2 = t2 || {}).gzip = true, n(e2, t2); + }; + }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e, t, r) { + "use strict"; + var c = e("./zlib/inflate"), d = e("./utils/common"), p = e("./utils/strings"), m = e("./zlib/constants"), n = e("./zlib/messages"), i = e("./zlib/zstream"), s = e("./zlib/gzheader"), _ = Object.prototype.toString; + function a(e2) { + if (!(this instanceof a)) + return new a(e2); + this.options = d.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {}); + var t2 = this.options; + t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0; + var r2 = c.inflateInit2(this.strm, t2.windowBits); + if (r2 !== m.Z_OK) + throw new Error(n[r2]); + this.header = new s(), c.inflateGetHeader(this.strm, this.header); + } + function o(e2, t2) { + var r2 = new a(t2); + if (r2.push(e2, true), r2.err) + throw r2.msg || n[r2.err]; + return r2.result; + } + a.prototype.push = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h = this.strm, u = this.options.chunkSize, l = this.options.dictionary, f = false; + if (this.ended) + return false; + n2 = t2 === ~~t2 ? t2 : true === t2 ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e2 ? h.input = p.binstring2buf(e2) : "[object ArrayBuffer]" === _.call(e2) ? h.input = new Uint8Array(e2) : h.input = e2, h.next_in = 0, h.avail_in = h.input.length; + do { + if (0 === h.avail_out && (h.output = new d.Buf8(u), h.next_out = 0, h.avail_out = u), (r2 = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && l && (o2 = "string" == typeof l ? p.string2buf(l) : "[object ArrayBuffer]" === _.call(l) ? new Uint8Array(l) : l, r2 = c.inflateSetDictionary(this.strm, o2)), r2 === m.Z_BUF_ERROR && true === f && (r2 = m.Z_OK, f = false), r2 !== m.Z_STREAM_END && r2 !== m.Z_OK) + return this.onEnd(r2), !(this.ended = true); + h.next_out && (0 !== h.avail_out && r2 !== m.Z_STREAM_END && (0 !== h.avail_in || n2 !== m.Z_FINISH && n2 !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i2 = p.utf8border(h.output, h.next_out), s2 = h.next_out - i2, a2 = p.buf2string(h.output, i2), h.next_out = s2, h.avail_out = u - s2, s2 && d.arraySet(h.output, h.output, i2, s2, 0), this.onData(a2)) : this.onData(d.shrinkBuf(h.output, h.next_out)))), 0 === h.avail_in && 0 === h.avail_out && (f = true); + } while ((0 < h.avail_in || 0 === h.avail_out) && r2 !== m.Z_STREAM_END); + return r2 === m.Z_STREAM_END && (n2 = m.Z_FINISH), n2 === m.Z_FINISH ? (r2 = c.inflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === m.Z_OK) : n2 !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(h.avail_out = 0)); + }, a.prototype.onData = function(e2) { + this.chunks.push(e2); + }, a.prototype.onEnd = function(e2) { + e2 === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; + }, r.Inflate = a, r.inflate = o, r.inflateRaw = function(e2, t2) { + return (t2 = t2 || {}).raw = true, o(e2, t2); + }, r.ungzip = o; + }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e, t, r) { + "use strict"; + var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; + r.assign = function(e2) { + for (var t2 = Array.prototype.slice.call(arguments, 1); t2.length; ) { + var r2 = t2.shift(); + if (r2) { + if ("object" != typeof r2) + throw new TypeError(r2 + "must be non-object"); + for (var n2 in r2) + r2.hasOwnProperty(n2) && (e2[n2] = r2[n2]); + } + } + return e2; + }, r.shrinkBuf = function(e2, t2) { + return e2.length === t2 ? e2 : e2.subarray ? e2.subarray(0, t2) : (e2.length = t2, e2); + }; + var i = { arraySet: function(e2, t2, r2, n2, i2) { + if (t2.subarray && e2.subarray) + e2.set(t2.subarray(r2, r2 + n2), i2); + else + for (var s2 = 0; s2 < n2; s2++) + e2[i2 + s2] = t2[r2 + s2]; + }, flattenChunks: function(e2) { + var t2, r2, n2, i2, s2, a; + for (t2 = n2 = 0, r2 = e2.length; t2 < r2; t2++) + n2 += e2[t2].length; + for (a = new Uint8Array(n2), t2 = i2 = 0, r2 = e2.length; t2 < r2; t2++) + s2 = e2[t2], a.set(s2, i2), i2 += s2.length; + return a; + } }, s = { arraySet: function(e2, t2, r2, n2, i2) { + for (var s2 = 0; s2 < n2; s2++) + e2[i2 + s2] = t2[r2 + s2]; + }, flattenChunks: function(e2) { + return [].concat.apply([], e2); + } }; + r.setTyped = function(e2) { + e2 ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s)); + }, r.setTyped(n); + }, {}], 42: [function(e, t, r) { + "use strict"; + var h = e("./common"), i = true, s = true; + try { + String.fromCharCode.apply(null, [0]); + } catch (e2) { + i = false; + } + try { + String.fromCharCode.apply(null, new Uint8Array(1)); + } catch (e2) { + s = false; + } + for (var u = new h.Buf8(256), n = 0; n < 256; n++) + u[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; + function l(e2, t2) { + if (t2 < 65537 && (e2.subarray && s || !e2.subarray && i)) + return String.fromCharCode.apply(null, h.shrinkBuf(e2, t2)); + for (var r2 = "", n2 = 0; n2 < t2; n2++) + r2 += String.fromCharCode(e2[n2]); + return r2; + } + u[254] = u[254] = 1, r.string2buf = function(e2) { + var t2, r2, n2, i2, s2, a = e2.length, o = 0; + for (i2 = 0; i2 < a; i2++) + 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; + for (t2 = new h.Buf8(o), i2 = s2 = 0; s2 < o; i2++) + 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); + return t2; + }, r.buf2binstring = function(e2) { + return l(e2, e2.length); + }, r.binstring2buf = function(e2) { + for (var t2 = new h.Buf8(e2.length), r2 = 0, n2 = t2.length; r2 < n2; r2++) + t2[r2] = e2.charCodeAt(r2); + return t2; + }, r.buf2string = function(e2, t2) { + var r2, n2, i2, s2, a = t2 || e2.length, o = new Array(2 * a); + for (r2 = n2 = 0; r2 < a; ) + if ((i2 = e2[r2++]) < 128) + o[n2++] = i2; + else if (4 < (s2 = u[i2])) + o[n2++] = 65533, r2 += s2 - 1; + else { + for (i2 &= 2 === s2 ? 31 : 3 === s2 ? 15 : 7; 1 < s2 && r2 < a; ) + i2 = i2 << 6 | 63 & e2[r2++], s2--; + 1 < s2 ? o[n2++] = 65533 : i2 < 65536 ? o[n2++] = i2 : (i2 -= 65536, o[n2++] = 55296 | i2 >> 10 & 1023, o[n2++] = 56320 | 1023 & i2); + } + return l(o, n2); + }, r.utf8border = function(e2, t2) { + var r2; + for ((t2 = t2 || e2.length) > e2.length && (t2 = e2.length), r2 = t2 - 1; 0 <= r2 && 128 == (192 & e2[r2]); ) + r2--; + return r2 < 0 ? t2 : 0 === r2 ? t2 : r2 + u[e2[r2]] > t2 ? r2 : t2; + }; + }, { "./common": 41 }], 43: [function(e, t, r) { + "use strict"; + t.exports = function(e2, t2, r2, n) { + for (var i = 65535 & e2 | 0, s = e2 >>> 16 & 65535 | 0, a = 0; 0 !== r2; ) { + for (r2 -= a = 2e3 < r2 ? 2e3 : r2; s = s + (i = i + t2[n++] | 0) | 0, --a; ) + ; + i %= 65521, s %= 65521; + } + return i | s << 16 | 0; + }; + }, {}], 44: [function(e, t, r) { + "use strict"; + t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; + }, {}], 45: [function(e, t, r) { + "use strict"; + var o = function() { + for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { + e2 = r2; + for (var n = 0; n < 8; n++) + e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; + t2[r2] = e2; + } + return t2; + }(); + t.exports = function(e2, t2, r2, n) { + var i = o, s = n + r2; + e2 ^= -1; + for (var a = n; a < s; a++) + e2 = e2 >>> 8 ^ i[255 & (e2 ^ t2[a])]; + return -1 ^ e2; + }; + }, {}], 46: [function(e, t, r) { + "use strict"; + var h, c = e("../utils/common"), u = e("./trees"), d = e("./adler32"), p = e("./crc32"), n = e("./messages"), l = 0, f = 4, m = 0, _ = -2, g = -1, b = 4, i = 2, v = 8, y = 9, s = 286, a = 30, o = 19, w = 2 * s + 1, k = 15, x = 3, S = 258, z = S + x + 1, C = 42, E = 113, A = 1, I = 2, O = 3, B = 4; + function R(e2, t2) { + return e2.msg = n[t2], t2; + } + function T(e2) { + return (e2 << 1) - (4 < e2 ? 9 : 0); + } + function D(e2) { + for (var t2 = e2.length; 0 <= --t2; ) + e2[t2] = 0; + } + function F(e2) { + var t2 = e2.state, r2 = t2.pending; + r2 > e2.avail_out && (r2 = e2.avail_out), 0 !== r2 && (c.arraySet(e2.output, t2.pending_buf, t2.pending_out, r2, e2.next_out), e2.next_out += r2, t2.pending_out += r2, e2.total_out += r2, e2.avail_out -= r2, t2.pending -= r2, 0 === t2.pending && (t2.pending_out = 0)); + } + function N(e2, t2) { + u._tr_flush_block(e2, 0 <= e2.block_start ? e2.block_start : -1, e2.strstart - e2.block_start, t2), e2.block_start = e2.strstart, F(e2.strm); + } + function U(e2, t2) { + e2.pending_buf[e2.pending++] = t2; + } + function P(e2, t2) { + e2.pending_buf[e2.pending++] = t2 >>> 8 & 255, e2.pending_buf[e2.pending++] = 255 & t2; + } + function L(e2, t2) { + var r2, n2, i2 = e2.max_chain_length, s2 = e2.strstart, a2 = e2.prev_length, o2 = e2.nice_match, h2 = e2.strstart > e2.w_size - z ? e2.strstart - (e2.w_size - z) : 0, u2 = e2.window, l2 = e2.w_mask, f2 = e2.prev, c2 = e2.strstart + S, d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; + e2.prev_length >= e2.good_match && (i2 >>= 2), o2 > e2.lookahead && (o2 = e2.lookahead); + do { + if (u2[(r2 = t2) + a2] === p2 && u2[r2 + a2 - 1] === d2 && u2[r2] === u2[s2] && u2[++r2] === u2[s2 + 1]) { + s2 += 2, r2++; + do { + } while (u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && s2 < c2); + if (n2 = S - (c2 - s2), s2 = c2 - S, a2 < n2) { + if (e2.match_start = t2, o2 <= (a2 = n2)) + break; + d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; + } + } + } while ((t2 = f2[t2 & l2]) > h2 && 0 != --i2); + return a2 <= e2.lookahead ? a2 : e2.lookahead; + } + function j(e2) { + var t2, r2, n2, i2, s2, a2, o2, h2, u2, l2, f2 = e2.w_size; + do { + if (i2 = e2.window_size - e2.lookahead - e2.strstart, e2.strstart >= f2 + (f2 - z)) { + for (c.arraySet(e2.window, e2.window, f2, f2, 0), e2.match_start -= f2, e2.strstart -= f2, e2.block_start -= f2, t2 = r2 = e2.hash_size; n2 = e2.head[--t2], e2.head[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) + ; + for (t2 = r2 = f2; n2 = e2.prev[--t2], e2.prev[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) + ; + i2 += f2; + } + if (0 === e2.strm.avail_in) + break; + if (a2 = e2.strm, o2 = e2.window, h2 = e2.strstart + e2.lookahead, u2 = i2, l2 = void 0, l2 = a2.avail_in, u2 < l2 && (l2 = u2), r2 = 0 === l2 ? 0 : (a2.avail_in -= l2, c.arraySet(o2, a2.input, a2.next_in, l2, h2), 1 === a2.state.wrap ? a2.adler = d(a2.adler, o2, l2, h2) : 2 === a2.state.wrap && (a2.adler = p(a2.adler, o2, l2, h2)), a2.next_in += l2, a2.total_in += l2, l2), e2.lookahead += r2, e2.lookahead + e2.insert >= x) + for (s2 = e2.strstart - e2.insert, e2.ins_h = e2.window[s2], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + 1]) & e2.hash_mask; e2.insert && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + x - 1]) & e2.hash_mask, e2.prev[s2 & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = s2, s2++, e2.insert--, !(e2.lookahead + e2.insert < x)); ) + ; + } while (e2.lookahead < z && 0 !== e2.strm.avail_in); + } + function Z(e2, t2) { + for (var r2, n2; ; ) { + if (e2.lookahead < z) { + if (j(e2), e2.lookahead < z && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 !== r2 && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2)), e2.match_length >= x) + if (n2 = u._tr_tally(e2, e2.strstart - e2.match_start, e2.match_length - x), e2.lookahead -= e2.match_length, e2.match_length <= e2.max_lazy_match && e2.lookahead >= x) { + for (e2.match_length--; e2.strstart++, e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart, 0 != --e2.match_length; ) + ; + e2.strstart++; + } else + e2.strstart += e2.match_length, e2.match_length = 0, e2.ins_h = e2.window[e2.strstart], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + 1]) & e2.hash_mask; + else + n2 = u._tr_tally(e2, 0, e2.window[e2.strstart]), e2.lookahead--, e2.strstart++; + if (n2 && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } + return e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; + } + function W(e2, t2) { + for (var r2, n2, i2; ; ) { + if (e2.lookahead < z) { + if (j(e2), e2.lookahead < z && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), e2.prev_length = e2.match_length, e2.prev_match = e2.match_start, e2.match_length = x - 1, 0 !== r2 && e2.prev_length < e2.max_lazy_match && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2), e2.match_length <= 5 && (1 === e2.strategy || e2.match_length === x && 4096 < e2.strstart - e2.match_start) && (e2.match_length = x - 1)), e2.prev_length >= x && e2.match_length <= e2.prev_length) { + for (i2 = e2.strstart + e2.lookahead - x, n2 = u._tr_tally(e2, e2.strstart - 1 - e2.prev_match, e2.prev_length - x), e2.lookahead -= e2.prev_length - 1, e2.prev_length -= 2; ++e2.strstart <= i2 && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 != --e2.prev_length; ) + ; + if (e2.match_available = 0, e2.match_length = x - 1, e2.strstart++, n2 && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } else if (e2.match_available) { + if ((n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1])) && N(e2, false), e2.strstart++, e2.lookahead--, 0 === e2.strm.avail_out) + return A; + } else + e2.match_available = 1, e2.strstart++, e2.lookahead--; + } + return e2.match_available && (n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1]), e2.match_available = 0), e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; + } + function M(e2, t2, r2, n2, i2) { + this.good_length = e2, this.max_lazy = t2, this.nice_length = r2, this.max_chain = n2, this.func = i2; + } + function H() { + this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c.Buf16(2 * w), this.dyn_dtree = new c.Buf16(2 * (2 * a + 1)), this.bl_tree = new c.Buf16(2 * (2 * o + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c.Buf16(k + 1), this.heap = new c.Buf16(2 * s + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c.Buf16(2 * s + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; + } + function G(e2) { + var t2; + return e2 && e2.state ? (e2.total_in = e2.total_out = 0, e2.data_type = i, (t2 = e2.state).pending = 0, t2.pending_out = 0, t2.wrap < 0 && (t2.wrap = -t2.wrap), t2.status = t2.wrap ? C : E, e2.adler = 2 === t2.wrap ? 0 : 1, t2.last_flush = l, u._tr_init(t2), m) : R(e2, _); + } + function K(e2) { + var t2 = G(e2); + return t2 === m && function(e3) { + e3.window_size = 2 * e3.w_size, D(e3.head), e3.max_lazy_match = h[e3.level].max_lazy, e3.good_match = h[e3.level].good_length, e3.nice_match = h[e3.level].nice_length, e3.max_chain_length = h[e3.level].max_chain, e3.strstart = 0, e3.block_start = 0, e3.lookahead = 0, e3.insert = 0, e3.match_length = e3.prev_length = x - 1, e3.match_available = 0, e3.ins_h = 0; + }(e2.state), t2; + } + function Y(e2, t2, r2, n2, i2, s2) { + if (!e2) + return _; + var a2 = 1; + if (t2 === g && (t2 = 6), n2 < 0 ? (a2 = 0, n2 = -n2) : 15 < n2 && (a2 = 2, n2 -= 16), i2 < 1 || y < i2 || r2 !== v || n2 < 8 || 15 < n2 || t2 < 0 || 9 < t2 || s2 < 0 || b < s2) + return R(e2, _); + 8 === n2 && (n2 = 9); + var o2 = new H(); + return (e2.state = o2).strm = e2, o2.wrap = a2, o2.gzhead = null, o2.w_bits = n2, o2.w_size = 1 << o2.w_bits, o2.w_mask = o2.w_size - 1, o2.hash_bits = i2 + 7, o2.hash_size = 1 << o2.hash_bits, o2.hash_mask = o2.hash_size - 1, o2.hash_shift = ~~((o2.hash_bits + x - 1) / x), o2.window = new c.Buf8(2 * o2.w_size), o2.head = new c.Buf16(o2.hash_size), o2.prev = new c.Buf16(o2.w_size), o2.lit_bufsize = 1 << i2 + 6, o2.pending_buf_size = 4 * o2.lit_bufsize, o2.pending_buf = new c.Buf8(o2.pending_buf_size), o2.d_buf = 1 * o2.lit_bufsize, o2.l_buf = 3 * o2.lit_bufsize, o2.level = t2, o2.strategy = s2, o2.method = r2, K(e2); + } + h = [new M(0, 0, 0, 0, function(e2, t2) { + var r2 = 65535; + for (r2 > e2.pending_buf_size - 5 && (r2 = e2.pending_buf_size - 5); ; ) { + if (e2.lookahead <= 1) { + if (j(e2), 0 === e2.lookahead && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + e2.strstart += e2.lookahead, e2.lookahead = 0; + var n2 = e2.block_start + r2; + if ((0 === e2.strstart || e2.strstart >= n2) && (e2.lookahead = e2.strstart - n2, e2.strstart = n2, N(e2, false), 0 === e2.strm.avail_out)) + return A; + if (e2.strstart - e2.block_start >= e2.w_size - z && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } + return e2.insert = 0, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : (e2.strstart > e2.block_start && (N(e2, false), e2.strm.avail_out), A); + }), new M(4, 4, 8, 4, Z), new M(4, 5, 16, 8, Z), new M(4, 6, 32, 32, Z), new M(4, 4, 16, 16, W), new M(8, 16, 32, 32, W), new M(8, 16, 128, 128, W), new M(8, 32, 128, 256, W), new M(32, 128, 258, 1024, W), new M(32, 258, 258, 4096, W)], r.deflateInit = function(e2, t2) { + return Y(e2, t2, v, 15, 8, 0); + }, r.deflateInit2 = Y, r.deflateReset = K, r.deflateResetKeep = G, r.deflateSetHeader = function(e2, t2) { + return e2 && e2.state ? 2 !== e2.state.wrap ? _ : (e2.state.gzhead = t2, m) : _; + }, r.deflate = function(e2, t2) { + var r2, n2, i2, s2; + if (!e2 || !e2.state || 5 < t2 || t2 < 0) + return e2 ? R(e2, _) : _; + if (n2 = e2.state, !e2.output || !e2.input && 0 !== e2.avail_in || 666 === n2.status && t2 !== f) + return R(e2, 0 === e2.avail_out ? -5 : _); + if (n2.strm = e2, r2 = n2.last_flush, n2.last_flush = t2, n2.status === C) + if (2 === n2.wrap) + e2.adler = 0, U(n2, 31), U(n2, 139), U(n2, 8), n2.gzhead ? (U(n2, (n2.gzhead.text ? 1 : 0) + (n2.gzhead.hcrc ? 2 : 0) + (n2.gzhead.extra ? 4 : 0) + (n2.gzhead.name ? 8 : 0) + (n2.gzhead.comment ? 16 : 0)), U(n2, 255 & n2.gzhead.time), U(n2, n2.gzhead.time >> 8 & 255), U(n2, n2.gzhead.time >> 16 & 255), U(n2, n2.gzhead.time >> 24 & 255), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 255 & n2.gzhead.os), n2.gzhead.extra && n2.gzhead.extra.length && (U(n2, 255 & n2.gzhead.extra.length), U(n2, n2.gzhead.extra.length >> 8 & 255)), n2.gzhead.hcrc && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending, 0)), n2.gzindex = 0, n2.status = 69) : (U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 3), n2.status = E); + else { + var a2 = v + (n2.w_bits - 8 << 4) << 8; + a2 |= (2 <= n2.strategy || n2.level < 2 ? 0 : n2.level < 6 ? 1 : 6 === n2.level ? 2 : 3) << 6, 0 !== n2.strstart && (a2 |= 32), a2 += 31 - a2 % 31, n2.status = E, P(n2, a2), 0 !== n2.strstart && (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), e2.adler = 1; + } + if (69 === n2.status) + if (n2.gzhead.extra) { + for (i2 = n2.pending; n2.gzindex < (65535 & n2.gzhead.extra.length) && (n2.pending !== n2.pending_buf_size || (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending !== n2.pending_buf_size)); ) + U(n2, 255 & n2.gzhead.extra[n2.gzindex]), n2.gzindex++; + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), n2.gzindex === n2.gzhead.extra.length && (n2.gzindex = 0, n2.status = 73); + } else + n2.status = 73; + if (73 === n2.status) + if (n2.gzhead.name) { + i2 = n2.pending; + do { + if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { + s2 = 1; + break; + } + s2 = n2.gzindex < n2.gzhead.name.length ? 255 & n2.gzhead.name.charCodeAt(n2.gzindex++) : 0, U(n2, s2); + } while (0 !== s2); + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.gzindex = 0, n2.status = 91); + } else + n2.status = 91; + if (91 === n2.status) + if (n2.gzhead.comment) { + i2 = n2.pending; + do { + if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { + s2 = 1; + break; + } + s2 = n2.gzindex < n2.gzhead.comment.length ? 255 & n2.gzhead.comment.charCodeAt(n2.gzindex++) : 0, U(n2, s2); + } while (0 !== s2); + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.status = 103); + } else + n2.status = 103; + if (103 === n2.status && (n2.gzhead.hcrc ? (n2.pending + 2 > n2.pending_buf_size && F(e2), n2.pending + 2 <= n2.pending_buf_size && (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), e2.adler = 0, n2.status = E)) : n2.status = E), 0 !== n2.pending) { + if (F(e2), 0 === e2.avail_out) + return n2.last_flush = -1, m; + } else if (0 === e2.avail_in && T(t2) <= T(r2) && t2 !== f) + return R(e2, -5); + if (666 === n2.status && 0 !== e2.avail_in) + return R(e2, -5); + if (0 !== e2.avail_in || 0 !== n2.lookahead || t2 !== l && 666 !== n2.status) { + var o2 = 2 === n2.strategy ? function(e3, t3) { + for (var r3; ; ) { + if (0 === e3.lookahead && (j(e3), 0 === e3.lookahead)) { + if (t3 === l) + return A; + break; + } + if (e3.match_length = 0, r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++, r3 && (N(e3, false), 0 === e3.strm.avail_out)) + return A; + } + return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; + }(n2, t2) : 3 === n2.strategy ? function(e3, t3) { + for (var r3, n3, i3, s3, a3 = e3.window; ; ) { + if (e3.lookahead <= S) { + if (j(e3), e3.lookahead <= S && t3 === l) + return A; + if (0 === e3.lookahead) + break; + } + if (e3.match_length = 0, e3.lookahead >= x && 0 < e3.strstart && (n3 = a3[i3 = e3.strstart - 1]) === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3]) { + s3 = e3.strstart + S; + do { + } while (n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && i3 < s3); + e3.match_length = S - (s3 - i3), e3.match_length > e3.lookahead && (e3.match_length = e3.lookahead); + } + if (e3.match_length >= x ? (r3 = u._tr_tally(e3, 1, e3.match_length - x), e3.lookahead -= e3.match_length, e3.strstart += e3.match_length, e3.match_length = 0) : (r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++), r3 && (N(e3, false), 0 === e3.strm.avail_out)) + return A; + } + return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; + }(n2, t2) : h[n2.level].func(n2, t2); + if (o2 !== O && o2 !== B || (n2.status = 666), o2 === A || o2 === O) + return 0 === e2.avail_out && (n2.last_flush = -1), m; + if (o2 === I && (1 === t2 ? u._tr_align(n2) : 5 !== t2 && (u._tr_stored_block(n2, 0, 0, false), 3 === t2 && (D(n2.head), 0 === n2.lookahead && (n2.strstart = 0, n2.block_start = 0, n2.insert = 0))), F(e2), 0 === e2.avail_out)) + return n2.last_flush = -1, m; + } + return t2 !== f ? m : n2.wrap <= 0 ? 1 : (2 === n2.wrap ? (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), U(n2, e2.adler >> 16 & 255), U(n2, e2.adler >> 24 & 255), U(n2, 255 & e2.total_in), U(n2, e2.total_in >> 8 & 255), U(n2, e2.total_in >> 16 & 255), U(n2, e2.total_in >> 24 & 255)) : (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), F(e2), 0 < n2.wrap && (n2.wrap = -n2.wrap), 0 !== n2.pending ? m : 1); + }, r.deflateEnd = function(e2) { + var t2; + return e2 && e2.state ? (t2 = e2.state.status) !== C && 69 !== t2 && 73 !== t2 && 91 !== t2 && 103 !== t2 && t2 !== E && 666 !== t2 ? R(e2, _) : (e2.state = null, t2 === E ? R(e2, -3) : m) : _; + }, r.deflateSetDictionary = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h2, u2, l2 = t2.length; + if (!e2 || !e2.state) + return _; + if (2 === (s2 = (r2 = e2.state).wrap) || 1 === s2 && r2.status !== C || r2.lookahead) + return _; + for (1 === s2 && (e2.adler = d(e2.adler, t2, l2, 0)), r2.wrap = 0, l2 >= r2.w_size && (0 === s2 && (D(r2.head), r2.strstart = 0, r2.block_start = 0, r2.insert = 0), u2 = new c.Buf8(r2.w_size), c.arraySet(u2, t2, l2 - r2.w_size, r2.w_size, 0), t2 = u2, l2 = r2.w_size), a2 = e2.avail_in, o2 = e2.next_in, h2 = e2.input, e2.avail_in = l2, e2.next_in = 0, e2.input = t2, j(r2); r2.lookahead >= x; ) { + for (n2 = r2.strstart, i2 = r2.lookahead - (x - 1); r2.ins_h = (r2.ins_h << r2.hash_shift ^ r2.window[n2 + x - 1]) & r2.hash_mask, r2.prev[n2 & r2.w_mask] = r2.head[r2.ins_h], r2.head[r2.ins_h] = n2, n2++, --i2; ) + ; + r2.strstart = n2, r2.lookahead = x - 1, j(r2); + } + return r2.strstart += r2.lookahead, r2.block_start = r2.strstart, r2.insert = r2.lookahead, r2.lookahead = 0, r2.match_length = r2.prev_length = x - 1, r2.match_available = 0, e2.next_in = o2, e2.input = h2, e2.avail_in = a2, r2.wrap = s2, m; + }, r.deflateInfo = "pako deflate (from Nodeca project)"; + }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e, t, r) { + "use strict"; + t.exports = function() { + this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; + }; + }, {}], 48: [function(e, t, r) { + "use strict"; + t.exports = function(e2, t2) { + var r2, n, i, s, a, o, h, u, l, f, c, d, p, m, _, g, b, v, y, w, k, x, S, z, C; + r2 = e2.state, n = e2.next_in, z = e2.input, i = n + (e2.avail_in - 5), s = e2.next_out, C = e2.output, a = s - (t2 - e2.avail_out), o = s + (e2.avail_out - 257), h = r2.dmax, u = r2.wsize, l = r2.whave, f = r2.wnext, c = r2.window, d = r2.hold, p = r2.bits, m = r2.lencode, _ = r2.distcode, g = (1 << r2.lenbits) - 1, b = (1 << r2.distbits) - 1; + e: + do { + p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = m[d & g]; + t: + for (; ; ) { + if (d >>>= y = v >>> 24, p -= y, 0 === (y = v >>> 16 & 255)) + C[s++] = 65535 & v; + else { + if (!(16 & y)) { + if (0 == (64 & y)) { + v = m[(65535 & v) + (d & (1 << y) - 1)]; + continue t; + } + if (32 & y) { + r2.mode = 12; + break e; + } + e2.msg = "invalid literal/length code", r2.mode = 30; + break e; + } + w = 65535 & v, (y &= 15) && (p < y && (d += z[n++] << p, p += 8), w += d & (1 << y) - 1, d >>>= y, p -= y), p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = _[d & b]; + r: + for (; ; ) { + if (d >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) { + if (0 == (64 & y)) { + v = _[(65535 & v) + (d & (1 << y) - 1)]; + continue r; + } + e2.msg = "invalid distance code", r2.mode = 30; + break e; + } + if (k = 65535 & v, p < (y &= 15) && (d += z[n++] << p, (p += 8) < y && (d += z[n++] << p, p += 8)), h < (k += d & (1 << y) - 1)) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break e; + } + if (d >>>= y, p -= y, (y = s - a) < k) { + if (l < (y = k - y) && r2.sane) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break e; + } + if (S = c, (x = 0) === f) { + if (x += u - y, y < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + } else if (f < y) { + if (x += u + f - y, (y -= f) < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + if (x = 0, f < w) { + for (w -= y = f; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + } + } else if (x += f - y, y < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + for (; 2 < w; ) + C[s++] = S[x++], C[s++] = S[x++], C[s++] = S[x++], w -= 3; + w && (C[s++] = S[x++], 1 < w && (C[s++] = S[x++])); + } else { + for (x = s - k; C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], 2 < (w -= 3); ) + ; + w && (C[s++] = C[x++], 1 < w && (C[s++] = C[x++])); + } + break; + } + } + break; + } + } while (n < i && s < o); + n -= w = p >> 3, d &= (1 << (p -= w << 3)) - 1, e2.next_in = n, e2.next_out = s, e2.avail_in = n < i ? i - n + 5 : 5 - (n - i), e2.avail_out = s < o ? o - s + 257 : 257 - (s - o), r2.hold = d, r2.bits = p; + }; + }, {}], 49: [function(e, t, r) { + "use strict"; + var I = e("../utils/common"), O = e("./adler32"), B = e("./crc32"), R = e("./inffast"), T = e("./inftrees"), D = 1, F = 2, N = 0, U = -2, P = 1, n = 852, i = 592; + function L(e2) { + return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24); + } + function s() { + this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; + } + function a(e2) { + var t2; + return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = P, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new I.Buf32(n), t2.distcode = t2.distdyn = new I.Buf32(i), t2.sane = 1, t2.back = -1, N) : U; + } + function o(e2) { + var t2; + return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, a(e2)) : U; + } + function h(e2, t2) { + var r2, n2; + return e2 && e2.state ? (n2 = e2.state, t2 < 0 ? (r2 = 0, t2 = -t2) : (r2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? U : (null !== n2.window && n2.wbits !== t2 && (n2.window = null), n2.wrap = r2, n2.wbits = t2, o(e2))) : U; + } + function u(e2, t2) { + var r2, n2; + return e2 ? (n2 = new s(), (e2.state = n2).window = null, (r2 = h(e2, t2)) !== N && (e2.state = null), r2) : U; + } + var l, f, c = true; + function j(e2) { + if (c) { + var t2; + for (l = new I.Buf32(512), f = new I.Buf32(32), t2 = 0; t2 < 144; ) + e2.lens[t2++] = 8; + for (; t2 < 256; ) + e2.lens[t2++] = 9; + for (; t2 < 280; ) + e2.lens[t2++] = 7; + for (; t2 < 288; ) + e2.lens[t2++] = 8; + for (T(D, e2.lens, 0, 288, l, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; ) + e2.lens[t2++] = 5; + T(F, e2.lens, 0, 32, f, 0, e2.work, { bits: 5 }), c = false; + } + e2.lencode = l, e2.lenbits = 9, e2.distcode = f, e2.distbits = 5; + } + function Z(e2, t2, r2, n2) { + var i2, s2 = e2.state; + return null === s2.window && (s2.wsize = 1 << s2.wbits, s2.wnext = 0, s2.whave = 0, s2.window = new I.Buf8(s2.wsize)), n2 >= s2.wsize ? (I.arraySet(s2.window, t2, r2 - s2.wsize, s2.wsize, 0), s2.wnext = 0, s2.whave = s2.wsize) : (n2 < (i2 = s2.wsize - s2.wnext) && (i2 = n2), I.arraySet(s2.window, t2, r2 - n2, i2, s2.wnext), (n2 -= i2) ? (I.arraySet(s2.window, t2, r2 - n2, n2, 0), s2.wnext = n2, s2.whave = s2.wsize) : (s2.wnext += i2, s2.wnext === s2.wsize && (s2.wnext = 0), s2.whave < s2.wsize && (s2.whave += i2))), 0; + } + r.inflateReset = o, r.inflateReset2 = h, r.inflateResetKeep = a, r.inflateInit = function(e2) { + return u(e2, 15); + }, r.inflateInit2 = u, r.inflate = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h2, u2, l2, f2, c2, d, p, m, _, g, b, v, y, w, k, x, S, z, C = 0, E = new I.Buf8(4), A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; + if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in) + return U; + 12 === (r2 = e2.state).mode && (r2.mode = 13), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, f2 = o2, c2 = h2, x = N; + e: + for (; ; ) + switch (r2.mode) { + case P: + if (0 === r2.wrap) { + r2.mode = 13; + break; + } + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (2 & r2.wrap && 35615 === u2) { + E[r2.check = 0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0), l2 = u2 = 0, r2.mode = 2; + break; + } + if (r2.flags = 0, r2.head && (r2.head.done = false), !(1 & r2.wrap) || (((255 & u2) << 8) + (u2 >> 8)) % 31) { + e2.msg = "incorrect header check", r2.mode = 30; + break; + } + if (8 != (15 & u2)) { + e2.msg = "unknown compression method", r2.mode = 30; + break; + } + if (l2 -= 4, k = 8 + (15 & (u2 >>>= 4)), 0 === r2.wbits) + r2.wbits = k; + else if (k > r2.wbits) { + e2.msg = "invalid window size", r2.mode = 30; + break; + } + r2.dmax = 1 << k, e2.adler = r2.check = 1, r2.mode = 512 & u2 ? 10 : 12, l2 = u2 = 0; + break; + case 2: + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (r2.flags = u2, 8 != (255 & r2.flags)) { + e2.msg = "unknown compression method", r2.mode = 30; + break; + } + if (57344 & r2.flags) { + e2.msg = "unknown header flags set", r2.mode = 30; + break; + } + r2.head && (r2.head.text = u2 >> 8 & 1), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 3; + case 3: + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.head && (r2.head.time = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, E[2] = u2 >>> 16 & 255, E[3] = u2 >>> 24 & 255, r2.check = B(r2.check, E, 4, 0)), l2 = u2 = 0, r2.mode = 4; + case 4: + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.head && (r2.head.xflags = 255 & u2, r2.head.os = u2 >> 8), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 5; + case 5: + if (1024 & r2.flags) { + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.length = u2, r2.head && (r2.head.extra_len = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0; + } else + r2.head && (r2.head.extra = null); + r2.mode = 6; + case 6: + if (1024 & r2.flags && (o2 < (d = r2.length) && (d = o2), d && (r2.head && (k = r2.head.extra_len - r2.length, r2.head.extra || (r2.head.extra = new Array(r2.head.extra_len)), I.arraySet(r2.head.extra, n2, s2, d, k)), 512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, r2.length -= d), r2.length)) + break e; + r2.length = 0, r2.mode = 7; + case 7: + if (2048 & r2.flags) { + if (0 === o2) + break e; + for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.name += String.fromCharCode(k)), k && d < o2; ) + ; + if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) + break e; + } else + r2.head && (r2.head.name = null); + r2.length = 0, r2.mode = 8; + case 8: + if (4096 & r2.flags) { + if (0 === o2) + break e; + for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.comment += String.fromCharCode(k)), k && d < o2; ) + ; + if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) + break e; + } else + r2.head && (r2.head.comment = null); + r2.mode = 9; + case 9: + if (512 & r2.flags) { + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 !== (65535 & r2.check)) { + e2.msg = "header crc mismatch", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.head && (r2.head.hcrc = r2.flags >> 9 & 1, r2.head.done = true), e2.adler = r2.check = 0, r2.mode = 12; + break; + case 10: + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + e2.adler = r2.check = L(u2), l2 = u2 = 0, r2.mode = 11; + case 11: + if (0 === r2.havedict) + return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, 2; + e2.adler = r2.check = 1, r2.mode = 12; + case 12: + if (5 === t2 || 6 === t2) + break e; + case 13: + if (r2.last) { + u2 >>>= 7 & l2, l2 -= 7 & l2, r2.mode = 27; + break; + } + for (; l2 < 3; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + switch (r2.last = 1 & u2, l2 -= 1, 3 & (u2 >>>= 1)) { + case 0: + r2.mode = 14; + break; + case 1: + if (j(r2), r2.mode = 20, 6 !== t2) + break; + u2 >>>= 2, l2 -= 2; + break e; + case 2: + r2.mode = 17; + break; + case 3: + e2.msg = "invalid block type", r2.mode = 30; + } + u2 >>>= 2, l2 -= 2; + break; + case 14: + for (u2 >>>= 7 & l2, l2 -= 7 & l2; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if ((65535 & u2) != (u2 >>> 16 ^ 65535)) { + e2.msg = "invalid stored block lengths", r2.mode = 30; + break; + } + if (r2.length = 65535 & u2, l2 = u2 = 0, r2.mode = 15, 6 === t2) + break e; + case 15: + r2.mode = 16; + case 16: + if (d = r2.length) { + if (o2 < d && (d = o2), h2 < d && (d = h2), 0 === d) + break e; + I.arraySet(i2, n2, s2, d, a2), o2 -= d, s2 += d, h2 -= d, a2 += d, r2.length -= d; + break; + } + r2.mode = 12; + break; + case 17: + for (; l2 < 14; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (r2.nlen = 257 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ndist = 1 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ncode = 4 + (15 & u2), u2 >>>= 4, l2 -= 4, 286 < r2.nlen || 30 < r2.ndist) { + e2.msg = "too many length or distance symbols", r2.mode = 30; + break; + } + r2.have = 0, r2.mode = 18; + case 18: + for (; r2.have < r2.ncode; ) { + for (; l2 < 3; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.lens[A[r2.have++]] = 7 & u2, u2 >>>= 3, l2 -= 3; + } + for (; r2.have < 19; ) + r2.lens[A[r2.have++]] = 0; + if (r2.lencode = r2.lendyn, r2.lenbits = 7, S = { bits: r2.lenbits }, x = T(0, r2.lens, 0, 19, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { + e2.msg = "invalid code lengths set", r2.mode = 30; + break; + } + r2.have = 0, r2.mode = 19; + case 19: + for (; r2.have < r2.nlen + r2.ndist; ) { + for (; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (b < 16) + u2 >>>= _, l2 -= _, r2.lens[r2.have++] = b; + else { + if (16 === b) { + for (z = _ + 2; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 >>>= _, l2 -= _, 0 === r2.have) { + e2.msg = "invalid bit length repeat", r2.mode = 30; + break; + } + k = r2.lens[r2.have - 1], d = 3 + (3 & u2), u2 >>>= 2, l2 -= 2; + } else if (17 === b) { + for (z = _ + 3; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + l2 -= _, k = 0, d = 3 + (7 & (u2 >>>= _)), u2 >>>= 3, l2 -= 3; + } else { + for (z = _ + 7; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + l2 -= _, k = 0, d = 11 + (127 & (u2 >>>= _)), u2 >>>= 7, l2 -= 7; + } + if (r2.have + d > r2.nlen + r2.ndist) { + e2.msg = "invalid bit length repeat", r2.mode = 30; + break; + } + for (; d--; ) + r2.lens[r2.have++] = k; + } + } + if (30 === r2.mode) + break; + if (0 === r2.lens[256]) { + e2.msg = "invalid code -- missing end-of-block", r2.mode = 30; + break; + } + if (r2.lenbits = 9, S = { bits: r2.lenbits }, x = T(D, r2.lens, 0, r2.nlen, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { + e2.msg = "invalid literal/lengths set", r2.mode = 30; + break; + } + if (r2.distbits = 6, r2.distcode = r2.distdyn, S = { bits: r2.distbits }, x = T(F, r2.lens, r2.nlen, r2.ndist, r2.distcode, 0, r2.work, S), r2.distbits = S.bits, x) { + e2.msg = "invalid distances set", r2.mode = 30; + break; + } + if (r2.mode = 20, 6 === t2) + break e; + case 20: + r2.mode = 21; + case 21: + if (6 <= o2 && 258 <= h2) { + e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, R(e2, c2), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, 12 === r2.mode && (r2.back = -1); + break; + } + for (r2.back = 0; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (g && 0 == (240 & g)) { + for (v = _, y = g, w = b; g = (C = r2.lencode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + u2 >>>= v, l2 -= v, r2.back += v; + } + if (u2 >>>= _, l2 -= _, r2.back += _, r2.length = b, 0 === g) { + r2.mode = 26; + break; + } + if (32 & g) { + r2.back = -1, r2.mode = 12; + break; + } + if (64 & g) { + e2.msg = "invalid literal/length code", r2.mode = 30; + break; + } + r2.extra = 15 & g, r2.mode = 22; + case 22: + if (r2.extra) { + for (z = r2.extra; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.length += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; + } + r2.was = r2.length, r2.mode = 23; + case 23: + for (; g = (C = r2.distcode[u2 & (1 << r2.distbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (0 == (240 & g)) { + for (v = _, y = g, w = b; g = (C = r2.distcode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + u2 >>>= v, l2 -= v, r2.back += v; + } + if (u2 >>>= _, l2 -= _, r2.back += _, 64 & g) { + e2.msg = "invalid distance code", r2.mode = 30; + break; + } + r2.offset = b, r2.extra = 15 & g, r2.mode = 24; + case 24: + if (r2.extra) { + for (z = r2.extra; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.offset += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; + } + if (r2.offset > r2.dmax) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break; + } + r2.mode = 25; + case 25: + if (0 === h2) + break e; + if (d = c2 - h2, r2.offset > d) { + if ((d = r2.offset - d) > r2.whave && r2.sane) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break; + } + p = d > r2.wnext ? (d -= r2.wnext, r2.wsize - d) : r2.wnext - d, d > r2.length && (d = r2.length), m = r2.window; + } else + m = i2, p = a2 - r2.offset, d = r2.length; + for (h2 < d && (d = h2), h2 -= d, r2.length -= d; i2[a2++] = m[p++], --d; ) + ; + 0 === r2.length && (r2.mode = 21); + break; + case 26: + if (0 === h2) + break e; + i2[a2++] = r2.length, h2--, r2.mode = 21; + break; + case 27: + if (r2.wrap) { + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 |= n2[s2++] << l2, l2 += 8; + } + if (c2 -= h2, e2.total_out += c2, r2.total += c2, c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, a2 - c2) : O(r2.check, i2, c2, a2 - c2)), c2 = h2, (r2.flags ? u2 : L(u2)) !== r2.check) { + e2.msg = "incorrect data check", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.mode = 28; + case 28: + if (r2.wrap && r2.flags) { + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 !== (4294967295 & r2.total)) { + e2.msg = "incorrect length check", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.mode = 29; + case 29: + x = 1; + break e; + case 30: + x = -3; + break e; + case 31: + return -4; + case 32: + default: + return U; + } + return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, (r2.wsize || c2 !== e2.avail_out && r2.mode < 30 && (r2.mode < 27 || 4 !== t2)) && Z(e2, e2.output, e2.next_out, c2 - e2.avail_out) ? (r2.mode = 31, -4) : (f2 -= e2.avail_in, c2 -= e2.avail_out, e2.total_in += f2, e2.total_out += c2, r2.total += c2, r2.wrap && c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, e2.next_out - c2) : O(r2.check, i2, c2, e2.next_out - c2)), e2.data_type = r2.bits + (r2.last ? 64 : 0) + (12 === r2.mode ? 128 : 0) + (20 === r2.mode || 15 === r2.mode ? 256 : 0), (0 == f2 && 0 === c2 || 4 === t2) && x === N && (x = -5), x); + }, r.inflateEnd = function(e2) { + if (!e2 || !e2.state) + return U; + var t2 = e2.state; + return t2.window && (t2.window = null), e2.state = null, N; + }, r.inflateGetHeader = function(e2, t2) { + var r2; + return e2 && e2.state ? 0 == (2 & (r2 = e2.state).wrap) ? U : ((r2.head = t2).done = false, N) : U; + }, r.inflateSetDictionary = function(e2, t2) { + var r2, n2 = t2.length; + return e2 && e2.state ? 0 !== (r2 = e2.state).wrap && 11 !== r2.mode ? U : 11 === r2.mode && O(1, t2, n2, 0) !== r2.check ? -3 : Z(e2, t2, n2, n2) ? (r2.mode = 31, -4) : (r2.havedict = 1, N) : U; + }, r.inflateInfo = "pako inflate (from Nodeca project)"; + }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e, t, r) { + "use strict"; + var D = e("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; + t.exports = function(e2, t2, r2, n, i, s, a, o) { + var h, u, l, f, c, d, p, m, _, g = o.bits, b = 0, v = 0, y = 0, w = 0, k = 0, x = 0, S = 0, z = 0, C = 0, E = 0, A = null, I = 0, O = new D.Buf16(16), B = new D.Buf16(16), R = null, T = 0; + for (b = 0; b <= 15; b++) + O[b] = 0; + for (v = 0; v < n; v++) + O[t2[r2 + v]]++; + for (k = g, w = 15; 1 <= w && 0 === O[w]; w--) + ; + if (w < k && (k = w), 0 === w) + return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0; + for (y = 1; y < w && 0 === O[y]; y++) + ; + for (k < y && (k = y), b = z = 1; b <= 15; b++) + if (z <<= 1, (z -= O[b]) < 0) + return -1; + if (0 < z && (0 === e2 || 1 !== w)) + return -1; + for (B[1] = 0, b = 1; b < 15; b++) + B[b + 1] = B[b] + O[b]; + for (v = 0; v < n; v++) + 0 !== t2[r2 + v] && (a[B[t2[r2 + v]]++] = v); + if (d = 0 === e2 ? (A = R = a, 19) : 1 === e2 ? (A = F, I -= 257, R = N, T -= 257, 256) : (A = U, R = P, -1), b = y, c = s, S = v = E = 0, l = -1, f = (C = 1 << (x = k)) - 1, 1 === e2 && 852 < C || 2 === e2 && 592 < C) + return 1; + for (; ; ) { + for (p = b - S, _ = a[v] < d ? (m = 0, a[v]) : a[v] > d ? (m = R[T + a[v]], A[I + a[v]]) : (m = 96, 0), h = 1 << b - S, y = u = 1 << x; i[c + (E >> S) + (u -= h)] = p << 24 | m << 16 | _ | 0, 0 !== u; ) + ; + for (h = 1 << b - 1; E & h; ) + h >>= 1; + if (0 !== h ? (E &= h - 1, E += h) : E = 0, v++, 0 == --O[b]) { + if (b === w) + break; + b = t2[r2 + a[v]]; + } + if (k < b && (E & f) !== l) { + for (0 === S && (S = k), c += y, z = 1 << (x = b - S); x + S < w && !((z -= O[x + S]) <= 0); ) + x++, z <<= 1; + if (C += 1 << x, 1 === e2 && 852 < C || 2 === e2 && 592 < C) + return 1; + i[l = E & f] = k << 24 | x << 16 | c - s | 0; + } + } + return 0 !== E && (i[c + E] = b - S << 24 | 64 << 16 | 0), o.bits = k, 0; + }; + }, { "../utils/common": 41 }], 51: [function(e, t, r) { + "use strict"; + t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; + }, {}], 52: [function(e, t, r) { + "use strict"; + var i = e("../utils/common"), o = 0, h = 1; + function n(e2) { + for (var t2 = e2.length; 0 <= --t2; ) + e2[t2] = 0; + } + var s = 0, a = 29, u = 256, l = u + 1 + a, f = 30, c = 19, _ = 2 * l + 1, g = 15, d = 16, p = 7, m = 256, b = 16, v = 17, y = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z = new Array(2 * (l + 2)); + n(z); + var C = new Array(2 * f); + n(C); + var E = new Array(512); + n(E); + var A = new Array(256); + n(A); + var I = new Array(a); + n(I); + var O, B, R, T = new Array(f); + function D(e2, t2, r2, n2, i2) { + this.static_tree = e2, this.extra_bits = t2, this.extra_base = r2, this.elems = n2, this.max_length = i2, this.has_stree = e2 && e2.length; + } + function F(e2, t2) { + this.dyn_tree = e2, this.max_code = 0, this.stat_desc = t2; + } + function N(e2) { + return e2 < 256 ? E[e2] : E[256 + (e2 >>> 7)]; + } + function U(e2, t2) { + e2.pending_buf[e2.pending++] = 255 & t2, e2.pending_buf[e2.pending++] = t2 >>> 8 & 255; + } + function P(e2, t2, r2) { + e2.bi_valid > d - r2 ? (e2.bi_buf |= t2 << e2.bi_valid & 65535, U(e2, e2.bi_buf), e2.bi_buf = t2 >> d - e2.bi_valid, e2.bi_valid += r2 - d) : (e2.bi_buf |= t2 << e2.bi_valid & 65535, e2.bi_valid += r2); + } + function L(e2, t2, r2) { + P(e2, r2[2 * t2], r2[2 * t2 + 1]); + } + function j(e2, t2) { + for (var r2 = 0; r2 |= 1 & e2, e2 >>>= 1, r2 <<= 1, 0 < --t2; ) + ; + return r2 >>> 1; + } + function Z(e2, t2, r2) { + var n2, i2, s2 = new Array(g + 1), a2 = 0; + for (n2 = 1; n2 <= g; n2++) + s2[n2] = a2 = a2 + r2[n2 - 1] << 1; + for (i2 = 0; i2 <= t2; i2++) { + var o2 = e2[2 * i2 + 1]; + 0 !== o2 && (e2[2 * i2] = j(s2[o2]++, o2)); + } + } + function W(e2) { + var t2; + for (t2 = 0; t2 < l; t2++) + e2.dyn_ltree[2 * t2] = 0; + for (t2 = 0; t2 < f; t2++) + e2.dyn_dtree[2 * t2] = 0; + for (t2 = 0; t2 < c; t2++) + e2.bl_tree[2 * t2] = 0; + e2.dyn_ltree[2 * m] = 1, e2.opt_len = e2.static_len = 0, e2.last_lit = e2.matches = 0; + } + function M(e2) { + 8 < e2.bi_valid ? U(e2, e2.bi_buf) : 0 < e2.bi_valid && (e2.pending_buf[e2.pending++] = e2.bi_buf), e2.bi_buf = 0, e2.bi_valid = 0; + } + function H(e2, t2, r2, n2) { + var i2 = 2 * t2, s2 = 2 * r2; + return e2[i2] < e2[s2] || e2[i2] === e2[s2] && n2[t2] <= n2[r2]; + } + function G(e2, t2, r2) { + for (var n2 = e2.heap[r2], i2 = r2 << 1; i2 <= e2.heap_len && (i2 < e2.heap_len && H(t2, e2.heap[i2 + 1], e2.heap[i2], e2.depth) && i2++, !H(t2, n2, e2.heap[i2], e2.depth)); ) + e2.heap[r2] = e2.heap[i2], r2 = i2, i2 <<= 1; + e2.heap[r2] = n2; + } + function K(e2, t2, r2) { + var n2, i2, s2, a2, o2 = 0; + if (0 !== e2.last_lit) + for (; n2 = e2.pending_buf[e2.d_buf + 2 * o2] << 8 | e2.pending_buf[e2.d_buf + 2 * o2 + 1], i2 = e2.pending_buf[e2.l_buf + o2], o2++, 0 === n2 ? L(e2, i2, t2) : (L(e2, (s2 = A[i2]) + u + 1, t2), 0 !== (a2 = w[s2]) && P(e2, i2 -= I[s2], a2), L(e2, s2 = N(--n2), r2), 0 !== (a2 = k[s2]) && P(e2, n2 -= T[s2], a2)), o2 < e2.last_lit; ) + ; + L(e2, m, t2); + } + function Y(e2, t2) { + var r2, n2, i2, s2 = t2.dyn_tree, a2 = t2.stat_desc.static_tree, o2 = t2.stat_desc.has_stree, h2 = t2.stat_desc.elems, u2 = -1; + for (e2.heap_len = 0, e2.heap_max = _, r2 = 0; r2 < h2; r2++) + 0 !== s2[2 * r2] ? (e2.heap[++e2.heap_len] = u2 = r2, e2.depth[r2] = 0) : s2[2 * r2 + 1] = 0; + for (; e2.heap_len < 2; ) + s2[2 * (i2 = e2.heap[++e2.heap_len] = u2 < 2 ? ++u2 : 0)] = 1, e2.depth[i2] = 0, e2.opt_len--, o2 && (e2.static_len -= a2[2 * i2 + 1]); + for (t2.max_code = u2, r2 = e2.heap_len >> 1; 1 <= r2; r2--) + G(e2, s2, r2); + for (i2 = h2; r2 = e2.heap[1], e2.heap[1] = e2.heap[e2.heap_len--], G(e2, s2, 1), n2 = e2.heap[1], e2.heap[--e2.heap_max] = r2, e2.heap[--e2.heap_max] = n2, s2[2 * i2] = s2[2 * r2] + s2[2 * n2], e2.depth[i2] = (e2.depth[r2] >= e2.depth[n2] ? e2.depth[r2] : e2.depth[n2]) + 1, s2[2 * r2 + 1] = s2[2 * n2 + 1] = i2, e2.heap[1] = i2++, G(e2, s2, 1), 2 <= e2.heap_len; ) + ; + e2.heap[--e2.heap_max] = e2.heap[1], function(e3, t3) { + var r3, n3, i3, s3, a3, o3, h3 = t3.dyn_tree, u3 = t3.max_code, l2 = t3.stat_desc.static_tree, f2 = t3.stat_desc.has_stree, c2 = t3.stat_desc.extra_bits, d2 = t3.stat_desc.extra_base, p2 = t3.stat_desc.max_length, m2 = 0; + for (s3 = 0; s3 <= g; s3++) + e3.bl_count[s3] = 0; + for (h3[2 * e3.heap[e3.heap_max] + 1] = 0, r3 = e3.heap_max + 1; r3 < _; r3++) + p2 < (s3 = h3[2 * h3[2 * (n3 = e3.heap[r3]) + 1] + 1] + 1) && (s3 = p2, m2++), h3[2 * n3 + 1] = s3, u3 < n3 || (e3.bl_count[s3]++, a3 = 0, d2 <= n3 && (a3 = c2[n3 - d2]), o3 = h3[2 * n3], e3.opt_len += o3 * (s3 + a3), f2 && (e3.static_len += o3 * (l2[2 * n3 + 1] + a3))); + if (0 !== m2) { + do { + for (s3 = p2 - 1; 0 === e3.bl_count[s3]; ) + s3--; + e3.bl_count[s3]--, e3.bl_count[s3 + 1] += 2, e3.bl_count[p2]--, m2 -= 2; + } while (0 < m2); + for (s3 = p2; 0 !== s3; s3--) + for (n3 = e3.bl_count[s3]; 0 !== n3; ) + u3 < (i3 = e3.heap[--r3]) || (h3[2 * i3 + 1] !== s3 && (e3.opt_len += (s3 - h3[2 * i3 + 1]) * h3[2 * i3], h3[2 * i3 + 1] = s3), n3--); + } + }(e2, t2), Z(s2, u2, e2.bl_count); + } + function X(e2, t2, r2) { + var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; + for (0 === a2 && (h2 = 138, u2 = 3), t2[2 * (r2 + 1) + 1] = 65535, n2 = 0; n2 <= r2; n2++) + i2 = a2, a2 = t2[2 * (n2 + 1) + 1], ++o2 < h2 && i2 === a2 || (o2 < u2 ? e2.bl_tree[2 * i2] += o2 : 0 !== i2 ? (i2 !== s2 && e2.bl_tree[2 * i2]++, e2.bl_tree[2 * b]++) : o2 <= 10 ? e2.bl_tree[2 * v]++ : e2.bl_tree[2 * y]++, s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4)); + } + function V(e2, t2, r2) { + var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; + for (0 === a2 && (h2 = 138, u2 = 3), n2 = 0; n2 <= r2; n2++) + if (i2 = a2, a2 = t2[2 * (n2 + 1) + 1], !(++o2 < h2 && i2 === a2)) { + if (o2 < u2) + for (; L(e2, i2, e2.bl_tree), 0 != --o2; ) + ; + else + 0 !== i2 ? (i2 !== s2 && (L(e2, i2, e2.bl_tree), o2--), L(e2, b, e2.bl_tree), P(e2, o2 - 3, 2)) : o2 <= 10 ? (L(e2, v, e2.bl_tree), P(e2, o2 - 3, 3)) : (L(e2, y, e2.bl_tree), P(e2, o2 - 11, 7)); + s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4); + } + } + n(T); + var q = false; + function J(e2, t2, r2, n2) { + P(e2, (s << 1) + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { + M(e3), n3 && (U(e3, r3), U(e3, ~r3)), i.arraySet(e3.pending_buf, e3.window, t3, r3, e3.pending), e3.pending += r3; + }(e2, t2, r2, true); + } + r._tr_init = function(e2) { + q || (function() { + var e3, t2, r2, n2, i2, s2 = new Array(g + 1); + for (n2 = r2 = 0; n2 < a - 1; n2++) + for (I[n2] = r2, e3 = 0; e3 < 1 << w[n2]; e3++) + A[r2++] = n2; + for (A[r2 - 1] = n2, n2 = i2 = 0; n2 < 16; n2++) + for (T[n2] = i2, e3 = 0; e3 < 1 << k[n2]; e3++) + E[i2++] = n2; + for (i2 >>= 7; n2 < f; n2++) + for (T[n2] = i2 << 7, e3 = 0; e3 < 1 << k[n2] - 7; e3++) + E[256 + i2++] = n2; + for (t2 = 0; t2 <= g; t2++) + s2[t2] = 0; + for (e3 = 0; e3 <= 143; ) + z[2 * e3 + 1] = 8, e3++, s2[8]++; + for (; e3 <= 255; ) + z[2 * e3 + 1] = 9, e3++, s2[9]++; + for (; e3 <= 279; ) + z[2 * e3 + 1] = 7, e3++, s2[7]++; + for (; e3 <= 287; ) + z[2 * e3 + 1] = 8, e3++, s2[8]++; + for (Z(z, l + 1, s2), e3 = 0; e3 < f; e3++) + C[2 * e3 + 1] = 5, C[2 * e3] = j(e3, 5); + O = new D(z, w, u + 1, l, g), B = new D(C, k, 0, f, g), R = new D(new Array(0), x, 0, c, p); + }(), q = true), e2.l_desc = new F(e2.dyn_ltree, O), e2.d_desc = new F(e2.dyn_dtree, B), e2.bl_desc = new F(e2.bl_tree, R), e2.bi_buf = 0, e2.bi_valid = 0, W(e2); + }, r._tr_stored_block = J, r._tr_flush_block = function(e2, t2, r2, n2) { + var i2, s2, a2 = 0; + 0 < e2.level ? (2 === e2.strm.data_type && (e2.strm.data_type = function(e3) { + var t3, r3 = 4093624447; + for (t3 = 0; t3 <= 31; t3++, r3 >>>= 1) + if (1 & r3 && 0 !== e3.dyn_ltree[2 * t3]) + return o; + if (0 !== e3.dyn_ltree[18] || 0 !== e3.dyn_ltree[20] || 0 !== e3.dyn_ltree[26]) + return h; + for (t3 = 32; t3 < u; t3++) + if (0 !== e3.dyn_ltree[2 * t3]) + return h; + return o; + }(e2)), Y(e2, e2.l_desc), Y(e2, e2.d_desc), a2 = function(e3) { + var t3; + for (X(e3, e3.dyn_ltree, e3.l_desc.max_code), X(e3, e3.dyn_dtree, e3.d_desc.max_code), Y(e3, e3.bl_desc), t3 = c - 1; 3 <= t3 && 0 === e3.bl_tree[2 * S[t3] + 1]; t3--) + ; + return e3.opt_len += 3 * (t3 + 1) + 5 + 5 + 4, t3; + }(e2), i2 = e2.opt_len + 3 + 7 >>> 3, (s2 = e2.static_len + 3 + 7 >>> 3) <= i2 && (i2 = s2)) : i2 = s2 = r2 + 5, r2 + 4 <= i2 && -1 !== t2 ? J(e2, t2, r2, n2) : 4 === e2.strategy || s2 === i2 ? (P(e2, 2 + (n2 ? 1 : 0), 3), K(e2, z, C)) : (P(e2, 4 + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { + var i3; + for (P(e3, t3 - 257, 5), P(e3, r3 - 1, 5), P(e3, n3 - 4, 4), i3 = 0; i3 < n3; i3++) + P(e3, e3.bl_tree[2 * S[i3] + 1], 3); + V(e3, e3.dyn_ltree, t3 - 1), V(e3, e3.dyn_dtree, r3 - 1); + }(e2, e2.l_desc.max_code + 1, e2.d_desc.max_code + 1, a2 + 1), K(e2, e2.dyn_ltree, e2.dyn_dtree)), W(e2), n2 && M(e2); + }, r._tr_tally = function(e2, t2, r2) { + return e2.pending_buf[e2.d_buf + 2 * e2.last_lit] = t2 >>> 8 & 255, e2.pending_buf[e2.d_buf + 2 * e2.last_lit + 1] = 255 & t2, e2.pending_buf[e2.l_buf + e2.last_lit] = 255 & r2, e2.last_lit++, 0 === t2 ? e2.dyn_ltree[2 * r2]++ : (e2.matches++, t2--, e2.dyn_ltree[2 * (A[r2] + u + 1)]++, e2.dyn_dtree[2 * N(t2)]++), e2.last_lit === e2.lit_bufsize - 1; + }, r._tr_align = function(e2) { + P(e2, 2, 3), L(e2, m, z), function(e3) { + 16 === e3.bi_valid ? (U(e3, e3.bi_buf), e3.bi_buf = 0, e3.bi_valid = 0) : 8 <= e3.bi_valid && (e3.pending_buf[e3.pending++] = 255 & e3.bi_buf, e3.bi_buf >>= 8, e3.bi_valid -= 8); + }(e2); + }; + }, { "../utils/common": 41 }], 53: [function(e, t, r) { + "use strict"; + t.exports = function() { + this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; + }; + }, {}], 54: [function(e, t, r) { + (function(e2) { + !function(r2, n) { + "use strict"; + if (!r2.setImmediate) { + var i, s, t2, a, o = 1, h = {}, u = false, l = r2.document, e3 = Object.getPrototypeOf && Object.getPrototypeOf(r2); + e3 = e3 && e3.setTimeout ? e3 : r2, i = "[object process]" === {}.toString.call(r2.process) ? function(e4) { + process.nextTick(function() { + c(e4); + }); + } : function() { + if (r2.postMessage && !r2.importScripts) { + var e4 = true, t3 = r2.onmessage; + return r2.onmessage = function() { + e4 = false; + }, r2.postMessage("", "*"), r2.onmessage = t3, e4; + } + }() ? (a = "setImmediate$" + Math.random() + "$", r2.addEventListener ? r2.addEventListener("message", d, false) : r2.attachEvent("onmessage", d), function(e4) { + r2.postMessage(a + e4, "*"); + }) : r2.MessageChannel ? ((t2 = new MessageChannel()).port1.onmessage = function(e4) { + c(e4.data); + }, function(e4) { + t2.port2.postMessage(e4); + }) : l && "onreadystatechange" in l.createElement("script") ? (s = l.documentElement, function(e4) { + var t3 = l.createElement("script"); + t3.onreadystatechange = function() { + c(e4), t3.onreadystatechange = null, s.removeChild(t3), t3 = null; + }, s.appendChild(t3); + }) : function(e4) { + setTimeout(c, 0, e4); + }, e3.setImmediate = function(e4) { + "function" != typeof e4 && (e4 = new Function("" + e4)); + for (var t3 = new Array(arguments.length - 1), r3 = 0; r3 < t3.length; r3++) + t3[r3] = arguments[r3 + 1]; + var n2 = { callback: e4, args: t3 }; + return h[o] = n2, i(o), o++; + }, e3.clearImmediate = f; + } + function f(e4) { + delete h[e4]; + } + function c(e4) { + if (u) + setTimeout(c, 0, e4); + else { + var t3 = h[e4]; + if (t3) { + u = true; + try { + !function(e5) { + var t4 = e5.callback, r3 = e5.args; + switch (r3.length) { + case 0: + t4(); + break; + case 1: + t4(r3[0]); + break; + case 2: + t4(r3[0], r3[1]); + break; + case 3: + t4(r3[0], r3[1], r3[2]); + break; + default: + t4.apply(n, r3); + } + }(t3); + } finally { + f(e4), u = false; + } + } + } + } + function d(e4) { + e4.source === r2 && "string" == typeof e4.data && 0 === e4.data.indexOf(a) && c(+e4.data.slice(a.length)); + } + }("undefined" == typeof self ? void 0 === e2 ? this : e2 : self); + }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); + }, {}] }, {}, [10])(10); + }); + } + }); + + // ../components/smart-camera-web.js + var VERSION = "1.0.2"; + var DEFAULT_NO_OF_LIVENESS_FRAMES = 8; + var PORTRAIT_ID_PREVIEW_WIDTH = 396; + var PORTRAIT_ID_PREVIEW_HEIGHT = 527; + function isSamsungMultiCameraDevice() { + const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\d{3}/); + if (!matchedModelNumber) { + return false; + } + const modelNumber = parseInt(matchedModelNumber[0].match(/\d{3}/)[0], 10); + const smallerModelNumber = 970; + return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber; + } + function getLivenessFramesIndices(totalNoOfFrames, numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES) { + const selectedFrames = []; + if (totalNoOfFrames < numberOfFramesRequired) { + throw new Error("SmartCameraWeb: Minimum required no of frames is ", numberOfFramesRequired); + } + const frameDivisor = numberOfFramesRequired - 1; + const frameInterval = Math.floor(totalNoOfFrames / frameDivisor); + let replacementFrameIndex = 1; + for (let i = 0; i < totalNoOfFrames; i += frameInterval) { + if (selectedFrames.length < 8) { + selectedFrames.push(i); + } else { + selectedFrames[replacementFrameIndex] = i; + selectedFrames.sort((a, b) => a - b); + replacementFrameIndex += 1; + } + } + const lastFrameIndex = totalNoOfFrames - 1; + if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) { + selectedFrames.push(lastFrameIndex); + } + return selectedFrames; + } + var SmartFileUpload = class _SmartFileUpload { + static memoryLimit = 1024e4; + static supportedTypes = ["image/jpeg", "image/png"]; + static getHumanSize(numberOfBytes) { + const units = [ + "B", + "kB", + "MB", + "GB", + "TB", + "PB", + "EB", + "ZB", + "YB" + ]; + const exponent = Math.min( + Math.floor(Math.log(numberOfBytes) / Math.log(1024)), + units.length - 1 + ); + const approx = numberOfBytes / 1024 ** exponent; + const output = exponent === 0 ? `${numberOfBytes} bytes` : `${approx.toFixed(0)} ${units[exponent]}`; + return output; + } + static getData(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = (e) => { + resolve(e.target.result); + }; + reader.onerror = () => { + reject(new Error("An error occurred reading the file. Please check the file, and try again")); + }; + reader.readAsDataURL(file); + }); + } + static async retrieve(files) { + if (files.length > 1) { + throw new Error("Only one file upload is permitted at a time"); + } + const file = files[0]; + if (!_SmartFileUpload.supportedTypes.includes(file.type)) { + throw new Error("Unsupported file format. Please ensure that you are providing a JPG or PNG image"); + } + if (file.size > _SmartFileUpload.memoryLimit) { + throw new Error(`${file.name} is too large. Please ensure that the file is less than ${_SmartFileUpload.getHumanSize(_SmartFileUpload.memoryLimit)}.`); + } + const imageAsDataUrl = await _SmartFileUpload.getData(file); + return imageAsDataUrl; + } + }; + function scwTemplateString() { + return ` + + + + + + + + + + + + + + + +
+

+

+
+ +
+ ${this.showNavigation ? ` + + ` : ""} +
+

+ We need access to your camera so that we can take selfie and proof-of-life images. +

+ + + + ${this.hideAttribution ? "" : ` + + `} +
+
+ + + + + + + + + + + + + + + + + + + + + + `; + } + var PoweredBySmileId = class extends HTMLElement { + constructor() { + super(); + const template = document.createElement("template"); + template.innerHTML = ` +

+ + + + + + + + + + + + + + + + + + + +

+ `; + this.attachShadow({ mode: "open" }).appendChild(template.content.cloneNode(true)); + } + }; + function hasMoreThanNColors(data, n = 16) { + const colors = /* @__PURE__ */ new Set(); + for (let i = 0; i < Math.min(data.length, 1e4); i += 4) { + colors.add(data[i] << 16 | data[i + 1] << 8 | data[i + 2]); + if (colors.size > n) { + return true; + } + } + return false; + } + window.customElements.define("powered-by-smile-id", PoweredBySmileId); + var SmartCameraWeb = class extends HTMLElement { + constructor() { + super(); + this.scwTemplateString = scwTemplateString.bind(this); + this.render = () => this.scwTemplateString(); + this.attachShadow({ mode: "open" }); + this.activeScreen = null; + } + setActiveScreen(element) { + this.activeScreen.hidden = true; + element.hidden = false; + this.activeScreen = element; + } + connectedCallback() { + this.shadowRoot.innerHTML = this.render(); + if ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices) { + this.setUpEventListeners(); + } else { + const heading = document.createElement("h1"); + heading.classList.add("error-message"); + heading.textContent = "Your browser does not support this integration"; + this.shadowRoot.innerHTML = heading; + } + } + disconnectedCallback() { + if (this.activeScreen) { + this.activeScreen.hidden = true; + } + this.activeScreen = null; + this.shadowRoot.innerHTML = ""; + } + static get observedAttributes() { + return ["document-capture-modes", "document-type", "hide-back-to-host", "show-navigation"]; + } + attributeChangedCallback(name) { + switch (name) { + case "document-capture-modes": + case "document-type": + case "hide-back-to-host": + case "show-navigation": + this.shadowRoot.innerHTML = this.render(); + this.setUpEventListeners(); + break; + default: + break; + } + } + setUpEventListeners() { + this.errorMessage = this.shadowRoot.querySelector("#error"); + this.requestScreen = this.shadowRoot.querySelector("#request-screen"); + this.activeScreen = this.requestScreen; + this.cameraScreen = this.shadowRoot.querySelector("#camera-screen"); + this.failedImageTestScreen = this.shadowRoot.querySelector("#failed-image-test-screen"); + this.reviewScreen = this.shadowRoot.querySelector("#review-screen"); + this.idEntryScreen = this.shadowRoot.querySelector("#id-entry-screen"); + this.IDCameraScreen = this.shadowRoot.querySelector("#id-camera-screen"); + this.IDReviewScreen = this.shadowRoot.querySelector("#id-review-screen"); + this.backOfIdEntryScreen = this.shadowRoot.querySelector("#back-of-id-entry-screen"); + this.backOfIDCameraScreen = this.shadowRoot.querySelector("#back-of-id-camera-screen"); + this.backOfIDReviewScreen = this.shadowRoot.querySelector("#back-of-id-review-screen"); + this.thanksScreen = this.shadowRoot.querySelector("#thanks-screen"); + this.videoContainer = this.shadowRoot.querySelector(".video-container > .video"); + this.smileCTA = this.shadowRoot.querySelector("#smile-cta"); + this.imageOutline = this.shadowRoot.querySelector("#image-outline path"); + this.startImageCapture = this.shadowRoot.querySelector("#start-image-capture"); + this.captureIDImage = this.shadowRoot.querySelector("#capture-id-image"); + this.captureBackOfIDImage = this.shadowRoot.querySelector("#capture-back-of-id-image"); + this.reviewImage = this.shadowRoot.querySelector("#review-image"); + this.IDReviewImage = this.shadowRoot.querySelector("#id-review-image"); + this.backOfIDReviewImage = this.shadowRoot.querySelector("#back-of-id-review-image"); + this.reStartImageCapture = this.shadowRoot.querySelector("#restart-image-capture"); + this.reCaptureIDImage = this.shadowRoot.querySelector("#re-capture-id-image"); + this.reCaptureBackOfIDImage = this.shadowRoot.querySelector("#re-capture-back-of-id-image"); + this.selectSelfie = this.shadowRoot.querySelector("#select-selfie"); + this.selectIDImage = this.shadowRoot.querySelector("#select-id-image"); + this.selectBackOfIDImage = this.shadowRoot.querySelector("#select-back-of-id-image"); + this.takeDocumentPhotoButton = this.idEntryScreen.querySelector("#take-photo"); + this.uploadDocumentPhotoButton = this.idEntryScreen.querySelector("#upload-photo"); + this.skipBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#skip-this-step"); + this.takeBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#take-photo"); + this.uploadBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#upload-photo"); + this.shadowRoot.querySelector("#request-camera-access").addEventListener("click", () => this.init()); + if (this.showNavigation) { + const backButtons = this.shadowRoot.querySelectorAll(".back-button-exit"); + backButtons.forEach((button) => { + button.addEventListener("click", () => { + this._backAndExit(); + }); + }); + const closeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + closeButtons.forEach((button) => { + button.addEventListener("click", () => { + this._exitSmartCamera(); + }); + }); + } + if (this.takeDocumentPhotoButton) + this.takeDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); + if (this.skipBackOfDocumentPhotoButton) + this.skipBackOfDocumentPhotoButton.addEventListener("click", () => this._skipBackDocument()); + if (this.takeBackOfDocumentPhotoButton) + this.takeBackOfDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); + if (this.uploadDocumentPhotoButton) + this.uploadDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); + if (this.uploadBackOfDocumentPhotoButton) + this.uploadBackOfDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); + this.backToSelfie = this.shadowRoot.querySelector("#back-button-selfie"); + this.backToIdEntryButton = this.shadowRoot.querySelector("#back-button-id-entry"); + this.backToBackIdEntryButton = this.shadowRoot.querySelector("#back-button-back-id-entry"); + this.backToIdImageButton = this.shadowRoot.querySelector("#back-button-id-image"); + if (this.backToSelfie) { + this.backToSelfie.addEventListener("click", () => { + this._reStartImageCapture(); + }); + } + if (this.backToIdEntryButton) { + this.backToIdEntryButton.addEventListener("click", () => { + this.setActiveScreen(this.idEntryScreen); + }); + } + if (this.backToBackIdEntryButton) { + this.backToBackIdEntryButton.addEventListener("click", () => { + this.setActiveScreen(this.backOfIdEntryScreen); + }); + } + if (this.backToIdImageButton) { + this.backToIdImageButton.addEventListener("click", () => { + this.setActiveScreen(this.IDReviewScreen); + }); + } + this.startImageCapture.addEventListener("click", () => { + this._startImageCapture(); + }); + this.selectSelfie.addEventListener("click", () => { + this._selectSelfie(); + }); + this.selectIDImage.addEventListener("click", () => { + this._selectIDImage(); + }); + this.selectBackOfIDImage.addEventListener("click", () => { + this._selectIDImage(true); + }); + this.captureIDImage.addEventListener("click", () => { + this._captureIDImage(); + }); + this.captureBackOfIDImage.addEventListener("click", () => { + this._captureIDImage(); + }); + this.reStartImageCapture.addEventListener("click", () => { + this._reStartImageCapture(); + }); + this.reCaptureIDImage.addEventListener("click", () => { + this._reCaptureIDImage(); + }); + this.reCaptureBackOfIDImage.addEventListener("click", () => { + this._reCaptureIDImage(); + }); + } + init() { + this._videoStreamDurationInMS = 7800; + this._imageCaptureIntervalInMS = 200; + this._data = { + images: [], + partner_params: { + libraryVersion: VERSION, + permissionGranted: false + } + }; + this._rawImages = []; + navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { + this.handleSuccess(stream); + }).catch((e) => { + this.handleError(e); + }); + } + reset() { + this.disconnectedCallback(); + this.connectedCallback(); + } + resetErrorMessage() { + this.errorMessage.textContent = ""; + } + handleSuccess(stream) { + const videoExists = !!this.videoContainer.querySelector("video"); + const video = videoExists ? this.videoContainer.querySelector("video") : document.createElement("video"); + video.autoplay = true; + video.playsInline = true; + video.muted = true; + if ("srcObject" in video) { + video.srcObject = stream; + } else { + video.src = window.URL.createObjectURL(stream); + } + video.play(); + if (!videoExists) + this.videoContainer.prepend(video); + this._data.partner_params.permissionGranted = true; + this.setActiveScreen(this.cameraScreen); + this._stream = stream; + this._video = video; + } + handleIDStream(stream) { + const videoExists = this.activeScreen === this.IDCameraScreen ? !!this.IDCameraScreen.querySelector("video") : !!this.backOfIDCameraScreen.querySelector("video"); + let video = null; + if (videoExists) { + if (this.activeScreen === this.IDCameraScreen) { + video = this.IDCameraScreen.querySelector("video"); + } else { + video = this.backOfIDCameraScreen.querySelector("video"); + } + } else { + video = document.createElement("video"); + } + video.autoplay = true; + video.playsInline = true; + video.muted = true; + if ("srcObject" in video) { + video.srcObject = stream; + } else { + video.src = window.URL.createObjectURL(stream); + } + video.play(); + const videoContainer = this.activeScreen === this.IDCameraScreen ? this.IDCameraScreen.querySelector(".id-video-container") : this.backOfIDCameraScreen.querySelector(".id-video-container"); + video.onloadedmetadata = () => { + videoContainer.querySelector(".actions").hidden = false; + }; + if (!videoExists) { + videoContainer.prepend(video); + } + this._IDStream = stream; + this._IDVideo = video; + } + handleError(e) { + switch (e.name) { + case "NotAllowedError": + case "SecurityError": + this.errorMessage.textContent = ` + Looks like camera access was not granted, or was blocked by a browser + level setting / extension. Please follow the prompt from the URL bar, + or extensions, and enable access. + You may need to refresh to start all over again + `; + break; + case "AbortError": + this.errorMessage.textContent = ` + Oops! Something happened, and we lost access to your stream. + Please refresh to start all over again + `; + break; + case "NotReadableError": + this.errorMessage.textContent = ` + There seems to be a problem with your device's camera, or its connection. + Please check this, and when resolved, try again. Or try another device. + `; + break; + case "NotFoundError": + this.errorMessage.textContent = ` + We are unable to find a video stream. + You may need to refresh to start all over again + `; + break; + case "TypeError": + this.errorMessage.textContent = ` + This site is insecure, and as such cannot have access to your camera. + Try to navigate to a secure version of this page, or contact the owner. + `; + break; + default: + this.errorMessage.textContent = e.message; + } + } + _startImageCapture() { + this.startImageCapture.disabled = true; + const imageOutlineLength = this.imageOutline.getTotalLength(); + this.imageOutline.style.transition = "none"; + this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`; + this.imageOutline.style.strokeDashoffset = imageOutlineLength; + this.imageOutline.getBoundingClientRect(); + this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1e3}s ease-in-out`; + this.imageOutline.style.strokeDashoffset = "0"; + this.smileCTA.style.animation = `fadeInOut ease ${this._videoStreamDurationInMS / 1e3}s`; + this._imageCaptureInterval = setInterval(() => { + this._capturePOLPhoto(); + }, this._imageCaptureIntervalInMS); + this._videoStreamTimeout = setTimeout(() => { + this._stopVideoStream(this._stream); + }, this._videoStreamDurationInMS); + } + _captureIDImage() { + const image = this._drawIDImage(); + if (this.activeScreen === this.IDCameraScreen) { + this.IDReviewImage.src = image; + } else { + this.backOfIDReviewImage.src = image; + } + this._data.images.push({ + image: image.split(",")[1], + image_type_id: this.activeScreen === this.IDCameraScreen ? 3 : 7 + }); + this._stopIDVideoStream(); + if (this.activeScreen === this.IDCameraScreen) { + this.setActiveScreen(this.IDReviewScreen); + } else { + this.setActiveScreen(this.backOfIDReviewScreen); + } + } + _drawImage(canvas, enableImageTests = true, video = this._video) { + this.resetErrorMessage(); + const context = canvas.getContext("2d"); + context.drawImage( + video, + 0, + 0, + video.videoWidth, + video.videoHeight, + 0, + 0, + canvas.width, + canvas.height + ); + if (enableImageTests) { + const imageData = context.getImageData(0, 0, canvas.width, canvas.height); + const hasEnoughColors = hasMoreThanNColors(imageData.data); + if (hasEnoughColors) { + return context; + } + throw new Error("Unable to capture webcam images - Please try another device"); + } else { + return context; + } + } + _capturePOLPhoto() { + const canvas = document.createElement("canvas"); + canvas.width = 240; + canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; + this._drawImage(canvas, false); + this._rawImages.push(canvas.toDataURL("image/jpeg")); + } + _captureReferencePhoto() { + const canvas = document.createElement("canvas"); + canvas.width = 480; + canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; + this._drawImage(canvas, !this.disableImageTests); + const image = canvas.toDataURL("image/jpeg"); + this._referenceImage = image; + this._data.images.push({ + image: image.split(",")[1], + image_type_id: 2 + }); + } + _skipBackDocument() { + this._publishSelectedImages(); + } + async _uploadDocument(event) { + this.resetErrorMessage(); + try { + const { files } = event.target; + const fileData = await SmartFileUpload.retrieve(files); + this._data.images.push({ + // NOTE: data URLs start with a file type before the base64 data, + // separated by a comma. + // + // we are only interested in the base64 segment, so we extract it + image: fileData.split(",")[1], + image_type_id: this.activeScreen === this.idEntryScreen ? 3 : 7 + }); + const nextScreen = this.activeScreen === this.idEntryScreen ? this.IDReviewScreen : this.backOfIDReviewScreen; + const previewImage = nextScreen.querySelector("img"); + previewImage.src = fileData; + this.setActiveScreen(nextScreen); + } catch (error) { + this.handleError(error); + } + } + _drawIDImage(video = this._IDVideo) { + const canvas = document.createElement("canvas"); + if (this.isPortraitCaptureView) { + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + const ctx = canvas.getContext("2d"); + ctx.drawImage(video, 0, 0, canvas.width, canvas.height); + const previewWidth = PORTRAIT_ID_PREVIEW_WIDTH; + const previewHeight = PORTRAIT_ID_PREVIEW_HEIGHT; + const paddingPercent = 0.5; + const paddedWidth = previewWidth * (1 + paddingPercent); + const paddedHeight = previewHeight * (1 + paddingPercent); + const cropWidth = paddedWidth; + const cropHeight = paddedHeight; + const cropLeft = (canvas.width - cropWidth) / 2; + const cropTop = (canvas.height - cropHeight) / 2; + const croppedCanvas = document.createElement("canvas"); + croppedCanvas.width = cropWidth; + croppedCanvas.height = cropHeight; + const croppedCtx = croppedCanvas.getContext("2d"); + croppedCtx.drawImage(canvas, cropLeft, cropTop, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); + return croppedCanvas.toDataURL("image/jpeg"); + } + canvas.width = 2240; + canvas.height = 1260; + const context = canvas.getContext("2d"); + const aspectRatio = video.videoWidth / video.videoHeight; + if (aspectRatio < 1) { + const imageFrame = this.activeScreen.querySelector('[class*="image-frame"]:not([hidden]) [href*="image-frame"]'); + const videoBox = video.getBoundingClientRect(); + const frameBox = imageFrame.getBoundingClientRect(); + const sourceXOffset = (frameBox.left - videoBox.left) / videoBox.width * video.videoWidth; + const sourceYOffset = (frameBox.top - videoBox.top) / videoBox.height * video.videoHeight; + const sourceWidth = frameBox.width * (video.videoWidth / videoBox.width); + const sourceHeight = frameBox.height * (video.videoHeight / videoBox.height); + canvas.height = canvas.width * frameBox.height / frameBox.width; + context.drawImage(video, sourceXOffset, sourceYOffset, sourceWidth, sourceHeight, 0, 0, canvas.width, canvas.height); + return canvas.toDataURL("image/jpeg"); + } + context.drawImage(video, 0, 0, canvas.width, canvas.height); + return canvas.toDataURL("image/jpeg"); + } + _stopVideoStream(stream) { + try { + clearTimeout(this._videoStreamTimeout); + clearInterval(this._imageCaptureInterval); + clearInterval(this._drawingInterval); + this.smileCTA.style.animation = "none"; + this._capturePOLPhoto(); + this._captureReferencePhoto(); + stream.getTracks().forEach((track) => track.stop()); + this.reviewImage.src = this._referenceImage; + const totalNoOfFrames = this._rawImages.length; + const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames); + this._data.images = this._data.images.concat(livenessFramesIndices.map((imageIndex) => ({ + image: this._rawImages[imageIndex].split(",")[1], + image_type_id: 6 + }))); + this.setActiveScreen(this.reviewScreen); + } catch (error) { + this.setActiveScreen(this.failedImageTestScreen); + } + } + _stopIDVideoStream(stream = this._IDStream) { + stream.getTracks().forEach((track) => track.stop()); + } + async _startIDCamera() { + try { + const stream = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: { + facingMode: "environment", + width: { min: 1280 }, + // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant) + // "We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges. + // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it." + zoom: isSamsungMultiCameraDevice() ? 2 : 1 + } + }); + if (this.activeScreen === this.idEntryScreen) { + this.setActiveScreen(this.IDCameraScreen); + } else if (this.activeScreen === this.backOfIdEntryScreen) { + this.setActiveScreen(this.backOfIDCameraScreen); + } + this.handleIDStream(stream); + } catch (e) { + this.handleError(e); + } + } + _selectSelfie() { + if (!this.captureID) { + this._publishSelectedImages(); + } else { + this.setActiveScreen(this.idEntryScreen); + } + } + _selectIDImage(backOfIDCaptured = false) { + if (!this.captureBackOfID || backOfIDCaptured) { + this._publishSelectedImages(); + } else { + this.setActiveScreen(this.backOfIdEntryScreen); + } + } + _publishSelectedImages() { + this.dispatchEvent( + new CustomEvent("imagesComputed", { detail: this._data }) + ); + this.setActiveScreen(this.thanksScreen); + } + _exitSmartCamera() { + this.dispatchEvent( + new CustomEvent("close", { detail: {} }) + ); + } + _backAndExit() { + this.dispatchEvent( + new CustomEvent("backExit", { detail: {} }) + ); + } + async _reStartImageCapture() { + this.startImageCapture.disabled = false; + this._rawImages = []; + this._data.images = []; + try { + const stream = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: true + }); + this.handleSuccess(stream); + } catch (e) { + this.handleError(e); + } + } + async _reCaptureIDImage() { + const previousScreen = this.activeScreen === this.IDReviewScreen ? this.idEntryScreen : this.backOfIdEntryScreen; + this.setActiveScreen(previousScreen); + this._data.images.pop(); + } + get captureID() { + return this.hasAttribute("capture-id"); + } + get captureBackOfID() { + return this.getAttribute("capture-id") === "back" || false; + } + get hideAttribution() { + return this.hasAttribute("hide-attribution"); + } + get showNavigation() { + return this.hasAttribute("show-navigation"); + } + get hideBackToHost() { + return this.hasAttribute("hide-back-to-host"); + } + get documentType() { + return this.getAttribute("document-type"); + } + get isPortraitCaptureView() { + return this.getAttribute("document-type") === "GREEN_BOOK"; + } + get documentCaptureModes() { + return this.getAttribute("document-capture-modes") || "camera"; + } + get supportBothCaptureModes() { + const value = this.documentCaptureModes; + return value.includes("camera") && value.includes("upload"); + } + get disableImageTests() { + return this.hasAttribute("disable-image-tests"); + } + get doNotUpload() { + return this.getAttribute("document-capture-modes") === "camera"; + } + }; + window.customElements.define("smart-camera-web", SmartCameraWeb); + + // src/js/enhanced-document-verification.js + var import_jszip = __toESM(require_jszip_min(), 1); + + // package.json + var version = "v1.2.3"; + + // src/js/enhanced-document-verification.js + (function enhancedDocumentVerification() { + "use strict"; + const endpoints = { + sandbox: "https://testapi.smileidentity.com/v1", + live: "https://api.smileidentity.com/v1", + production: "https://api.smileidentity.com/v1" + }; + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); + let config; + let activeScreen; + let id_info; + let images; + let partner_params; + let productConstraints; + const LoadingScreen = document.querySelector("#loading-screen"); + const SelectIDType = document.querySelector("#select-id-type"); + const SmartCameraWeb2 = document.querySelector("smart-camera-web"); + const UploadProgressScreen = document.querySelector( + "#upload-progress-screen" + ); + const UploadFailureScreen = document.querySelector("#upload-failure-screen"); + const CompleteScreen = document.querySelector("#complete-screen"); + const CloseIframeButtons = document.querySelectorAll(".close-iframe"); + const RetryUploadButton = document.querySelector("#retry-upload"); + let fileToUpload; + let uploadURL; + async function getProductConstraints() { + try { + const response = await fetch(`${endpoints[config.environment]}/services`); + const json = await response.json(); + return json.hosted_web.enhanced_document_verification; + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + window.addEventListener( + "message", + async (event) => { + if (event.data && event.data.includes("SmileIdentity::Configuration")) { + config = JSON.parse(event.data); + activeScreen = LoadingScreen; + productConstraints = await getProductConstraints(); + initializeSession(productConstraints); + getPartnerParams(); + } + }, + false + ); + function initializeSession(constraints) { + const supportedCountries = Object.keys(constraints).map((countryCode) => ({ + code: countryCode, + name: constraints[countryCode].name + })).sort((a, b) => { + if (a.name < b.name) { + return -1; + } + if (a.name > b.name) { + return 1; + } + return 0; + }).map((item) => item.code); + let validCountries = []; + if (config.id_selection) { + const selectedCountryList = Object.keys(config.id_selection); + validCountries = supportedCountries.filter( + (value) => selectedCountryList.includes(value) + ); + if (validCountries.length === 1) { + const selectedCountry = validCountries[0]; + id_info = { + country: validCountries[0] + }; + const idTypes = config.id_selection[selectedCountry]; + if (idTypes.length === 1 || typeof idTypes === "string") { + id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; + SmartCameraWeb2.setAttribute("document-type", id_info.id_type); + if (config.document_capture_modes) { + SmartCameraWeb2.setAttribute( + "document-capture-modes", + config.document_capture_modes.join(",") + ); + } + SmartCameraWeb2.setAttribute("hide-back-to-host", true); + setActiveScreen(SmartCameraWeb2); + } + } + } else { + validCountries = supportedCountries; + } + if (!id_info || !id_info.id_type) { + const selectCountry = SelectIDType.querySelector("#country"); + const selectIDType = SelectIDType.querySelector("#id_type"); + const hostedWebConfigForm = document.querySelector( + 'form[name="hosted-web-config"]' + ); + selectCountry.disabled = false; + setActiveScreen(SelectIDType); + const loadIdTypes = (countryCode) => { + if (countryCode) { + const constrainedIDTypes = Object.keys( + productConstraints[countryCode].id_types + ); + const validIDTypes = config.id_selection ? config.id_selection[countryCode] : constrainedIDTypes; + const selectedIDTypes = validIDTypes.filter( + (value) => constrainedIDTypes.includes(value) + ); + selectIDType.innerHTML = ""; + const initialOption = document.createElement("option"); + initialOption.setAttribute("value", ""); + initialOption.textContent = "--Please Select--"; + selectIDType.appendChild(initialOption); + selectedIDTypes.forEach((IDType) => { + const option = document.createElement("option"); + option.setAttribute("value", IDType); + option.textContent = productConstraints[countryCode].id_types[IDType].label; + selectIDType.appendChild(option); + }); + selectIDType.disabled = false; + } else { + selectIDType.innerHTML = ""; + const option = document.createElement("option"); + option.disabled = true; + option.setAttribute("value", ""); + option.textContent = "--Select Country First--"; + selectIDType.appendChild(option); + } + }; + validCountries.forEach((country) => { + const countryObject = productConstraints[country]; + if (countryObject) { + const option = document.createElement("option"); + option.setAttribute("value", country); + option.textContent = constraints[country].name; + if (id_info && id_info.country && country === id_info.country) { + option.setAttribute("selected", true); + selectCountry.value = country; + selectCountry.disabled = true; + loadIdTypes(country); + } + selectCountry.appendChild(option); + } + }); + selectCountry.addEventListener("change", (e) => { + loadIdTypes(e.target.value); + }); + hostedWebConfigForm.addEventListener("submit", (e) => { + e.preventDefault(); + const selectedCountry = selectCountry.value; + const selectedIDType = selectIDType.value; + id_info = { + country: selectedCountry, + id_type: selectedIDType + }; + SmartCameraWeb2.setAttribute("document-type", selectedIDType); + if (config.document_capture_modes) { + SmartCameraWeb2.setAttribute( + "document-capture-modes", + config.document_capture_modes.join(",") + ); + } + setActiveScreen(SmartCameraWeb2); + }); + } + } + function initiateDemoMode() { + const demoTips = document.querySelectorAll(".demo-tip"); + Array.prototype.forEach.call(demoTips, (tip) => { + tip.hidden = false; + }); + const script = document.createElement("script"); + script.type = "text/javascript"; + script.src = "js/demo-doc-verification.min.js"; + document.body.appendChild(script); + } + SmartCameraWeb2.addEventListener( + "imagesComputed", + (event) => { + images = event.detail.images; + setActiveScreen(UploadProgressScreen); + handleFormSubmit(event); + }, + false + ); + SmartCameraWeb2.addEventListener( + "backExit", + () => { + setActiveScreen(SelectIDType); + }, + false + ); + SmartCameraWeb2.addEventListener( + "close", + () => { + closeWindow(); + }, + false + ); + RetryUploadButton.addEventListener( + "click", + () => { + retryUpload(); + }, + false + ); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + closeWindow(); + }, + false + ); + }); + function getPartnerParams() { + function parseJWT(token) { + const base64Url = token.split(".")[1]; + const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); + const jsonPayload = decodeURIComponent( + atob(base64).split("").map(function(c) { + return `%${c.charCodeAt(0).toString(16)}`; + }).join("") + ); + return JSON.parse(jsonPayload); + } + const { partner_params: partnerParams } = parseJWT(config.token); + partner_params = { ...partnerParams, ...config.partner_params || {} }; + } + function setActiveScreen(node) { + activeScreen.hidden = true; + node.hidden = false; + activeScreen = node; + } + async function handleFormSubmit(event) { + event.preventDefault(); + try { + [uploadURL, fileToUpload] = await Promise.all([ + getUploadURL(), + createZip() + ]); + uploadZip(fileToUpload, uploadURL); + } catch (error) { + displayErrorMessage("Something went wrong"); + console.error( + `SmileIdentity - ${error.name || error.message}: ${error.cause}` + ); + } + } + function displayErrorMessage(message) { + const p = document.createElement("p"); + p.textContent = message; + p.style.color = "red"; + p.style.fontSize = "1.5rem"; + p.style.textAlign = "center"; + const main = document.querySelector("main"); + main.prepend(p); + } + async function createZip() { + const zip = new import_jszip.default(); + zip.file( + "info.json", + JSON.stringify({ + package_information: { + language: "Hosted Web Integration", + apiVersion: { + buildNumber: 0, + majorVersion: 2, + minorVersion: 0 + } + }, + id_info, + images + }) + ); + try { + const zipFile = await zip.generateAsync({ type: "blob" }); + return zipFile; + } catch (error) { + throw new Error("createZip failed", { cause: error }); + } + } + async function getUploadURL() { + const payload = { + source_sdk: config.sdk || "hosted_web", + source_sdk_version: config.sdk_version || version, + file_name: `${config.product}.zip`, + smile_client_id: config.partner_details.partner_id, + callback_url: config.callback_url, + token: config.token, + partner_params: { + ...partner_params, + job_type: 11 + } + }; + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + method: "POST", + body: JSON.stringify(payload) + }; + const URL = `${endpoints[config.environment] || config.environment}/upload`; + try { + const response = await fetch(URL, fetchConfig); + const json = await response.json(); + if (json.error) + throw new Error(json.error); + return json.upload_url; + } catch (error) { + throw new Error("getUploadURL failed", { cause: error }); + } + } + function uploadZip(file, destination) { + const request = new XMLHttpRequest(); + request.open("PUT", destination); + request.upload.addEventListener("load", function() { + return request.response; + }); + request.upload.addEventListener("error", function(e) { + setActiveScreen(UploadFailureScreen); + throw new Error("uploadZip failed", { cause: e }); + }); + request.onreadystatechange = function() { + if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { + setActiveScreen(CompleteScreen); + handleSuccess(); + window.setTimeout(closeWindow, 2e3); + } + if (request.readyState === XMLHttpRequest.DONE && request.status !== 200) { + setActiveScreen(UploadFailureScreen); + throw new Error("uploadZip failed", { cause: request }); + } + }; + request.setRequestHeader("Content-type", "application/zip"); + request.send(file); + } + function retryUpload() { + const fileUploaded = uploadZip(fileToUpload, uploadURL); + return fileUploaded; + } + function closeWindow() { + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + function handleSuccess() { + referenceWindow.postMessage("SmileIdentity::Success", "*"); + } + })(); +})(); +/*! Bundled license information: + +jszip/dist/jszip.min.js: + (*! + + JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + + (c) 2009-2016 Stuart Knightley + Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + + JSZip uses the library pako released under the MIT license : + https://github.com/nodeca/pako/blob/main/LICENSE + *) +*/ diff --git a/packages/embed/build/js/product-selection.min.js b/packages/embed/build/js/product-selection.min.js new file mode 100644 index 00000000..dfbabd76 --- /dev/null +++ b/packages/embed/build/js/product-selection.min.js @@ -0,0 +1,281 @@ +(() => { + // src/js/product-selection.js + (function productSelection() { + "use strict"; + const endpoints = { + sandbox: "https://testapi.smileidentity.com/v1", + live: "https://api.smileidentity.com/v1", + production: "https://api.smileidentity.com/v1" + }; + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); + let config; + let verificationMethodMap; + let activeScreen; + const LoadingScreen = document.querySelector("#loading-screen"); + const SelectIdType = document.querySelector("#select-id-type"); + const ConfigForm = document.querySelector('form[name="hosted-web-config"]'); + const CloseIframeButtons = document.querySelectorAll(".close-iframe"); + CloseIframeButtons.forEach((button) => { + button.addEventListener( + "click", + () => { + closeWindow(); + }, + false + ); + }); + function setActiveScreen(element) { + activeScreen.hidden = true; + element.hidden = false; + activeScreen = element; + } + async function getProductConstraints() { + const payload = { + token: config.token, + partner_id: config.partner_details.partner_id + }; + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + method: "POST", + body: JSON.stringify(payload) + }; + try { + const response = await fetch( + `${endpoints[config.environment]}/valid_documents`, + fetchConfig + ); + const json = await response.json(); + return json.valid_documents; + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + async function getLegacyProductConstraints() { + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + method: "GET" + }; + try { + const response = await fetch( + `${endpoints[config.environment]}/services`, + fetchConfig + ); + const json = await response.json(); + return json.hosted_web; + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + function getIdTypeName(country, id_type, productConstraints, legacyProductConstraints) { + const validDocumentsCountry = productConstraints.find( + (item) => item.country.code === country + ); + if (!validDocumentsCountry) { + throw new Error(`SmileIdentity - ${country} is not supported`); + } + let validIdType = validDocumentsCountry.id_types.find( + (item) => item.code === id_type + ); + if (!validIdType) { + const legacyValidIdType = legacyProductConstraints.doc_verification[country].id_types[id_type] || legacyProductConstraints.enhanced_kyc[country].id_types[id_type]; + if (legacyValidIdType) { + validIdType = { + name: legacyValidIdType.label + }; + } + } + if (!validIdType) { + throw new Error(`SmileIdentity - ${country} ${id_type} is not supported`); + } + return validIdType.name; + } + function transformIdTypesToVerificationMethodMap(idTypes, productConstraints, legacyProductConstraints) { + return idTypes.reduce( + (idSelectionMap, { country, id_type, verification_method }) => { + idSelectionMap[country] = idSelectionMap[country] || { + name: productConstraints.find((item) => item.country.code === country)?.country?.name, + id_types: {} + }; + idSelectionMap[country].id_types[id_type] = { + name: getIdTypeName( + country, + id_type, + productConstraints, + legacyProductConstraints + ), + verification_method + }; + return idSelectionMap; + }, + {} + ); + } + function loadIdTypes(localVerificationMethodMap, idTypeSelector, countryCode) { + if (countryCode) { + idTypeSelector.innerHTML = ""; + const initialOption = document.createElement("option"); + initialOption.setAttribute("value", ""); + initialOption.textContent = "--Please Select--"; + idTypeSelector.appendChild(initialOption); + const idTypes = Object.keys( + localVerificationMethodMap[countryCode].id_types + ); + const isSingleIdType = idTypes.length === 1; + idTypes.forEach((idType) => { + const option = document.createElement("option"); + option.setAttribute("value", idType); + option.textContent = localVerificationMethodMap[countryCode].id_types[idType].name; + if (isSingleIdType) { + option.setAttribute("selected", true); + } + idTypeSelector.appendChild(option); + }); + idTypeSelector.disabled = false; + } else { + idTypeSelector.innerHTML = ""; + const option = document.createElement("option"); + option.disabled = true; + option.setAttribute("value", ""); + option.textContent = "--Select Country First--"; + idTypeSelector.appendChild(option); + } + } + function getVerificationMethod(country, id_type) { + return verificationMethodMap[country].id_types[id_type].verification_method; + } + function initializeForm(form, localVerificationMethodMap) { + const countrySelector = form.querySelector("#country"); + const idTypeSelector = form.querySelector("#id_type"); + countrySelector.addEventListener("change", (e) => { + loadIdTypes(localVerificationMethodMap, idTypeSelector, e.target.value); + }); + const countries = Object.keys(localVerificationMethodMap); + const isSingleCountry = countries.length === 1; + countries.forEach((countryCode) => { + const country = localVerificationMethodMap[countryCode]; + const option = document.createElement("option"); + option.setAttribute("value", countryCode); + option.textContent = country.name; + if (isSingleCountry) { + option.setAttribute("selected", true); + loadIdTypes(localVerificationMethodMap, idTypeSelector, countryCode); + } + countrySelector.appendChild(option); + }); + countrySelector.disabled = false; + setActiveScreen(form); + } + function getSiteURL() { + const urlParts = location.href.split("/"); + const url = urlParts.slice(0, -1).join("/"); + return `${url}/`; + } + function getIFrameURL(product) { + switch (product) { + case "biometric_kyc": + return "biometric-kyc.html"; + case "doc_verification": + return "doc-verification.html"; + case "enhanced_document_verification": + return "enhanced-document-verification.html"; + case "enhanced_kyc": + return "ekyc.html"; + default: + throw new Error("Unsupported product"); + } + } + function createIframe(productName) { + const iframe = document.createElement("iframe"); + iframe.setAttribute("src", `${getSiteURL()}${getIFrameURL(productName)}`); + iframe.setAttribute( + "id", + "smile-identity-hosted-web-integration-post-product-selection" + ); + iframe.setAttribute( + "name", + "smile-identity-hosted-web-integration-post-product-selection" + ); + iframe.setAttribute( + "data-cy", + "smile-identity-hosted-web-integration-post-product-selection" + ); + iframe.setAttribute("frameborder", "0"); + iframe.setAttribute( + "allow", + "camera; geolocation; encrypted-media; fullscreen" + ); + iframe.setAttribute("allowtransparency", "true"); + iframe.style.cssText = ` + background-color: #F9F0E7; + border: none; + height: 100%; + left: 0; + position: fixed; + top: 0; + width: 100%; + z-index: 999999; + `; + document.body.prepend(iframe); + } + function closeWindow() { + referenceWindow.postMessage("SmileIdentity::Close", "*"); + } + function publishMessage() { + const targetWindow = document.querySelector( + "[name='smile-identity-hosted-web-integration-post-product-selection']" + ).contentWindow; + config.source = "SmileIdentity::Configuration"; + targetWindow.postMessage(JSON.stringify(config), "*"); + } + function setProductPage(selectedCountry, selectedIdType) { + config.id_selection = {}; + config.id_selection[selectedCountry] = [selectedIdType]; + config.product = getVerificationMethod(selectedCountry, selectedIdType); + createIframe(config.product); + } + ConfigForm.addEventListener("submit", (e) => { + e.preventDefault(); + const selectedCountry = ConfigForm.querySelector("#country").value; + const selectedIdType = ConfigForm.querySelector("#id_type").value; + setProductPage(selectedCountry, selectedIdType); + }); + window.addEventListener( + "message", + async (event) => { + if (event.data) { + if (event.data.includes("SmileIdentity::Configuration")) { + config = JSON.parse(event.data); + activeScreen = LoadingScreen; + const constraintsPromises = [ + getProductConstraints(), + getLegacyProductConstraints() + ]; + const [productConstraints, legacyConstraints] = await Promise.all(constraintsPromises); + verificationMethodMap = transformIdTypesToVerificationMethodMap( + config.id_types, + productConstraints, + legacyConstraints + ); + initializeForm(SelectIdType, verificationMethodMap); + } else if (event.data.includes("SmileIdentity::ChildPageReady")) { + publishMessage(config); + } + } else { + referenceWindow.postMessage(event.detail || event.data, "*"); + } + }, + false + ); + })(); +})(); diff --git a/packages/embed/build/js/script.min.js b/packages/embed/build/js/script.min.js new file mode 100644 index 00000000..fba73daa --- /dev/null +++ b/packages/embed/build/js/script.min.js @@ -0,0 +1,162 @@ +(() => { + // src/js/script.js + window.SmileIdentity = function() { + "use strict"; + function getSiteURL() { + const currentScriptSrc = document.currentScript.src; + const qualifiedURL = currentScriptSrc.split("script")[0]; + return qualifiedURL; + } + const innerConfig = { + siteURL: getSiteURL() + }; + function getIFrameURL(product) { + switch (product) { + case "biometric_kyc": + case "ekyc_smartselfie": + return "./../biometric-kyc.html"; + case "enhanced_kyc": + return "./../ekyc.html"; + case "authentication": + case "smartselfie": + return "./../smartselfie-auth.html"; + case "doc_verification": + return "./../doc-verification.html"; + case "enhanced_document_verification": + return "./../enhanced-document-verification.html"; + case "basic_kyc": + case "identity_verification": + return "./../basic-kyc.html"; + case void 0: + return "./../product-selection.html"; + default: + throw new Error( + `SmileIdentity: ${product} is not currently supported in this integration` + ); + } + } + function createIframe(productName) { + const iframe = document.createElement("iframe"); + iframe.setAttribute( + "src", + `${innerConfig.siteURL}${getIFrameURL(productName)}` + ); + iframe.setAttribute("id", "smile-identity-hosted-web-integration"); + iframe.setAttribute("name", "smile-identity-hosted-web-integration"); + iframe.setAttribute("data-cy", "smile-identity-hosted-web-integration"); + iframe.setAttribute("frameborder", "0"); + iframe.setAttribute( + "allow", + "camera; geolocation; encrypted-media; fullscreen" + ); + iframe.setAttribute("allowtransparency", "true"); + iframe.style.cssText = ` + background-color: #F9F0E7; + border: none; + height: 100%; + left: 0; + position: fixed; + top: 0; + width: 100%; + z-index: 999999; + `; + document.body.prepend(iframe); + } + function closeIFrame(config, userTriggered) { + const iframe = document.querySelector( + "#smile-identity-hosted-web-integration" + ); + iframe.remove(); + if (config.onClose && userTriggered) { + config.onClose(); + } + } + function handleSuccess(config) { + if (config.onSuccess) { + config.onSuccess(); + } + } + function handleConsentRejection(config, error) { + if (config.onError) { + config.onError(error); + } + } + const requiredPartnerDetails = [ + "name", + "logo_url", + "partner_id", + "policy_url", + "theme_color" + ]; + function isConfigValid(config) { + if (!config.token) + throw new Error( + "SmileIdentity: Please provide your web token via the `token` attribute" + ); + if (!config.callback_url) + throw new Error( + "SmileIdentity: Please provide a callback URL via the `callback_url` attribute" + ); + if (!config.product && !config.id_types) + throw new Error( + "SmileIdentity: Please select a product via the `product` attribute." + ); + if ((config.product === "biometric_kyc" || config.product === "ekyc_smartselfie") && !config.partner_details) { + throw new Error( + "SmileIdentity: Please provide Partner Details via the `partner_details` attribute" + ); + } + if ((config.product === "biometric_kyc" || config.product === "ekyc_smartselfie") && config.partner_details) { + requiredPartnerDetails.forEach((param) => { + if (!config.partner_details[param]) { + throw new Error( + `SmileIdentity: Please include ${param} in the "partner_details" object` + ); + } + }); + } + if (config.document_capture_modes && !Array.isArray(config.document_capture_modes)) { + throw new Error( + "SmileIdentity: document_capture_modes must be an array containing one of `camera` or `upload`, or both" + ); + } + return true; + } + function publishConfigToIFrame(config) { + const targetWindow = document.querySelector( + "[name='smile-identity-hosted-web-integration']" + ).contentWindow; + config.source = "SmileIdentity::Configuration"; + targetWindow.postMessage(JSON.stringify(config), "*"); + } + function SmileIdentity(config) { + const configIsValid = isConfigValid(config); + if (configIsValid) { + createIframe(config.product); + window.addEventListener( + "message", + (event) => { + const tag = event.data.message || event.data; + switch (tag) { + case "SmileIdentity::ChildPageReady": + return publishConfigToIFrame(config); + case "SmileIdentity::Close": + return closeIFrame(config, true); + case "SmileIdentity::Close::System": + return closeIFrame(config, false); + case "SmileIdentity::Success": + return handleSuccess(config); + case "SmileIdentity::ConsentDenied": + case "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated": + return handleConsentRejection(config, event.data); + default: + return void 0; + } + }, + false + ); + } + } + return SmileIdentity; + }(); +})(); diff --git a/packages/embed/build/js/smartselfie-auth.min.js b/packages/embed/build/js/smartselfie-auth.min.js new file mode 100644 index 00000000..4192ea34 --- /dev/null +++ b/packages/embed/build/js/smartselfie-auth.min.js @@ -0,0 +1,4693 @@ +(() => { + var __create = Object.create; + var __defProp = Object.defineProperty; + var __getOwnPropDesc = Object.getOwnPropertyDescriptor; + var __getOwnPropNames = Object.getOwnPropertyNames; + var __getProtoOf = Object.getPrototypeOf; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] + }) : x)(function(x) { + if (typeof require !== "undefined") + return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); + }); + var __commonJS = (cb, mod) => function __require2() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; + }; + var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; + }; + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod + )); + + // ../../node_modules/jszip/dist/jszip.min.js + var require_jszip_min = __commonJS({ + "../../node_modules/jszip/dist/jszip.min.js"(exports, module) { + !function(e) { + if ("object" == typeof exports && "undefined" != typeof module) + module.exports = e(); + else if ("function" == typeof define && define.amd) + define([], e); + else { + ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e(); + } + }(function() { + return function s(a, o, h) { + function u(r, e2) { + if (!o[r]) { + if (!a[r]) { + var t = "function" == typeof __require && __require; + if (!e2 && t) + return t(r, true); + if (l) + return l(r, true); + var n = new Error("Cannot find module '" + r + "'"); + throw n.code = "MODULE_NOT_FOUND", n; + } + var i = o[r] = { exports: {} }; + a[r][0].call(i.exports, function(e3) { + var t2 = a[r][1][e3]; + return u(t2 || e3); + }, i, i.exports, s, a, o, h); + } + return o[r].exports; + } + for (var l = "function" == typeof __require && __require, e = 0; e < h.length; e++) + u(h[e]); + return u; + }({ 1: [function(e, t, r) { + "use strict"; + var d = e("./utils"), c = e("./support"), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + r.encode = function(e2) { + for (var t2, r2, n, i, s, a, o, h = [], u = 0, l = e2.length, f = l, c2 = "string" !== d.getTypeOf(e2); u < e2.length; ) + f = l - u, n = c2 ? (t2 = e2[u++], r2 = u < l ? e2[u++] : 0, u < l ? e2[u++] : 0) : (t2 = e2.charCodeAt(u++), r2 = u < l ? e2.charCodeAt(u++) : 0, u < l ? e2.charCodeAt(u++) : 0), i = t2 >> 2, s = (3 & t2) << 4 | r2 >> 4, a = 1 < f ? (15 & r2) << 2 | n >> 6 : 64, o = 2 < f ? 63 & n : 64, h.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)); + return h.join(""); + }, r.decode = function(e2) { + var t2, r2, n, i, s, a, o = 0, h = 0, u = "data:"; + if (e2.substr(0, u.length) === u) + throw new Error("Invalid base64 input, it looks like a data url."); + var l, f = 3 * (e2 = e2.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; + if (e2.charAt(e2.length - 1) === p.charAt(64) && f--, e2.charAt(e2.length - 2) === p.charAt(64) && f--, f % 1 != 0) + throw new Error("Invalid base64 input, bad content length."); + for (l = c.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e2.length; ) + t2 = p.indexOf(e2.charAt(o++)) << 2 | (i = p.indexOf(e2.charAt(o++))) >> 4, r2 = (15 & i) << 4 | (s = p.indexOf(e2.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e2.charAt(o++))), l[h++] = t2, 64 !== s && (l[h++] = r2), 64 !== a && (l[h++] = n); + return l; + }; + }, { "./support": 30, "./utils": 32 }], 2: [function(e, t, r) { + "use strict"; + var n = e("./external"), i = e("./stream/DataWorker"), s = e("./stream/Crc32Probe"), a = e("./stream/DataLengthProbe"); + function o(e2, t2, r2, n2, i2) { + this.compressedSize = e2, this.uncompressedSize = t2, this.crc32 = r2, this.compression = n2, this.compressedContent = i2; + } + o.prototype = { getContentWorker: function() { + var e2 = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), t2 = this; + return e2.on("end", function() { + if (this.streamInfo.data_length !== t2.uncompressedSize) + throw new Error("Bug : uncompressed data size mismatch"); + }), e2; + }, getCompressedWorker: function() { + return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); + } }, o.createWorkerFrom = function(e2, t2, r2) { + return e2.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t2.compressWorker(r2)).pipe(new a("compressedSize")).withStreamInfo("compression", t2); + }, t.exports = o; + }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e, t, r) { + "use strict"; + var n = e("./stream/GenericWorker"); + r.STORE = { magic: "\0\0", compressWorker: function() { + return new n("STORE compression"); + }, uncompressWorker: function() { + return new n("STORE decompression"); + } }, r.DEFLATE = e("./flate"); + }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e, t, r) { + "use strict"; + var n = e("./utils"); + var o = function() { + for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { + e2 = r2; + for (var n2 = 0; n2 < 8; n2++) + e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; + t2[r2] = e2; + } + return t2; + }(); + t.exports = function(e2, t2) { + return void 0 !== e2 && e2.length ? "string" !== n.getTypeOf(e2) ? function(e3, t3, r2, n2) { + var i = o, s = n2 + r2; + e3 ^= -1; + for (var a = n2; a < s; a++) + e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3[a])]; + return -1 ^ e3; + }(0 | t2, e2, e2.length, 0) : function(e3, t3, r2, n2) { + var i = o, s = n2 + r2; + e3 ^= -1; + for (var a = n2; a < s; a++) + e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3.charCodeAt(a))]; + return -1 ^ e3; + }(0 | t2, e2, e2.length, 0) : 0; + }; + }, { "./utils": 32 }], 5: [function(e, t, r) { + "use strict"; + r.base64 = false, r.binary = false, r.dir = false, r.createFolders = true, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null; + }, {}], 6: [function(e, t, r) { + "use strict"; + var n = null; + n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n }; + }, { lie: 37 }], 7: [function(e, t, r) { + "use strict"; + var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i = e("pako"), s = e("./utils"), a = e("./stream/GenericWorker"), o = n ? "uint8array" : "array"; + function h(e2, t2) { + a.call(this, "FlateWorker/" + e2), this._pako = null, this._pakoAction = e2, this._pakoOptions = t2, this.meta = {}; + } + r.magic = "\b\0", s.inherits(h, a), h.prototype.processChunk = function(e2) { + this.meta = e2.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e2.data), false); + }, h.prototype.flush = function() { + a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); + }, h.prototype.cleanUp = function() { + a.prototype.cleanUp.call(this), this._pako = null; + }, h.prototype._createPako = function() { + this._pako = new i[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); + var t2 = this; + this._pako.onData = function(e2) { + t2.push({ data: e2, meta: t2.meta }); + }; + }, r.compressWorker = function(e2) { + return new h("Deflate", e2); + }, r.uncompressWorker = function() { + return new h("Inflate", {}); + }; + }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e, t, r) { + "use strict"; + function A(e2, t2) { + var r2, n2 = ""; + for (r2 = 0; r2 < t2; r2++) + n2 += String.fromCharCode(255 & e2), e2 >>>= 8; + return n2; + } + function n(e2, t2, r2, n2, i2, s2) { + var a, o, h = e2.file, u = e2.compression, l = s2 !== O.utf8encode, f = I.transformTo("string", s2(h.name)), c = I.transformTo("string", O.utf8encode(h.name)), d = h.comment, p = I.transformTo("string", s2(d)), m = I.transformTo("string", O.utf8encode(d)), _ = c.length !== h.name.length, g = m.length !== d.length, b = "", v = "", y = "", w = h.dir, k = h.date, x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; + t2 && !r2 || (x.crc32 = e2.crc32, x.compressedSize = e2.compressedSize, x.uncompressedSize = e2.uncompressedSize); + var S = 0; + t2 && (S |= 8), l || !_ && !g || (S |= 2048); + var z = 0, C = 0; + w && (z |= 16), "UNIX" === i2 ? (C = 798, z |= function(e3, t3) { + var r3 = e3; + return e3 || (r3 = t3 ? 16893 : 33204), (65535 & r3) << 16; + }(h.unixPermissions, w)) : (C = 20, z |= function(e3) { + return 63 & (e3 || 0); + }(h.dosPermissions)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v = A(1, 1) + A(B(f), 4) + c, b += "up" + A(v.length, 2) + v), g && (y = A(1, 1) + A(B(p), 4) + m, b += "uc" + A(y.length, 2) + y); + var E = ""; + return E += "\n\0", E += A(S, 2), E += u.magic, E += A(a, 2), E += A(o, 2), E += A(x.crc32, 4), E += A(x.compressedSize, 4), E += A(x.uncompressedSize, 4), E += A(f.length, 2), E += A(b.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + E + f + b, dirRecord: R.CENTRAL_FILE_HEADER + A(C, 2) + E + A(p.length, 2) + "\0\0\0\0" + A(z, 4) + A(n2, 4) + f + b + p }; + } + var I = e("../utils"), i = e("../stream/GenericWorker"), O = e("../utf8"), B = e("../crc32"), R = e("../signature"); + function s(e2, t2, r2, n2) { + i.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t2, this.zipPlatform = r2, this.encodeFileName = n2, this.streamFiles = e2, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; + } + I.inherits(s, i), s.prototype.push = function(e2) { + var t2 = e2.meta.percent || 0, r2 = this.entriesCount, n2 = this._sources.length; + this.accumulate ? this.contentBuffer.push(e2) : (this.bytesWritten += e2.data.length, i.prototype.push.call(this, { data: e2.data, meta: { currentFile: this.currentFile, percent: r2 ? (t2 + 100 * (r2 - n2 - 1)) / r2 : 100 } })); + }, s.prototype.openedSource = function(e2) { + this.currentSourceOffset = this.bytesWritten, this.currentFile = e2.file.name; + var t2 = this.streamFiles && !e2.file.dir; + if (t2) { + var r2 = n(e2, t2, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + this.push({ data: r2.fileRecord, meta: { percent: 0 } }); + } else + this.accumulate = true; + }, s.prototype.closedSource = function(e2) { + this.accumulate = false; + var t2 = this.streamFiles && !e2.file.dir, r2 = n(e2, t2, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); + if (this.dirRecords.push(r2.dirRecord), t2) + this.push({ data: function(e3) { + return R.DATA_DESCRIPTOR + A(e3.crc32, 4) + A(e3.compressedSize, 4) + A(e3.uncompressedSize, 4); + }(e2), meta: { percent: 100 } }); + else + for (this.push({ data: r2.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) + this.push(this.contentBuffer.shift()); + this.currentFile = null; + }, s.prototype.flush = function() { + for (var e2 = this.bytesWritten, t2 = 0; t2 < this.dirRecords.length; t2++) + this.push({ data: this.dirRecords[t2], meta: { percent: 100 } }); + var r2 = this.bytesWritten - e2, n2 = function(e3, t3, r3, n3, i2) { + var s2 = I.transformTo("string", i2(n3)); + return R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A(e3, 2) + A(e3, 2) + A(t3, 4) + A(r3, 4) + A(s2.length, 2) + s2; + }(this.dirRecords.length, r2, e2, this.zipComment, this.encodeFileName); + this.push({ data: n2, meta: { percent: 100 } }); + }, s.prototype.prepareNextSource = function() { + this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); + }, s.prototype.registerPrevious = function(e2) { + this._sources.push(e2); + var t2 = this; + return e2.on("data", function(e3) { + t2.processChunk(e3); + }), e2.on("end", function() { + t2.closedSource(t2.previous.streamInfo), t2._sources.length ? t2.prepareNextSource() : t2.end(); + }), e2.on("error", function(e3) { + t2.error(e3); + }), this; + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true)); + }, s.prototype.error = function(e2) { + var t2 = this._sources; + if (!i.prototype.error.call(this, e2)) + return false; + for (var r2 = 0; r2 < t2.length; r2++) + try { + t2[r2].error(e2); + } catch (e3) { + } + return true; + }, s.prototype.lock = function() { + i.prototype.lock.call(this); + for (var e2 = this._sources, t2 = 0; t2 < e2.length; t2++) + e2[t2].lock(); + }, t.exports = s; + }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e, t, r) { + "use strict"; + var u = e("../compressions"), n = e("./ZipFileWorker"); + r.generateWorker = function(e2, a, t2) { + var o = new n(a.streamFiles, t2, a.platform, a.encodeFileName), h = 0; + try { + e2.forEach(function(e3, t3) { + h++; + var r2 = function(e4, t4) { + var r3 = e4 || t4, n3 = u[r3]; + if (!n3) + throw new Error(r3 + " is not a valid compression method !"); + return n3; + }(t3.options.compression, a.compression), n2 = t3.options.compressionOptions || a.compressionOptions || {}, i = t3.dir, s = t3.date; + t3._compressWorker(r2, n2).withStreamInfo("file", { name: e3, dir: i, date: s, comment: t3.comment || "", unixPermissions: t3.unixPermissions, dosPermissions: t3.dosPermissions }).pipe(o); + }), o.entriesCount = h; + } catch (e3) { + o.error(e3); + } + return o; + }; + }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e, t, r) { + "use strict"; + function n() { + if (!(this instanceof n)) + return new n(); + if (arguments.length) + throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); + this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { + var e2 = new n(); + for (var t2 in this) + "function" != typeof this[t2] && (e2[t2] = this[t2]); + return e2; + }; + } + (n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.10.1", n.loadAsync = function(e2, t2) { + return new n().loadAsync(e2, t2); + }, n.external = e("./external"), t.exports = n; + }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e, t, r) { + "use strict"; + var u = e("./utils"), i = e("./external"), n = e("./utf8"), s = e("./zipEntries"), a = e("./stream/Crc32Probe"), l = e("./nodejsUtils"); + function f(n2) { + return new i.Promise(function(e2, t2) { + var r2 = n2.decompressed.getContentWorker().pipe(new a()); + r2.on("error", function(e3) { + t2(e3); + }).on("end", function() { + r2.streamInfo.crc32 !== n2.decompressed.crc32 ? t2(new Error("Corrupted zip : CRC32 mismatch")) : e2(); + }).resume(); + }); + } + t.exports = function(e2, o) { + var h = this; + return o = u.extend(o || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n.utf8decode }), l.isNode && l.isStream(e2) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u.prepareContent("the loaded zip file", e2, true, o.optimizedBinaryString, o.base64).then(function(e3) { + var t2 = new s(o); + return t2.load(e3), t2; + }).then(function(e3) { + var t2 = [i.Promise.resolve(e3)], r2 = e3.files; + if (o.checkCRC32) + for (var n2 = 0; n2 < r2.length; n2++) + t2.push(f(r2[n2])); + return i.Promise.all(t2); + }).then(function(e3) { + for (var t2 = e3.shift(), r2 = t2.files, n2 = 0; n2 < r2.length; n2++) { + var i2 = r2[n2], s2 = i2.fileNameStr, a2 = u.resolve(i2.fileNameStr); + h.file(a2, i2.decompressed, { binary: true, optimizedBinaryString: true, date: i2.date, dir: i2.dir, comment: i2.fileCommentStr.length ? i2.fileCommentStr : null, unixPermissions: i2.unixPermissions, dosPermissions: i2.dosPermissions, createFolders: o.createFolders }), i2.dir || (h.file(a2).unsafeOriginalName = s2); + } + return t2.zipComment.length && (h.comment = t2.zipComment), h; + }); + }; + }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("../stream/GenericWorker"); + function s(e2, t2) { + i.call(this, "Nodejs stream input adapter for " + e2), this._upstreamEnded = false, this._bindStream(t2); + } + n.inherits(s, i), s.prototype._bindStream = function(e2) { + var t2 = this; + (this._stream = e2).pause(), e2.on("data", function(e3) { + t2.push({ data: e3, meta: { percent: 0 } }); + }).on("error", function(e3) { + t2.isPaused ? this.generatedError = e3 : t2.error(e3); + }).on("end", function() { + t2.isPaused ? t2._upstreamEnded = true : t2.end(); + }); + }, s.prototype.pause = function() { + return !!i.prototype.pause.call(this) && (this._stream.pause(), true); + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); + }, t.exports = s; + }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e, t, r) { + "use strict"; + var i = e("readable-stream").Readable; + function n(e2, t2, r2) { + i.call(this, t2), this._helper = e2; + var n2 = this; + e2.on("data", function(e3, t3) { + n2.push(e3) || n2._helper.pause(), r2 && r2(t3); + }).on("error", function(e3) { + n2.emit("error", e3); + }).on("end", function() { + n2.push(null); + }); + } + e("../utils").inherits(n, i), n.prototype._read = function() { + this._helper.resume(); + }, t.exports = n; + }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e, t, r) { + "use strict"; + t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e2, t2) { + if (Buffer.from && Buffer.from !== Uint8Array.from) + return Buffer.from(e2, t2); + if ("number" == typeof e2) + throw new Error('The "data" argument must not be a number'); + return new Buffer(e2, t2); + }, allocBuffer: function(e2) { + if (Buffer.alloc) + return Buffer.alloc(e2); + var t2 = new Buffer(e2); + return t2.fill(0), t2; + }, isBuffer: function(e2) { + return Buffer.isBuffer(e2); + }, isStream: function(e2) { + return e2 && "function" == typeof e2.on && "function" == typeof e2.pause && "function" == typeof e2.resume; + } }; + }, {}], 15: [function(e, t, r) { + "use strict"; + function s(e2, t2, r2) { + var n2, i2 = u.getTypeOf(t2), s2 = u.extend(r2 || {}, f); + s2.date = s2.date || /* @__PURE__ */ new Date(), null !== s2.compression && (s2.compression = s2.compression.toUpperCase()), "string" == typeof s2.unixPermissions && (s2.unixPermissions = parseInt(s2.unixPermissions, 8)), s2.unixPermissions && 16384 & s2.unixPermissions && (s2.dir = true), s2.dosPermissions && 16 & s2.dosPermissions && (s2.dir = true), s2.dir && (e2 = g(e2)), s2.createFolders && (n2 = _(e2)) && b.call(this, n2, true); + var a2 = "string" === i2 && false === s2.binary && false === s2.base64; + r2 && void 0 !== r2.binary || (s2.binary = !a2), (t2 instanceof c && 0 === t2.uncompressedSize || s2.dir || !t2 || 0 === t2.length) && (s2.base64 = false, s2.binary = true, t2 = "", s2.compression = "STORE", i2 = "string"); + var o2 = null; + o2 = t2 instanceof c || t2 instanceof l ? t2 : p.isNode && p.isStream(t2) ? new m(e2, t2) : u.prepareContent(e2, t2, s2.binary, s2.optimizedBinaryString, s2.base64); + var h2 = new d(e2, o2, s2); + this.files[e2] = h2; + } + var i = e("./utf8"), u = e("./utils"), l = e("./stream/GenericWorker"), a = e("./stream/StreamHelper"), f = e("./defaults"), c = e("./compressedObject"), d = e("./zipObject"), o = e("./generate"), p = e("./nodejsUtils"), m = e("./nodejs/NodejsStreamInputAdapter"), _ = function(e2) { + "/" === e2.slice(-1) && (e2 = e2.substring(0, e2.length - 1)); + var t2 = e2.lastIndexOf("/"); + return 0 < t2 ? e2.substring(0, t2) : ""; + }, g = function(e2) { + return "/" !== e2.slice(-1) && (e2 += "/"), e2; + }, b = function(e2, t2) { + return t2 = void 0 !== t2 ? t2 : f.createFolders, e2 = g(e2), this.files[e2] || s.call(this, e2, null, { dir: true, createFolders: t2 }), this.files[e2]; + }; + function h(e2) { + return "[object RegExp]" === Object.prototype.toString.call(e2); + } + var n = { load: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, forEach: function(e2) { + var t2, r2, n2; + for (t2 in this.files) + n2 = this.files[t2], (r2 = t2.slice(this.root.length, t2.length)) && t2.slice(0, this.root.length) === this.root && e2(r2, n2); + }, filter: function(r2) { + var n2 = []; + return this.forEach(function(e2, t2) { + r2(e2, t2) && n2.push(t2); + }), n2; + }, file: function(e2, t2, r2) { + if (1 !== arguments.length) + return e2 = this.root + e2, s.call(this, e2, t2, r2), this; + if (h(e2)) { + var n2 = e2; + return this.filter(function(e3, t3) { + return !t3.dir && n2.test(e3); + }); + } + var i2 = this.files[this.root + e2]; + return i2 && !i2.dir ? i2 : null; + }, folder: function(r2) { + if (!r2) + return this; + if (h(r2)) + return this.filter(function(e3, t3) { + return t3.dir && r2.test(e3); + }); + var e2 = this.root + r2, t2 = b.call(this, e2), n2 = this.clone(); + return n2.root = t2.name, n2; + }, remove: function(r2) { + r2 = this.root + r2; + var e2 = this.files[r2]; + if (e2 || ("/" !== r2.slice(-1) && (r2 += "/"), e2 = this.files[r2]), e2 && !e2.dir) + delete this.files[r2]; + else + for (var t2 = this.filter(function(e3, t3) { + return t3.name.slice(0, r2.length) === r2; + }), n2 = 0; n2 < t2.length; n2++) + delete this.files[t2[n2].name]; + return this; + }, generate: function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, generateInternalStream: function(e2) { + var t2, r2 = {}; + try { + if ((r2 = u.extend(e2 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r2.type.toLowerCase(), r2.compression = r2.compression.toUpperCase(), "binarystring" === r2.type && (r2.type = "string"), !r2.type) + throw new Error("No output type specified."); + u.checkSupport(r2.type), "darwin" !== r2.platform && "freebsd" !== r2.platform && "linux" !== r2.platform && "sunos" !== r2.platform || (r2.platform = "UNIX"), "win32" === r2.platform && (r2.platform = "DOS"); + var n2 = r2.comment || this.comment || ""; + t2 = o.generateWorker(this, r2, n2); + } catch (e3) { + (t2 = new l("error")).error(e3); + } + return new a(t2, r2.type || "string", r2.mimeType); + }, generateAsync: function(e2, t2) { + return this.generateInternalStream(e2).accumulate(t2); + }, generateNodeStream: function(e2, t2) { + return (e2 = e2 || {}).type || (e2.type = "nodebuffer"), this.generateInternalStream(e2).toNodejsStream(t2); + } }; + t.exports = n; + }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e, t, r) { + "use strict"; + t.exports = e("stream"); + }, { stream: void 0 }], 17: [function(e, t, r) { + "use strict"; + var n = e("./DataReader"); + function i(e2) { + n.call(this, e2); + for (var t2 = 0; t2 < this.data.length; t2++) + e2[t2] = 255 & e2[t2]; + } + e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { + return this.data[this.zero + e2]; + }, i.prototype.lastIndexOfSignature = function(e2) { + for (var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.length - 4; 0 <= s; --s) + if (this.data[s] === t2 && this.data[s + 1] === r2 && this.data[s + 2] === n2 && this.data[s + 3] === i2) + return s - this.zero; + return -1; + }, i.prototype.readAndCheckSignature = function(e2) { + var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.readData(4); + return t2 === s[0] && r2 === s[1] && n2 === s[2] && i2 === s[3]; + }, i.prototype.readData = function(e2) { + if (this.checkOffset(e2), 0 === e2) + return []; + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e, t, r) { + "use strict"; + var n = e("../utils"); + function i(e2) { + this.data = e2, this.length = e2.length, this.index = 0, this.zero = 0; + } + i.prototype = { checkOffset: function(e2) { + this.checkIndex(this.index + e2); + }, checkIndex: function(e2) { + if (this.length < this.zero + e2 || e2 < 0) + throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e2 + "). Corrupted zip ?"); + }, setIndex: function(e2) { + this.checkIndex(e2), this.index = e2; + }, skip: function(e2) { + this.setIndex(this.index + e2); + }, byteAt: function() { + }, readInt: function(e2) { + var t2, r2 = 0; + for (this.checkOffset(e2), t2 = this.index + e2 - 1; t2 >= this.index; t2--) + r2 = (r2 << 8) + this.byteAt(t2); + return this.index += e2, r2; + }, readString: function(e2) { + return n.transformTo("string", this.readData(e2)); + }, readData: function() { + }, lastIndexOfSignature: function() { + }, readAndCheckSignature: function() { + }, readDate: function() { + var e2 = this.readInt(4); + return new Date(Date.UTC(1980 + (e2 >> 25 & 127), (e2 >> 21 & 15) - 1, e2 >> 16 & 31, e2 >> 11 & 31, e2 >> 5 & 63, (31 & e2) << 1)); + } }, t.exports = i; + }, { "../utils": 32 }], 19: [function(e, t, r) { + "use strict"; + var n = e("./Uint8ArrayReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.readData = function(e2) { + this.checkOffset(e2); + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e, t, r) { + "use strict"; + var n = e("./DataReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { + return this.data.charCodeAt(this.zero + e2); + }, i.prototype.lastIndexOfSignature = function(e2) { + return this.data.lastIndexOf(e2) - this.zero; + }, i.prototype.readAndCheckSignature = function(e2) { + return e2 === this.readData(4); + }, i.prototype.readData = function(e2) { + this.checkOffset(e2); + var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e, t, r) { + "use strict"; + var n = e("./ArrayReader"); + function i(e2) { + n.call(this, e2); + } + e("../utils").inherits(i, n), i.prototype.readData = function(e2) { + if (this.checkOffset(e2), 0 === e2) + return new Uint8Array(0); + var t2 = this.data.subarray(this.zero + this.index, this.zero + this.index + e2); + return this.index += e2, t2; + }, t.exports = i; + }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("../support"), s = e("./ArrayReader"), a = e("./StringReader"), o = e("./NodeBufferReader"), h = e("./Uint8ArrayReader"); + t.exports = function(e2) { + var t2 = n.getTypeOf(e2); + return n.checkSupport(t2), "string" !== t2 || i.uint8array ? "nodebuffer" === t2 ? new o(e2) : i.uint8array ? new h(n.transformTo("uint8array", e2)) : new s(n.transformTo("array", e2)) : new a(e2); + }; + }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e, t, r) { + "use strict"; + r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\x07\b"; + }, {}], 24: [function(e, t, r) { + "use strict"; + var n = e("./GenericWorker"), i = e("../utils"); + function s(e2) { + n.call(this, "ConvertWorker to " + e2), this.destType = e2; + } + i.inherits(s, n), s.prototype.processChunk = function(e2) { + this.push({ data: i.transformTo(this.destType, e2.data), meta: e2.meta }); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e, t, r) { + "use strict"; + var n = e("./GenericWorker"), i = e("../crc32"); + function s() { + n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); + } + e("../utils").inherits(s, n), s.prototype.processChunk = function(e2) { + this.streamInfo.crc32 = i(e2.data, this.streamInfo.crc32 || 0), this.push(e2); + }, t.exports = s; + }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("./GenericWorker"); + function s(e2) { + i.call(this, "DataLengthProbe for " + e2), this.propName = e2, this.withStreamInfo(e2, 0); + } + n.inherits(s, i), s.prototype.processChunk = function(e2) { + if (e2) { + var t2 = this.streamInfo[this.propName] || 0; + this.streamInfo[this.propName] = t2 + e2.data.length; + } + i.prototype.processChunk.call(this, e2); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e, t, r) { + "use strict"; + var n = e("../utils"), i = e("./GenericWorker"); + function s(e2) { + i.call(this, "DataWorker"); + var t2 = this; + this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e2.then(function(e3) { + t2.dataIsReady = true, t2.data = e3, t2.max = e3 && e3.length || 0, t2.type = n.getTypeOf(e3), t2.isPaused || t2._tickAndRepeat(); + }, function(e3) { + t2.error(e3); + }); + } + n.inherits(s, i), s.prototype.cleanUp = function() { + i.prototype.cleanUp.call(this), this.data = null; + }, s.prototype.resume = function() { + return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n.delay(this._tickAndRepeat, [], this)), true); + }, s.prototype._tickAndRepeat = function() { + this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); + }, s.prototype._tick = function() { + if (this.isPaused || this.isFinished) + return false; + var e2 = null, t2 = Math.min(this.max, this.index + 16384); + if (this.index >= this.max) + return this.end(); + switch (this.type) { + case "string": + e2 = this.data.substring(this.index, t2); + break; + case "uint8array": + e2 = this.data.subarray(this.index, t2); + break; + case "array": + case "nodebuffer": + e2 = this.data.slice(this.index, t2); + } + return this.index = t2, this.push({ data: e2, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); + }, t.exports = s; + }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e, t, r) { + "use strict"; + function n(e2) { + this.name = e2 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; + } + n.prototype = { push: function(e2) { + this.emit("data", e2); + }, end: function() { + if (this.isFinished) + return false; + this.flush(); + try { + this.emit("end"), this.cleanUp(), this.isFinished = true; + } catch (e2) { + this.emit("error", e2); + } + return true; + }, error: function(e2) { + return !this.isFinished && (this.isPaused ? this.generatedError = e2 : (this.isFinished = true, this.emit("error", e2), this.previous && this.previous.error(e2), this.cleanUp()), true); + }, on: function(e2, t2) { + return this._listeners[e2].push(t2), this; + }, cleanUp: function() { + this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; + }, emit: function(e2, t2) { + if (this._listeners[e2]) + for (var r2 = 0; r2 < this._listeners[e2].length; r2++) + this._listeners[e2][r2].call(this, t2); + }, pipe: function(e2) { + return e2.registerPrevious(this); + }, registerPrevious: function(e2) { + if (this.isLocked) + throw new Error("The stream '" + this + "' has already been used."); + this.streamInfo = e2.streamInfo, this.mergeStreamInfo(), this.previous = e2; + var t2 = this; + return e2.on("data", function(e3) { + t2.processChunk(e3); + }), e2.on("end", function() { + t2.end(); + }), e2.on("error", function(e3) { + t2.error(e3); + }), this; + }, pause: function() { + return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); + }, resume: function() { + if (!this.isPaused || this.isFinished) + return false; + var e2 = this.isPaused = false; + return this.generatedError && (this.error(this.generatedError), e2 = true), this.previous && this.previous.resume(), !e2; + }, flush: function() { + }, processChunk: function(e2) { + this.push(e2); + }, withStreamInfo: function(e2, t2) { + return this.extraStreamInfo[e2] = t2, this.mergeStreamInfo(), this; + }, mergeStreamInfo: function() { + for (var e2 in this.extraStreamInfo) + Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e2) && (this.streamInfo[e2] = this.extraStreamInfo[e2]); + }, lock: function() { + if (this.isLocked) + throw new Error("The stream '" + this + "' has already been used."); + this.isLocked = true, this.previous && this.previous.lock(); + }, toString: function() { + var e2 = "Worker " + this.name; + return this.previous ? this.previous + " -> " + e2 : e2; + } }, t.exports = n; + }, {}], 29: [function(e, t, r) { + "use strict"; + var h = e("../utils"), i = e("./ConvertWorker"), s = e("./GenericWorker"), u = e("../base64"), n = e("../support"), a = e("../external"), o = null; + if (n.nodestream) + try { + o = e("../nodejs/NodejsStreamOutputAdapter"); + } catch (e2) { + } + function l(e2, o2) { + return new a.Promise(function(t2, r2) { + var n2 = [], i2 = e2._internalType, s2 = e2._outputType, a2 = e2._mimeType; + e2.on("data", function(e3, t3) { + n2.push(e3), o2 && o2(t3); + }).on("error", function(e3) { + n2 = [], r2(e3); + }).on("end", function() { + try { + var e3 = function(e4, t3, r3) { + switch (e4) { + case "blob": + return h.newBlob(h.transformTo("arraybuffer", t3), r3); + case "base64": + return u.encode(t3); + default: + return h.transformTo(e4, t3); + } + }(s2, function(e4, t3) { + var r3, n3 = 0, i3 = null, s3 = 0; + for (r3 = 0; r3 < t3.length; r3++) + s3 += t3[r3].length; + switch (e4) { + case "string": + return t3.join(""); + case "array": + return Array.prototype.concat.apply([], t3); + case "uint8array": + for (i3 = new Uint8Array(s3), r3 = 0; r3 < t3.length; r3++) + i3.set(t3[r3], n3), n3 += t3[r3].length; + return i3; + case "nodebuffer": + return Buffer.concat(t3); + default: + throw new Error("concat : unsupported type '" + e4 + "'"); + } + }(i2, n2), a2); + t2(e3); + } catch (e4) { + r2(e4); + } + n2 = []; + }).resume(); + }); + } + function f(e2, t2, r2) { + var n2 = t2; + switch (t2) { + case "blob": + case "arraybuffer": + n2 = "uint8array"; + break; + case "base64": + n2 = "string"; + } + try { + this._internalType = n2, this._outputType = t2, this._mimeType = r2, h.checkSupport(n2), this._worker = e2.pipe(new i(n2)), e2.lock(); + } catch (e3) { + this._worker = new s("error"), this._worker.error(e3); + } + } + f.prototype = { accumulate: function(e2) { + return l(this, e2); + }, on: function(e2, t2) { + var r2 = this; + return "data" === e2 ? this._worker.on(e2, function(e3) { + t2.call(r2, e3.data, e3.meta); + }) : this._worker.on(e2, function() { + h.delay(t2, arguments, r2); + }), this; + }, resume: function() { + return h.delay(this._worker.resume, [], this._worker), this; + }, pause: function() { + return this._worker.pause(), this; + }, toNodejsStream: function(e2) { + if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) + throw new Error(this._outputType + " is not supported by this method"); + return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e2); + } }, t.exports = f; + }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e, t, r) { + "use strict"; + if (r.base64 = true, r.array = true, r.string = true, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) + r.blob = false; + else { + var n = new ArrayBuffer(0); + try { + r.blob = 0 === new Blob([n], { type: "application/zip" }).size; + } catch (e2) { + try { + var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); + i.append(n), r.blob = 0 === i.getBlob("application/zip").size; + } catch (e3) { + r.blob = false; + } + } + } + try { + r.nodestream = !!e("readable-stream").Readable; + } catch (e2) { + r.nodestream = false; + } + }, { "readable-stream": 16 }], 31: [function(e, t, s) { + "use strict"; + for (var o = e("./utils"), h = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), u = new Array(256), i = 0; i < 256; i++) + u[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1; + u[254] = u[254] = 1; + function a() { + n.call(this, "utf-8 decode"), this.leftOver = null; + } + function l() { + n.call(this, "utf-8 encode"); + } + s.utf8encode = function(e2) { + return h.nodebuffer ? r.newBufferFrom(e2, "utf-8") : function(e3) { + var t2, r2, n2, i2, s2, a2 = e3.length, o2 = 0; + for (i2 = 0; i2 < a2; i2++) + 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o2 += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; + for (t2 = h.uint8array ? new Uint8Array(o2) : new Array(o2), i2 = s2 = 0; s2 < o2; i2++) + 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); + return t2; + }(e2); + }, s.utf8decode = function(e2) { + return h.nodebuffer ? o.transformTo("nodebuffer", e2).toString("utf-8") : function(e3) { + var t2, r2, n2, i2, s2 = e3.length, a2 = new Array(2 * s2); + for (t2 = r2 = 0; t2 < s2; ) + if ((n2 = e3[t2++]) < 128) + a2[r2++] = n2; + else if (4 < (i2 = u[n2])) + a2[r2++] = 65533, t2 += i2 - 1; + else { + for (n2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && t2 < s2; ) + n2 = n2 << 6 | 63 & e3[t2++], i2--; + 1 < i2 ? a2[r2++] = 65533 : n2 < 65536 ? a2[r2++] = n2 : (n2 -= 65536, a2[r2++] = 55296 | n2 >> 10 & 1023, a2[r2++] = 56320 | 1023 & n2); + } + return a2.length !== r2 && (a2.subarray ? a2 = a2.subarray(0, r2) : a2.length = r2), o.applyFromCharCode(a2); + }(e2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2)); + }, o.inherits(a, n), a.prototype.processChunk = function(e2) { + var t2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2.data); + if (this.leftOver && this.leftOver.length) { + if (h.uint8array) { + var r2 = t2; + (t2 = new Uint8Array(r2.length + this.leftOver.length)).set(this.leftOver, 0), t2.set(r2, this.leftOver.length); + } else + t2 = this.leftOver.concat(t2); + this.leftOver = null; + } + var n2 = function(e3, t3) { + var r3; + for ((t3 = t3 || e3.length) > e3.length && (t3 = e3.length), r3 = t3 - 1; 0 <= r3 && 128 == (192 & e3[r3]); ) + r3--; + return r3 < 0 ? t3 : 0 === r3 ? t3 : r3 + u[e3[r3]] > t3 ? r3 : t3; + }(t2), i2 = t2; + n2 !== t2.length && (h.uint8array ? (i2 = t2.subarray(0, n2), this.leftOver = t2.subarray(n2, t2.length)) : (i2 = t2.slice(0, n2), this.leftOver = t2.slice(n2, t2.length))), this.push({ data: s.utf8decode(i2), meta: e2.meta }); + }, a.prototype.flush = function() { + this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); + }, s.Utf8DecodeWorker = a, o.inherits(l, n), l.prototype.processChunk = function(e2) { + this.push({ data: s.utf8encode(e2.data), meta: e2.meta }); + }, s.Utf8EncodeWorker = l; + }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e, t, a) { + "use strict"; + var o = e("./support"), h = e("./base64"), r = e("./nodejsUtils"), u = e("./external"); + function n(e2) { + return e2; + } + function l(e2, t2) { + for (var r2 = 0; r2 < e2.length; ++r2) + t2[r2] = 255 & e2.charCodeAt(r2); + return t2; + } + e("setimmediate"), a.newBlob = function(t2, r2) { + a.checkSupport("blob"); + try { + return new Blob([t2], { type: r2 }); + } catch (e2) { + try { + var n2 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); + return n2.append(t2), n2.getBlob(r2); + } catch (e3) { + throw new Error("Bug : can't construct the Blob."); + } + } + }; + var i = { stringifyByChunk: function(e2, t2, r2) { + var n2 = [], i2 = 0, s2 = e2.length; + if (s2 <= r2) + return String.fromCharCode.apply(null, e2); + for (; i2 < s2; ) + "array" === t2 || "nodebuffer" === t2 ? n2.push(String.fromCharCode.apply(null, e2.slice(i2, Math.min(i2 + r2, s2)))) : n2.push(String.fromCharCode.apply(null, e2.subarray(i2, Math.min(i2 + r2, s2)))), i2 += r2; + return n2.join(""); + }, stringifyByChar: function(e2) { + for (var t2 = "", r2 = 0; r2 < e2.length; r2++) + t2 += String.fromCharCode(e2[r2]); + return t2; + }, applyCanBeUsed: { uint8array: function() { + try { + return o.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; + } catch (e2) { + return false; + } + }(), nodebuffer: function() { + try { + return o.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length; + } catch (e2) { + return false; + } + }() } }; + function s(e2) { + var t2 = 65536, r2 = a.getTypeOf(e2), n2 = true; + if ("uint8array" === r2 ? n2 = i.applyCanBeUsed.uint8array : "nodebuffer" === r2 && (n2 = i.applyCanBeUsed.nodebuffer), n2) + for (; 1 < t2; ) + try { + return i.stringifyByChunk(e2, r2, t2); + } catch (e3) { + t2 = Math.floor(t2 / 2); + } + return i.stringifyByChar(e2); + } + function f(e2, t2) { + for (var r2 = 0; r2 < e2.length; r2++) + t2[r2] = e2[r2]; + return t2; + } + a.applyFromCharCode = s; + var c = {}; + c.string = { string: n, array: function(e2) { + return l(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return c.string.uint8array(e2).buffer; + }, uint8array: function(e2) { + return l(e2, new Uint8Array(e2.length)); + }, nodebuffer: function(e2) { + return l(e2, r.allocBuffer(e2.length)); + } }, c.array = { string: s, array: n, arraybuffer: function(e2) { + return new Uint8Array(e2).buffer; + }, uint8array: function(e2) { + return new Uint8Array(e2); + }, nodebuffer: function(e2) { + return r.newBufferFrom(e2); + } }, c.arraybuffer = { string: function(e2) { + return s(new Uint8Array(e2)); + }, array: function(e2) { + return f(new Uint8Array(e2), new Array(e2.byteLength)); + }, arraybuffer: n, uint8array: function(e2) { + return new Uint8Array(e2); + }, nodebuffer: function(e2) { + return r.newBufferFrom(new Uint8Array(e2)); + } }, c.uint8array = { string: s, array: function(e2) { + return f(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return e2.buffer; + }, uint8array: n, nodebuffer: function(e2) { + return r.newBufferFrom(e2); + } }, c.nodebuffer = { string: s, array: function(e2) { + return f(e2, new Array(e2.length)); + }, arraybuffer: function(e2) { + return c.nodebuffer.uint8array(e2).buffer; + }, uint8array: function(e2) { + return f(e2, new Uint8Array(e2.length)); + }, nodebuffer: n }, a.transformTo = function(e2, t2) { + if (t2 = t2 || "", !e2) + return t2; + a.checkSupport(e2); + var r2 = a.getTypeOf(t2); + return c[r2][e2](t2); + }, a.resolve = function(e2) { + for (var t2 = e2.split("/"), r2 = [], n2 = 0; n2 < t2.length; n2++) { + var i2 = t2[n2]; + "." === i2 || "" === i2 && 0 !== n2 && n2 !== t2.length - 1 || (".." === i2 ? r2.pop() : r2.push(i2)); + } + return r2.join("/"); + }, a.getTypeOf = function(e2) { + return "string" == typeof e2 ? "string" : "[object Array]" === Object.prototype.toString.call(e2) ? "array" : o.nodebuffer && r.isBuffer(e2) ? "nodebuffer" : o.uint8array && e2 instanceof Uint8Array ? "uint8array" : o.arraybuffer && e2 instanceof ArrayBuffer ? "arraybuffer" : void 0; + }, a.checkSupport = function(e2) { + if (!o[e2.toLowerCase()]) + throw new Error(e2 + " is not supported by this platform"); + }, a.MAX_VALUE_16BITS = 65535, a.MAX_VALUE_32BITS = -1, a.pretty = function(e2) { + var t2, r2, n2 = ""; + for (r2 = 0; r2 < (e2 || "").length; r2++) + n2 += "\\x" + ((t2 = e2.charCodeAt(r2)) < 16 ? "0" : "") + t2.toString(16).toUpperCase(); + return n2; + }, a.delay = function(e2, t2, r2) { + setImmediate(function() { + e2.apply(r2 || null, t2 || []); + }); + }, a.inherits = function(e2, t2) { + function r2() { + } + r2.prototype = t2.prototype, e2.prototype = new r2(); + }, a.extend = function() { + var e2, t2, r2 = {}; + for (e2 = 0; e2 < arguments.length; e2++) + for (t2 in arguments[e2]) + Object.prototype.hasOwnProperty.call(arguments[e2], t2) && void 0 === r2[t2] && (r2[t2] = arguments[e2][t2]); + return r2; + }, a.prepareContent = function(r2, e2, n2, i2, s2) { + return u.Promise.resolve(e2).then(function(n3) { + return o.blob && (n3 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n3))) && "undefined" != typeof FileReader ? new u.Promise(function(t2, r3) { + var e3 = new FileReader(); + e3.onload = function(e4) { + t2(e4.target.result); + }, e3.onerror = function(e4) { + r3(e4.target.error); + }, e3.readAsArrayBuffer(n3); + }) : n3; + }).then(function(e3) { + var t2 = a.getTypeOf(e3); + return t2 ? ("arraybuffer" === t2 ? e3 = a.transformTo("uint8array", e3) : "string" === t2 && (s2 ? e3 = h.decode(e3) : n2 && true !== i2 && (e3 = function(e4) { + return l(e4, o.uint8array ? new Uint8Array(e4.length) : new Array(e4.length)); + }(e3))), e3) : u.Promise.reject(new Error("Can't read the data of '" + r2 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); + }); + }; + }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e, t, r) { + "use strict"; + var n = e("./reader/readerFor"), i = e("./utils"), s = e("./signature"), a = e("./zipEntry"), o = e("./support"); + function h(e2) { + this.files = [], this.loadOptions = e2; + } + h.prototype = { checkSignature: function(e2) { + if (!this.reader.readAndCheckSignature(e2)) { + this.reader.index -= 4; + var t2 = this.reader.readString(4); + throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t2) + ", expected " + i.pretty(e2) + ")"); + } + }, isSignature: function(e2, t2) { + var r2 = this.reader.index; + this.reader.setIndex(e2); + var n2 = this.reader.readString(4) === t2; + return this.reader.setIndex(r2), n2; + }, readBlockEndOfCentral: function() { + this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); + var e2 = this.reader.readData(this.zipCommentLength), t2 = o.uint8array ? "uint8array" : "array", r2 = i.transformTo(t2, e2); + this.zipComment = this.loadOptions.decodeFileName(r2); + }, readBlockZip64EndOfCentral: function() { + this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; + for (var e2, t2, r2, n2 = this.zip64EndOfCentralSize - 44; 0 < n2; ) + e2 = this.reader.readInt(2), t2 = this.reader.readInt(4), r2 = this.reader.readData(t2), this.zip64ExtensibleData[e2] = { id: e2, length: t2, value: r2 }; + }, readBlockZip64EndOfCentralLocator: function() { + if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) + throw new Error("Multi-volumes zip are not supported"); + }, readLocalFiles: function() { + var e2, t2; + for (e2 = 0; e2 < this.files.length; e2++) + t2 = this.files[e2], this.reader.setIndex(t2.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t2.readLocalPart(this.reader), t2.handleUTF8(), t2.processAttributes(); + }, readCentralDir: function() { + var e2; + for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER); ) + (e2 = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e2); + if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) + throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); + }, readEndOfCentral: function() { + var e2 = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END); + if (e2 < 0) + throw !this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); + this.reader.setIndex(e2); + var t2 = e2; + if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) { + if (this.zip64 = true, (e2 = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); + if (this.reader.setIndex(e2), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) + throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); + this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); + } + var r2 = this.centralDirOffset + this.centralDirSize; + this.zip64 && (r2 += 20, r2 += 12 + this.zip64EndOfCentralSize); + var n2 = t2 - r2; + if (0 < n2) + this.isSignature(t2, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n2); + else if (n2 < 0) + throw new Error("Corrupted zip: missing " + Math.abs(n2) + " bytes."); + }, prepareReader: function(e2) { + this.reader = n(e2); + }, load: function(e2) { + this.prepareReader(e2), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); + } }, t.exports = h; + }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e, t, r) { + "use strict"; + var n = e("./reader/readerFor"), s = e("./utils"), i = e("./compressedObject"), a = e("./crc32"), o = e("./utf8"), h = e("./compressions"), u = e("./support"); + function l(e2, t2) { + this.options = e2, this.loadOptions = t2; + } + l.prototype = { isEncrypted: function() { + return 1 == (1 & this.bitFlag); + }, useUTF8: function() { + return 2048 == (2048 & this.bitFlag); + }, readLocalPart: function(e2) { + var t2, r2; + if (e2.skip(22), this.fileNameLength = e2.readInt(2), r2 = e2.readInt(2), this.fileName = e2.readData(this.fileNameLength), e2.skip(r2), -1 === this.compressedSize || -1 === this.uncompressedSize) + throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); + if (null === (t2 = function(e3) { + for (var t3 in h) + if (Object.prototype.hasOwnProperty.call(h, t3) && h[t3].magic === e3) + return h[t3]; + return null; + }(this.compressionMethod))) + throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")"); + this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t2, e2.readData(this.compressedSize)); + }, readCentralPart: function(e2) { + this.versionMadeBy = e2.readInt(2), e2.skip(2), this.bitFlag = e2.readInt(2), this.compressionMethod = e2.readString(2), this.date = e2.readDate(), this.crc32 = e2.readInt(4), this.compressedSize = e2.readInt(4), this.uncompressedSize = e2.readInt(4); + var t2 = e2.readInt(2); + if (this.extraFieldsLength = e2.readInt(2), this.fileCommentLength = e2.readInt(2), this.diskNumberStart = e2.readInt(2), this.internalFileAttributes = e2.readInt(2), this.externalFileAttributes = e2.readInt(4), this.localHeaderOffset = e2.readInt(4), this.isEncrypted()) + throw new Error("Encrypted zip are not supported"); + e2.skip(t2), this.readExtraFields(e2), this.parseZIP64ExtraField(e2), this.fileComment = e2.readData(this.fileCommentLength); + }, processAttributes: function() { + this.unixPermissions = null, this.dosPermissions = null; + var e2 = this.versionMadeBy >> 8; + this.dir = !!(16 & this.externalFileAttributes), 0 == e2 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e2 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); + }, parseZIP64ExtraField: function() { + if (this.extraFields[1]) { + var e2 = n(this.extraFields[1].value); + this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = e2.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = e2.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = e2.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = e2.readInt(4)); + } + }, readExtraFields: function(e2) { + var t2, r2, n2, i2 = e2.index + this.extraFieldsLength; + for (this.extraFields || (this.extraFields = {}); e2.index + 4 < i2; ) + t2 = e2.readInt(2), r2 = e2.readInt(2), n2 = e2.readData(r2), this.extraFields[t2] = { id: t2, length: r2, value: n2 }; + e2.setIndex(i2); + }, handleUTF8: function() { + var e2 = u.uint8array ? "uint8array" : "array"; + if (this.useUTF8()) + this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment); + else { + var t2 = this.findExtraFieldUnicodePath(); + if (null !== t2) + this.fileNameStr = t2; + else { + var r2 = s.transformTo(e2, this.fileName); + this.fileNameStr = this.loadOptions.decodeFileName(r2); + } + var n2 = this.findExtraFieldUnicodeComment(); + if (null !== n2) + this.fileCommentStr = n2; + else { + var i2 = s.transformTo(e2, this.fileComment); + this.fileCommentStr = this.loadOptions.decodeFileName(i2); + } + } + }, findExtraFieldUnicodePath: function() { + var e2 = this.extraFields[28789]; + if (e2) { + var t2 = n(e2.value); + return 1 !== t2.readInt(1) ? null : a(this.fileName) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); + } + return null; + }, findExtraFieldUnicodeComment: function() { + var e2 = this.extraFields[25461]; + if (e2) { + var t2 = n(e2.value); + return 1 !== t2.readInt(1) ? null : a(this.fileComment) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); + } + return null; + } }, t.exports = l; + }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e, t, r) { + "use strict"; + function n(e2, t2, r2) { + this.name = e2, this.dir = r2.dir, this.date = r2.date, this.comment = r2.comment, this.unixPermissions = r2.unixPermissions, this.dosPermissions = r2.dosPermissions, this._data = t2, this._dataBinary = r2.binary, this.options = { compression: r2.compression, compressionOptions: r2.compressionOptions }; + } + var s = e("./stream/StreamHelper"), i = e("./stream/DataWorker"), a = e("./utf8"), o = e("./compressedObject"), h = e("./stream/GenericWorker"); + n.prototype = { internalStream: function(e2) { + var t2 = null, r2 = "string"; + try { + if (!e2) + throw new Error("No output type specified."); + var n2 = "string" === (r2 = e2.toLowerCase()) || "text" === r2; + "binarystring" !== r2 && "text" !== r2 || (r2 = "string"), t2 = this._decompressWorker(); + var i2 = !this._dataBinary; + i2 && !n2 && (t2 = t2.pipe(new a.Utf8EncodeWorker())), !i2 && n2 && (t2 = t2.pipe(new a.Utf8DecodeWorker())); + } catch (e3) { + (t2 = new h("error")).error(e3); + } + return new s(t2, r2, ""); + }, async: function(e2, t2) { + return this.internalStream(e2).accumulate(t2); + }, nodeStream: function(e2, t2) { + return this.internalStream(e2 || "nodebuffer").toNodejsStream(t2); + }, _compressWorker: function(e2, t2) { + if (this._data instanceof o && this._data.compression.magic === e2.magic) + return this._data.getCompressedWorker(); + var r2 = this._decompressWorker(); + return this._dataBinary || (r2 = r2.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r2, e2, t2); + }, _decompressWorker: function() { + return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof h ? this._data : new i(this._data); + } }; + for (var u = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() { + throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); + }, f = 0; f < u.length; f++) + n.prototype[u[f]] = l; + t.exports = n; + }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e, l, t) { + (function(t2) { + "use strict"; + var r, n, e2 = t2.MutationObserver || t2.WebKitMutationObserver; + if (e2) { + var i = 0, s = new e2(u), a = t2.document.createTextNode(""); + s.observe(a, { characterData: true }), r = function() { + a.data = i = ++i % 2; + }; + } else if (t2.setImmediate || void 0 === t2.MessageChannel) + r = "document" in t2 && "onreadystatechange" in t2.document.createElement("script") ? function() { + var e3 = t2.document.createElement("script"); + e3.onreadystatechange = function() { + u(), e3.onreadystatechange = null, e3.parentNode.removeChild(e3), e3 = null; + }, t2.document.documentElement.appendChild(e3); + } : function() { + setTimeout(u, 0); + }; + else { + var o = new t2.MessageChannel(); + o.port1.onmessage = u, r = function() { + o.port2.postMessage(0); + }; + } + var h = []; + function u() { + var e3, t3; + n = true; + for (var r2 = h.length; r2; ) { + for (t3 = h, h = [], e3 = -1; ++e3 < r2; ) + t3[e3](); + r2 = h.length; + } + n = false; + } + l.exports = function(e3) { + 1 !== h.push(e3) || n || r(); + }; + }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); + }, {}], 37: [function(e, t, r) { + "use strict"; + var i = e("immediate"); + function u() { + } + var l = {}, s = ["REJECTED"], a = ["FULFILLED"], n = ["PENDING"]; + function o(e2) { + if ("function" != typeof e2) + throw new TypeError("resolver must be a function"); + this.state = n, this.queue = [], this.outcome = void 0, e2 !== u && d(this, e2); + } + function h(e2, t2, r2) { + this.promise = e2, "function" == typeof t2 && (this.onFulfilled = t2, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r2 && (this.onRejected = r2, this.callRejected = this.otherCallRejected); + } + function f(t2, r2, n2) { + i(function() { + var e2; + try { + e2 = r2(n2); + } catch (e3) { + return l.reject(t2, e3); + } + e2 === t2 ? l.reject(t2, new TypeError("Cannot resolve promise with itself")) : l.resolve(t2, e2); + }); + } + function c(e2) { + var t2 = e2 && e2.then; + if (e2 && ("object" == typeof e2 || "function" == typeof e2) && "function" == typeof t2) + return function() { + t2.apply(e2, arguments); + }; + } + function d(t2, e2) { + var r2 = false; + function n2(e3) { + r2 || (r2 = true, l.reject(t2, e3)); + } + function i2(e3) { + r2 || (r2 = true, l.resolve(t2, e3)); + } + var s2 = p(function() { + e2(i2, n2); + }); + "error" === s2.status && n2(s2.value); + } + function p(e2, t2) { + var r2 = {}; + try { + r2.value = e2(t2), r2.status = "success"; + } catch (e3) { + r2.status = "error", r2.value = e3; + } + return r2; + } + (t.exports = o).prototype.finally = function(t2) { + if ("function" != typeof t2) + return this; + var r2 = this.constructor; + return this.then(function(e2) { + return r2.resolve(t2()).then(function() { + return e2; + }); + }, function(e2) { + return r2.resolve(t2()).then(function() { + throw e2; + }); + }); + }, o.prototype.catch = function(e2) { + return this.then(null, e2); + }, o.prototype.then = function(e2, t2) { + if ("function" != typeof e2 && this.state === a || "function" != typeof t2 && this.state === s) + return this; + var r2 = new this.constructor(u); + this.state !== n ? f(r2, this.state === a ? e2 : t2, this.outcome) : this.queue.push(new h(r2, e2, t2)); + return r2; + }, h.prototype.callFulfilled = function(e2) { + l.resolve(this.promise, e2); + }, h.prototype.otherCallFulfilled = function(e2) { + f(this.promise, this.onFulfilled, e2); + }, h.prototype.callRejected = function(e2) { + l.reject(this.promise, e2); + }, h.prototype.otherCallRejected = function(e2) { + f(this.promise, this.onRejected, e2); + }, l.resolve = function(e2, t2) { + var r2 = p(c, t2); + if ("error" === r2.status) + return l.reject(e2, r2.value); + var n2 = r2.value; + if (n2) + d(e2, n2); + else { + e2.state = a, e2.outcome = t2; + for (var i2 = -1, s2 = e2.queue.length; ++i2 < s2; ) + e2.queue[i2].callFulfilled(t2); + } + return e2; + }, l.reject = function(e2, t2) { + e2.state = s, e2.outcome = t2; + for (var r2 = -1, n2 = e2.queue.length; ++r2 < n2; ) + e2.queue[r2].callRejected(t2); + return e2; + }, o.resolve = function(e2) { + if (e2 instanceof this) + return e2; + return l.resolve(new this(u), e2); + }, o.reject = function(e2) { + var t2 = new this(u); + return l.reject(t2, e2); + }, o.all = function(e2) { + var r2 = this; + if ("[object Array]" !== Object.prototype.toString.call(e2)) + return this.reject(new TypeError("must be an array")); + var n2 = e2.length, i2 = false; + if (!n2) + return this.resolve([]); + var s2 = new Array(n2), a2 = 0, t2 = -1, o2 = new this(u); + for (; ++t2 < n2; ) + h2(e2[t2], t2); + return o2; + function h2(e3, t3) { + r2.resolve(e3).then(function(e4) { + s2[t3] = e4, ++a2 !== n2 || i2 || (i2 = true, l.resolve(o2, s2)); + }, function(e4) { + i2 || (i2 = true, l.reject(o2, e4)); + }); + } + }, o.race = function(e2) { + var t2 = this; + if ("[object Array]" !== Object.prototype.toString.call(e2)) + return this.reject(new TypeError("must be an array")); + var r2 = e2.length, n2 = false; + if (!r2) + return this.resolve([]); + var i2 = -1, s2 = new this(u); + for (; ++i2 < r2; ) + a2 = e2[i2], t2.resolve(a2).then(function(e3) { + n2 || (n2 = true, l.resolve(s2, e3)); + }, function(e3) { + n2 || (n2 = true, l.reject(s2, e3)); + }); + var a2; + return s2; + }; + }, { immediate: 36 }], 38: [function(e, t, r) { + "use strict"; + var n = {}; + (0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n; + }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e, t, r) { + "use strict"; + var a = e("./zlib/deflate"), o = e("./utils/common"), h = e("./utils/strings"), i = e("./zlib/messages"), s = e("./zlib/zstream"), u = Object.prototype.toString, l = 0, f = -1, c = 0, d = 8; + function p(e2) { + if (!(this instanceof p)) + return new p(e2); + this.options = o.assign({ level: f, method: d, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c, to: "" }, e2 || {}); + var t2 = this.options; + t2.raw && 0 < t2.windowBits ? t2.windowBits = -t2.windowBits : t2.gzip && 0 < t2.windowBits && t2.windowBits < 16 && (t2.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0; + var r2 = a.deflateInit2(this.strm, t2.level, t2.method, t2.windowBits, t2.memLevel, t2.strategy); + if (r2 !== l) + throw new Error(i[r2]); + if (t2.header && a.deflateSetHeader(this.strm, t2.header), t2.dictionary) { + var n2; + if (n2 = "string" == typeof t2.dictionary ? h.string2buf(t2.dictionary) : "[object ArrayBuffer]" === u.call(t2.dictionary) ? new Uint8Array(t2.dictionary) : t2.dictionary, (r2 = a.deflateSetDictionary(this.strm, n2)) !== l) + throw new Error(i[r2]); + this._dict_set = true; + } + } + function n(e2, t2) { + var r2 = new p(t2); + if (r2.push(e2, true), r2.err) + throw r2.msg || i[r2.err]; + return r2.result; + } + p.prototype.push = function(e2, t2) { + var r2, n2, i2 = this.strm, s2 = this.options.chunkSize; + if (this.ended) + return false; + n2 = t2 === ~~t2 ? t2 : true === t2 ? 4 : 0, "string" == typeof e2 ? i2.input = h.string2buf(e2) : "[object ArrayBuffer]" === u.call(e2) ? i2.input = new Uint8Array(e2) : i2.input = e2, i2.next_in = 0, i2.avail_in = i2.input.length; + do { + if (0 === i2.avail_out && (i2.output = new o.Buf8(s2), i2.next_out = 0, i2.avail_out = s2), 1 !== (r2 = a.deflate(i2, n2)) && r2 !== l) + return this.onEnd(r2), !(this.ended = true); + 0 !== i2.avail_out && (0 !== i2.avail_in || 4 !== n2 && 2 !== n2) || ("string" === this.options.to ? this.onData(h.buf2binstring(o.shrinkBuf(i2.output, i2.next_out))) : this.onData(o.shrinkBuf(i2.output, i2.next_out))); + } while ((0 < i2.avail_in || 0 === i2.avail_out) && 1 !== r2); + return 4 === n2 ? (r2 = a.deflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === l) : 2 !== n2 || (this.onEnd(l), !(i2.avail_out = 0)); + }, p.prototype.onData = function(e2) { + this.chunks.push(e2); + }, p.prototype.onEnd = function(e2) { + e2 === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; + }, r.Deflate = p, r.deflate = n, r.deflateRaw = function(e2, t2) { + return (t2 = t2 || {}).raw = true, n(e2, t2); + }, r.gzip = function(e2, t2) { + return (t2 = t2 || {}).gzip = true, n(e2, t2); + }; + }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e, t, r) { + "use strict"; + var c = e("./zlib/inflate"), d = e("./utils/common"), p = e("./utils/strings"), m = e("./zlib/constants"), n = e("./zlib/messages"), i = e("./zlib/zstream"), s = e("./zlib/gzheader"), _ = Object.prototype.toString; + function a(e2) { + if (!(this instanceof a)) + return new a(e2); + this.options = d.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {}); + var t2 = this.options; + t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0; + var r2 = c.inflateInit2(this.strm, t2.windowBits); + if (r2 !== m.Z_OK) + throw new Error(n[r2]); + this.header = new s(), c.inflateGetHeader(this.strm, this.header); + } + function o(e2, t2) { + var r2 = new a(t2); + if (r2.push(e2, true), r2.err) + throw r2.msg || n[r2.err]; + return r2.result; + } + a.prototype.push = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h = this.strm, u = this.options.chunkSize, l = this.options.dictionary, f = false; + if (this.ended) + return false; + n2 = t2 === ~~t2 ? t2 : true === t2 ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e2 ? h.input = p.binstring2buf(e2) : "[object ArrayBuffer]" === _.call(e2) ? h.input = new Uint8Array(e2) : h.input = e2, h.next_in = 0, h.avail_in = h.input.length; + do { + if (0 === h.avail_out && (h.output = new d.Buf8(u), h.next_out = 0, h.avail_out = u), (r2 = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && l && (o2 = "string" == typeof l ? p.string2buf(l) : "[object ArrayBuffer]" === _.call(l) ? new Uint8Array(l) : l, r2 = c.inflateSetDictionary(this.strm, o2)), r2 === m.Z_BUF_ERROR && true === f && (r2 = m.Z_OK, f = false), r2 !== m.Z_STREAM_END && r2 !== m.Z_OK) + return this.onEnd(r2), !(this.ended = true); + h.next_out && (0 !== h.avail_out && r2 !== m.Z_STREAM_END && (0 !== h.avail_in || n2 !== m.Z_FINISH && n2 !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i2 = p.utf8border(h.output, h.next_out), s2 = h.next_out - i2, a2 = p.buf2string(h.output, i2), h.next_out = s2, h.avail_out = u - s2, s2 && d.arraySet(h.output, h.output, i2, s2, 0), this.onData(a2)) : this.onData(d.shrinkBuf(h.output, h.next_out)))), 0 === h.avail_in && 0 === h.avail_out && (f = true); + } while ((0 < h.avail_in || 0 === h.avail_out) && r2 !== m.Z_STREAM_END); + return r2 === m.Z_STREAM_END && (n2 = m.Z_FINISH), n2 === m.Z_FINISH ? (r2 = c.inflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === m.Z_OK) : n2 !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(h.avail_out = 0)); + }, a.prototype.onData = function(e2) { + this.chunks.push(e2); + }, a.prototype.onEnd = function(e2) { + e2 === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; + }, r.Inflate = a, r.inflate = o, r.inflateRaw = function(e2, t2) { + return (t2 = t2 || {}).raw = true, o(e2, t2); + }, r.ungzip = o; + }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e, t, r) { + "use strict"; + var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; + r.assign = function(e2) { + for (var t2 = Array.prototype.slice.call(arguments, 1); t2.length; ) { + var r2 = t2.shift(); + if (r2) { + if ("object" != typeof r2) + throw new TypeError(r2 + "must be non-object"); + for (var n2 in r2) + r2.hasOwnProperty(n2) && (e2[n2] = r2[n2]); + } + } + return e2; + }, r.shrinkBuf = function(e2, t2) { + return e2.length === t2 ? e2 : e2.subarray ? e2.subarray(0, t2) : (e2.length = t2, e2); + }; + var i = { arraySet: function(e2, t2, r2, n2, i2) { + if (t2.subarray && e2.subarray) + e2.set(t2.subarray(r2, r2 + n2), i2); + else + for (var s2 = 0; s2 < n2; s2++) + e2[i2 + s2] = t2[r2 + s2]; + }, flattenChunks: function(e2) { + var t2, r2, n2, i2, s2, a; + for (t2 = n2 = 0, r2 = e2.length; t2 < r2; t2++) + n2 += e2[t2].length; + for (a = new Uint8Array(n2), t2 = i2 = 0, r2 = e2.length; t2 < r2; t2++) + s2 = e2[t2], a.set(s2, i2), i2 += s2.length; + return a; + } }, s = { arraySet: function(e2, t2, r2, n2, i2) { + for (var s2 = 0; s2 < n2; s2++) + e2[i2 + s2] = t2[r2 + s2]; + }, flattenChunks: function(e2) { + return [].concat.apply([], e2); + } }; + r.setTyped = function(e2) { + e2 ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s)); + }, r.setTyped(n); + }, {}], 42: [function(e, t, r) { + "use strict"; + var h = e("./common"), i = true, s = true; + try { + String.fromCharCode.apply(null, [0]); + } catch (e2) { + i = false; + } + try { + String.fromCharCode.apply(null, new Uint8Array(1)); + } catch (e2) { + s = false; + } + for (var u = new h.Buf8(256), n = 0; n < 256; n++) + u[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; + function l(e2, t2) { + if (t2 < 65537 && (e2.subarray && s || !e2.subarray && i)) + return String.fromCharCode.apply(null, h.shrinkBuf(e2, t2)); + for (var r2 = "", n2 = 0; n2 < t2; n2++) + r2 += String.fromCharCode(e2[n2]); + return r2; + } + u[254] = u[254] = 1, r.string2buf = function(e2) { + var t2, r2, n2, i2, s2, a = e2.length, o = 0; + for (i2 = 0; i2 < a; i2++) + 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; + for (t2 = new h.Buf8(o), i2 = s2 = 0; s2 < o; i2++) + 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); + return t2; + }, r.buf2binstring = function(e2) { + return l(e2, e2.length); + }, r.binstring2buf = function(e2) { + for (var t2 = new h.Buf8(e2.length), r2 = 0, n2 = t2.length; r2 < n2; r2++) + t2[r2] = e2.charCodeAt(r2); + return t2; + }, r.buf2string = function(e2, t2) { + var r2, n2, i2, s2, a = t2 || e2.length, o = new Array(2 * a); + for (r2 = n2 = 0; r2 < a; ) + if ((i2 = e2[r2++]) < 128) + o[n2++] = i2; + else if (4 < (s2 = u[i2])) + o[n2++] = 65533, r2 += s2 - 1; + else { + for (i2 &= 2 === s2 ? 31 : 3 === s2 ? 15 : 7; 1 < s2 && r2 < a; ) + i2 = i2 << 6 | 63 & e2[r2++], s2--; + 1 < s2 ? o[n2++] = 65533 : i2 < 65536 ? o[n2++] = i2 : (i2 -= 65536, o[n2++] = 55296 | i2 >> 10 & 1023, o[n2++] = 56320 | 1023 & i2); + } + return l(o, n2); + }, r.utf8border = function(e2, t2) { + var r2; + for ((t2 = t2 || e2.length) > e2.length && (t2 = e2.length), r2 = t2 - 1; 0 <= r2 && 128 == (192 & e2[r2]); ) + r2--; + return r2 < 0 ? t2 : 0 === r2 ? t2 : r2 + u[e2[r2]] > t2 ? r2 : t2; + }; + }, { "./common": 41 }], 43: [function(e, t, r) { + "use strict"; + t.exports = function(e2, t2, r2, n) { + for (var i = 65535 & e2 | 0, s = e2 >>> 16 & 65535 | 0, a = 0; 0 !== r2; ) { + for (r2 -= a = 2e3 < r2 ? 2e3 : r2; s = s + (i = i + t2[n++] | 0) | 0, --a; ) + ; + i %= 65521, s %= 65521; + } + return i | s << 16 | 0; + }; + }, {}], 44: [function(e, t, r) { + "use strict"; + t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; + }, {}], 45: [function(e, t, r) { + "use strict"; + var o = function() { + for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { + e2 = r2; + for (var n = 0; n < 8; n++) + e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; + t2[r2] = e2; + } + return t2; + }(); + t.exports = function(e2, t2, r2, n) { + var i = o, s = n + r2; + e2 ^= -1; + for (var a = n; a < s; a++) + e2 = e2 >>> 8 ^ i[255 & (e2 ^ t2[a])]; + return -1 ^ e2; + }; + }, {}], 46: [function(e, t, r) { + "use strict"; + var h, c = e("../utils/common"), u = e("./trees"), d = e("./adler32"), p = e("./crc32"), n = e("./messages"), l = 0, f = 4, m = 0, _ = -2, g = -1, b = 4, i = 2, v = 8, y = 9, s = 286, a = 30, o = 19, w = 2 * s + 1, k = 15, x = 3, S = 258, z = S + x + 1, C = 42, E = 113, A = 1, I = 2, O = 3, B = 4; + function R(e2, t2) { + return e2.msg = n[t2], t2; + } + function T(e2) { + return (e2 << 1) - (4 < e2 ? 9 : 0); + } + function D(e2) { + for (var t2 = e2.length; 0 <= --t2; ) + e2[t2] = 0; + } + function F(e2) { + var t2 = e2.state, r2 = t2.pending; + r2 > e2.avail_out && (r2 = e2.avail_out), 0 !== r2 && (c.arraySet(e2.output, t2.pending_buf, t2.pending_out, r2, e2.next_out), e2.next_out += r2, t2.pending_out += r2, e2.total_out += r2, e2.avail_out -= r2, t2.pending -= r2, 0 === t2.pending && (t2.pending_out = 0)); + } + function N(e2, t2) { + u._tr_flush_block(e2, 0 <= e2.block_start ? e2.block_start : -1, e2.strstart - e2.block_start, t2), e2.block_start = e2.strstart, F(e2.strm); + } + function U(e2, t2) { + e2.pending_buf[e2.pending++] = t2; + } + function P(e2, t2) { + e2.pending_buf[e2.pending++] = t2 >>> 8 & 255, e2.pending_buf[e2.pending++] = 255 & t2; + } + function L(e2, t2) { + var r2, n2, i2 = e2.max_chain_length, s2 = e2.strstart, a2 = e2.prev_length, o2 = e2.nice_match, h2 = e2.strstart > e2.w_size - z ? e2.strstart - (e2.w_size - z) : 0, u2 = e2.window, l2 = e2.w_mask, f2 = e2.prev, c2 = e2.strstart + S, d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; + e2.prev_length >= e2.good_match && (i2 >>= 2), o2 > e2.lookahead && (o2 = e2.lookahead); + do { + if (u2[(r2 = t2) + a2] === p2 && u2[r2 + a2 - 1] === d2 && u2[r2] === u2[s2] && u2[++r2] === u2[s2 + 1]) { + s2 += 2, r2++; + do { + } while (u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && s2 < c2); + if (n2 = S - (c2 - s2), s2 = c2 - S, a2 < n2) { + if (e2.match_start = t2, o2 <= (a2 = n2)) + break; + d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; + } + } + } while ((t2 = f2[t2 & l2]) > h2 && 0 != --i2); + return a2 <= e2.lookahead ? a2 : e2.lookahead; + } + function j(e2) { + var t2, r2, n2, i2, s2, a2, o2, h2, u2, l2, f2 = e2.w_size; + do { + if (i2 = e2.window_size - e2.lookahead - e2.strstart, e2.strstart >= f2 + (f2 - z)) { + for (c.arraySet(e2.window, e2.window, f2, f2, 0), e2.match_start -= f2, e2.strstart -= f2, e2.block_start -= f2, t2 = r2 = e2.hash_size; n2 = e2.head[--t2], e2.head[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) + ; + for (t2 = r2 = f2; n2 = e2.prev[--t2], e2.prev[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) + ; + i2 += f2; + } + if (0 === e2.strm.avail_in) + break; + if (a2 = e2.strm, o2 = e2.window, h2 = e2.strstart + e2.lookahead, u2 = i2, l2 = void 0, l2 = a2.avail_in, u2 < l2 && (l2 = u2), r2 = 0 === l2 ? 0 : (a2.avail_in -= l2, c.arraySet(o2, a2.input, a2.next_in, l2, h2), 1 === a2.state.wrap ? a2.adler = d(a2.adler, o2, l2, h2) : 2 === a2.state.wrap && (a2.adler = p(a2.adler, o2, l2, h2)), a2.next_in += l2, a2.total_in += l2, l2), e2.lookahead += r2, e2.lookahead + e2.insert >= x) + for (s2 = e2.strstart - e2.insert, e2.ins_h = e2.window[s2], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + 1]) & e2.hash_mask; e2.insert && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + x - 1]) & e2.hash_mask, e2.prev[s2 & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = s2, s2++, e2.insert--, !(e2.lookahead + e2.insert < x)); ) + ; + } while (e2.lookahead < z && 0 !== e2.strm.avail_in); + } + function Z(e2, t2) { + for (var r2, n2; ; ) { + if (e2.lookahead < z) { + if (j(e2), e2.lookahead < z && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 !== r2 && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2)), e2.match_length >= x) + if (n2 = u._tr_tally(e2, e2.strstart - e2.match_start, e2.match_length - x), e2.lookahead -= e2.match_length, e2.match_length <= e2.max_lazy_match && e2.lookahead >= x) { + for (e2.match_length--; e2.strstart++, e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart, 0 != --e2.match_length; ) + ; + e2.strstart++; + } else + e2.strstart += e2.match_length, e2.match_length = 0, e2.ins_h = e2.window[e2.strstart], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + 1]) & e2.hash_mask; + else + n2 = u._tr_tally(e2, 0, e2.window[e2.strstart]), e2.lookahead--, e2.strstart++; + if (n2 && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } + return e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; + } + function W(e2, t2) { + for (var r2, n2, i2; ; ) { + if (e2.lookahead < z) { + if (j(e2), e2.lookahead < z && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), e2.prev_length = e2.match_length, e2.prev_match = e2.match_start, e2.match_length = x - 1, 0 !== r2 && e2.prev_length < e2.max_lazy_match && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2), e2.match_length <= 5 && (1 === e2.strategy || e2.match_length === x && 4096 < e2.strstart - e2.match_start) && (e2.match_length = x - 1)), e2.prev_length >= x && e2.match_length <= e2.prev_length) { + for (i2 = e2.strstart + e2.lookahead - x, n2 = u._tr_tally(e2, e2.strstart - 1 - e2.prev_match, e2.prev_length - x), e2.lookahead -= e2.prev_length - 1, e2.prev_length -= 2; ++e2.strstart <= i2 && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 != --e2.prev_length; ) + ; + if (e2.match_available = 0, e2.match_length = x - 1, e2.strstart++, n2 && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } else if (e2.match_available) { + if ((n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1])) && N(e2, false), e2.strstart++, e2.lookahead--, 0 === e2.strm.avail_out) + return A; + } else + e2.match_available = 1, e2.strstart++, e2.lookahead--; + } + return e2.match_available && (n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1]), e2.match_available = 0), e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; + } + function M(e2, t2, r2, n2, i2) { + this.good_length = e2, this.max_lazy = t2, this.nice_length = r2, this.max_chain = n2, this.func = i2; + } + function H() { + this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c.Buf16(2 * w), this.dyn_dtree = new c.Buf16(2 * (2 * a + 1)), this.bl_tree = new c.Buf16(2 * (2 * o + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c.Buf16(k + 1), this.heap = new c.Buf16(2 * s + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c.Buf16(2 * s + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; + } + function G(e2) { + var t2; + return e2 && e2.state ? (e2.total_in = e2.total_out = 0, e2.data_type = i, (t2 = e2.state).pending = 0, t2.pending_out = 0, t2.wrap < 0 && (t2.wrap = -t2.wrap), t2.status = t2.wrap ? C : E, e2.adler = 2 === t2.wrap ? 0 : 1, t2.last_flush = l, u._tr_init(t2), m) : R(e2, _); + } + function K(e2) { + var t2 = G(e2); + return t2 === m && function(e3) { + e3.window_size = 2 * e3.w_size, D(e3.head), e3.max_lazy_match = h[e3.level].max_lazy, e3.good_match = h[e3.level].good_length, e3.nice_match = h[e3.level].nice_length, e3.max_chain_length = h[e3.level].max_chain, e3.strstart = 0, e3.block_start = 0, e3.lookahead = 0, e3.insert = 0, e3.match_length = e3.prev_length = x - 1, e3.match_available = 0, e3.ins_h = 0; + }(e2.state), t2; + } + function Y(e2, t2, r2, n2, i2, s2) { + if (!e2) + return _; + var a2 = 1; + if (t2 === g && (t2 = 6), n2 < 0 ? (a2 = 0, n2 = -n2) : 15 < n2 && (a2 = 2, n2 -= 16), i2 < 1 || y < i2 || r2 !== v || n2 < 8 || 15 < n2 || t2 < 0 || 9 < t2 || s2 < 0 || b < s2) + return R(e2, _); + 8 === n2 && (n2 = 9); + var o2 = new H(); + return (e2.state = o2).strm = e2, o2.wrap = a2, o2.gzhead = null, o2.w_bits = n2, o2.w_size = 1 << o2.w_bits, o2.w_mask = o2.w_size - 1, o2.hash_bits = i2 + 7, o2.hash_size = 1 << o2.hash_bits, o2.hash_mask = o2.hash_size - 1, o2.hash_shift = ~~((o2.hash_bits + x - 1) / x), o2.window = new c.Buf8(2 * o2.w_size), o2.head = new c.Buf16(o2.hash_size), o2.prev = new c.Buf16(o2.w_size), o2.lit_bufsize = 1 << i2 + 6, o2.pending_buf_size = 4 * o2.lit_bufsize, o2.pending_buf = new c.Buf8(o2.pending_buf_size), o2.d_buf = 1 * o2.lit_bufsize, o2.l_buf = 3 * o2.lit_bufsize, o2.level = t2, o2.strategy = s2, o2.method = r2, K(e2); + } + h = [new M(0, 0, 0, 0, function(e2, t2) { + var r2 = 65535; + for (r2 > e2.pending_buf_size - 5 && (r2 = e2.pending_buf_size - 5); ; ) { + if (e2.lookahead <= 1) { + if (j(e2), 0 === e2.lookahead && t2 === l) + return A; + if (0 === e2.lookahead) + break; + } + e2.strstart += e2.lookahead, e2.lookahead = 0; + var n2 = e2.block_start + r2; + if ((0 === e2.strstart || e2.strstart >= n2) && (e2.lookahead = e2.strstart - n2, e2.strstart = n2, N(e2, false), 0 === e2.strm.avail_out)) + return A; + if (e2.strstart - e2.block_start >= e2.w_size - z && (N(e2, false), 0 === e2.strm.avail_out)) + return A; + } + return e2.insert = 0, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : (e2.strstart > e2.block_start && (N(e2, false), e2.strm.avail_out), A); + }), new M(4, 4, 8, 4, Z), new M(4, 5, 16, 8, Z), new M(4, 6, 32, 32, Z), new M(4, 4, 16, 16, W), new M(8, 16, 32, 32, W), new M(8, 16, 128, 128, W), new M(8, 32, 128, 256, W), new M(32, 128, 258, 1024, W), new M(32, 258, 258, 4096, W)], r.deflateInit = function(e2, t2) { + return Y(e2, t2, v, 15, 8, 0); + }, r.deflateInit2 = Y, r.deflateReset = K, r.deflateResetKeep = G, r.deflateSetHeader = function(e2, t2) { + return e2 && e2.state ? 2 !== e2.state.wrap ? _ : (e2.state.gzhead = t2, m) : _; + }, r.deflate = function(e2, t2) { + var r2, n2, i2, s2; + if (!e2 || !e2.state || 5 < t2 || t2 < 0) + return e2 ? R(e2, _) : _; + if (n2 = e2.state, !e2.output || !e2.input && 0 !== e2.avail_in || 666 === n2.status && t2 !== f) + return R(e2, 0 === e2.avail_out ? -5 : _); + if (n2.strm = e2, r2 = n2.last_flush, n2.last_flush = t2, n2.status === C) + if (2 === n2.wrap) + e2.adler = 0, U(n2, 31), U(n2, 139), U(n2, 8), n2.gzhead ? (U(n2, (n2.gzhead.text ? 1 : 0) + (n2.gzhead.hcrc ? 2 : 0) + (n2.gzhead.extra ? 4 : 0) + (n2.gzhead.name ? 8 : 0) + (n2.gzhead.comment ? 16 : 0)), U(n2, 255 & n2.gzhead.time), U(n2, n2.gzhead.time >> 8 & 255), U(n2, n2.gzhead.time >> 16 & 255), U(n2, n2.gzhead.time >> 24 & 255), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 255 & n2.gzhead.os), n2.gzhead.extra && n2.gzhead.extra.length && (U(n2, 255 & n2.gzhead.extra.length), U(n2, n2.gzhead.extra.length >> 8 & 255)), n2.gzhead.hcrc && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending, 0)), n2.gzindex = 0, n2.status = 69) : (U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 3), n2.status = E); + else { + var a2 = v + (n2.w_bits - 8 << 4) << 8; + a2 |= (2 <= n2.strategy || n2.level < 2 ? 0 : n2.level < 6 ? 1 : 6 === n2.level ? 2 : 3) << 6, 0 !== n2.strstart && (a2 |= 32), a2 += 31 - a2 % 31, n2.status = E, P(n2, a2), 0 !== n2.strstart && (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), e2.adler = 1; + } + if (69 === n2.status) + if (n2.gzhead.extra) { + for (i2 = n2.pending; n2.gzindex < (65535 & n2.gzhead.extra.length) && (n2.pending !== n2.pending_buf_size || (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending !== n2.pending_buf_size)); ) + U(n2, 255 & n2.gzhead.extra[n2.gzindex]), n2.gzindex++; + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), n2.gzindex === n2.gzhead.extra.length && (n2.gzindex = 0, n2.status = 73); + } else + n2.status = 73; + if (73 === n2.status) + if (n2.gzhead.name) { + i2 = n2.pending; + do { + if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { + s2 = 1; + break; + } + s2 = n2.gzindex < n2.gzhead.name.length ? 255 & n2.gzhead.name.charCodeAt(n2.gzindex++) : 0, U(n2, s2); + } while (0 !== s2); + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.gzindex = 0, n2.status = 91); + } else + n2.status = 91; + if (91 === n2.status) + if (n2.gzhead.comment) { + i2 = n2.pending; + do { + if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { + s2 = 1; + break; + } + s2 = n2.gzindex < n2.gzhead.comment.length ? 255 & n2.gzhead.comment.charCodeAt(n2.gzindex++) : 0, U(n2, s2); + } while (0 !== s2); + n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.status = 103); + } else + n2.status = 103; + if (103 === n2.status && (n2.gzhead.hcrc ? (n2.pending + 2 > n2.pending_buf_size && F(e2), n2.pending + 2 <= n2.pending_buf_size && (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), e2.adler = 0, n2.status = E)) : n2.status = E), 0 !== n2.pending) { + if (F(e2), 0 === e2.avail_out) + return n2.last_flush = -1, m; + } else if (0 === e2.avail_in && T(t2) <= T(r2) && t2 !== f) + return R(e2, -5); + if (666 === n2.status && 0 !== e2.avail_in) + return R(e2, -5); + if (0 !== e2.avail_in || 0 !== n2.lookahead || t2 !== l && 666 !== n2.status) { + var o2 = 2 === n2.strategy ? function(e3, t3) { + for (var r3; ; ) { + if (0 === e3.lookahead && (j(e3), 0 === e3.lookahead)) { + if (t3 === l) + return A; + break; + } + if (e3.match_length = 0, r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++, r3 && (N(e3, false), 0 === e3.strm.avail_out)) + return A; + } + return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; + }(n2, t2) : 3 === n2.strategy ? function(e3, t3) { + for (var r3, n3, i3, s3, a3 = e3.window; ; ) { + if (e3.lookahead <= S) { + if (j(e3), e3.lookahead <= S && t3 === l) + return A; + if (0 === e3.lookahead) + break; + } + if (e3.match_length = 0, e3.lookahead >= x && 0 < e3.strstart && (n3 = a3[i3 = e3.strstart - 1]) === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3]) { + s3 = e3.strstart + S; + do { + } while (n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && i3 < s3); + e3.match_length = S - (s3 - i3), e3.match_length > e3.lookahead && (e3.match_length = e3.lookahead); + } + if (e3.match_length >= x ? (r3 = u._tr_tally(e3, 1, e3.match_length - x), e3.lookahead -= e3.match_length, e3.strstart += e3.match_length, e3.match_length = 0) : (r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++), r3 && (N(e3, false), 0 === e3.strm.avail_out)) + return A; + } + return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; + }(n2, t2) : h[n2.level].func(n2, t2); + if (o2 !== O && o2 !== B || (n2.status = 666), o2 === A || o2 === O) + return 0 === e2.avail_out && (n2.last_flush = -1), m; + if (o2 === I && (1 === t2 ? u._tr_align(n2) : 5 !== t2 && (u._tr_stored_block(n2, 0, 0, false), 3 === t2 && (D(n2.head), 0 === n2.lookahead && (n2.strstart = 0, n2.block_start = 0, n2.insert = 0))), F(e2), 0 === e2.avail_out)) + return n2.last_flush = -1, m; + } + return t2 !== f ? m : n2.wrap <= 0 ? 1 : (2 === n2.wrap ? (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), U(n2, e2.adler >> 16 & 255), U(n2, e2.adler >> 24 & 255), U(n2, 255 & e2.total_in), U(n2, e2.total_in >> 8 & 255), U(n2, e2.total_in >> 16 & 255), U(n2, e2.total_in >> 24 & 255)) : (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), F(e2), 0 < n2.wrap && (n2.wrap = -n2.wrap), 0 !== n2.pending ? m : 1); + }, r.deflateEnd = function(e2) { + var t2; + return e2 && e2.state ? (t2 = e2.state.status) !== C && 69 !== t2 && 73 !== t2 && 91 !== t2 && 103 !== t2 && t2 !== E && 666 !== t2 ? R(e2, _) : (e2.state = null, t2 === E ? R(e2, -3) : m) : _; + }, r.deflateSetDictionary = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h2, u2, l2 = t2.length; + if (!e2 || !e2.state) + return _; + if (2 === (s2 = (r2 = e2.state).wrap) || 1 === s2 && r2.status !== C || r2.lookahead) + return _; + for (1 === s2 && (e2.adler = d(e2.adler, t2, l2, 0)), r2.wrap = 0, l2 >= r2.w_size && (0 === s2 && (D(r2.head), r2.strstart = 0, r2.block_start = 0, r2.insert = 0), u2 = new c.Buf8(r2.w_size), c.arraySet(u2, t2, l2 - r2.w_size, r2.w_size, 0), t2 = u2, l2 = r2.w_size), a2 = e2.avail_in, o2 = e2.next_in, h2 = e2.input, e2.avail_in = l2, e2.next_in = 0, e2.input = t2, j(r2); r2.lookahead >= x; ) { + for (n2 = r2.strstart, i2 = r2.lookahead - (x - 1); r2.ins_h = (r2.ins_h << r2.hash_shift ^ r2.window[n2 + x - 1]) & r2.hash_mask, r2.prev[n2 & r2.w_mask] = r2.head[r2.ins_h], r2.head[r2.ins_h] = n2, n2++, --i2; ) + ; + r2.strstart = n2, r2.lookahead = x - 1, j(r2); + } + return r2.strstart += r2.lookahead, r2.block_start = r2.strstart, r2.insert = r2.lookahead, r2.lookahead = 0, r2.match_length = r2.prev_length = x - 1, r2.match_available = 0, e2.next_in = o2, e2.input = h2, e2.avail_in = a2, r2.wrap = s2, m; + }, r.deflateInfo = "pako deflate (from Nodeca project)"; + }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e, t, r) { + "use strict"; + t.exports = function() { + this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; + }; + }, {}], 48: [function(e, t, r) { + "use strict"; + t.exports = function(e2, t2) { + var r2, n, i, s, a, o, h, u, l, f, c, d, p, m, _, g, b, v, y, w, k, x, S, z, C; + r2 = e2.state, n = e2.next_in, z = e2.input, i = n + (e2.avail_in - 5), s = e2.next_out, C = e2.output, a = s - (t2 - e2.avail_out), o = s + (e2.avail_out - 257), h = r2.dmax, u = r2.wsize, l = r2.whave, f = r2.wnext, c = r2.window, d = r2.hold, p = r2.bits, m = r2.lencode, _ = r2.distcode, g = (1 << r2.lenbits) - 1, b = (1 << r2.distbits) - 1; + e: + do { + p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = m[d & g]; + t: + for (; ; ) { + if (d >>>= y = v >>> 24, p -= y, 0 === (y = v >>> 16 & 255)) + C[s++] = 65535 & v; + else { + if (!(16 & y)) { + if (0 == (64 & y)) { + v = m[(65535 & v) + (d & (1 << y) - 1)]; + continue t; + } + if (32 & y) { + r2.mode = 12; + break e; + } + e2.msg = "invalid literal/length code", r2.mode = 30; + break e; + } + w = 65535 & v, (y &= 15) && (p < y && (d += z[n++] << p, p += 8), w += d & (1 << y) - 1, d >>>= y, p -= y), p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = _[d & b]; + r: + for (; ; ) { + if (d >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) { + if (0 == (64 & y)) { + v = _[(65535 & v) + (d & (1 << y) - 1)]; + continue r; + } + e2.msg = "invalid distance code", r2.mode = 30; + break e; + } + if (k = 65535 & v, p < (y &= 15) && (d += z[n++] << p, (p += 8) < y && (d += z[n++] << p, p += 8)), h < (k += d & (1 << y) - 1)) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break e; + } + if (d >>>= y, p -= y, (y = s - a) < k) { + if (l < (y = k - y) && r2.sane) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break e; + } + if (S = c, (x = 0) === f) { + if (x += u - y, y < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + } else if (f < y) { + if (x += u + f - y, (y -= f) < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + if (x = 0, f < w) { + for (w -= y = f; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + } + } else if (x += f - y, y < w) { + for (w -= y; C[s++] = c[x++], --y; ) + ; + x = s - k, S = C; + } + for (; 2 < w; ) + C[s++] = S[x++], C[s++] = S[x++], C[s++] = S[x++], w -= 3; + w && (C[s++] = S[x++], 1 < w && (C[s++] = S[x++])); + } else { + for (x = s - k; C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], 2 < (w -= 3); ) + ; + w && (C[s++] = C[x++], 1 < w && (C[s++] = C[x++])); + } + break; + } + } + break; + } + } while (n < i && s < o); + n -= w = p >> 3, d &= (1 << (p -= w << 3)) - 1, e2.next_in = n, e2.next_out = s, e2.avail_in = n < i ? i - n + 5 : 5 - (n - i), e2.avail_out = s < o ? o - s + 257 : 257 - (s - o), r2.hold = d, r2.bits = p; + }; + }, {}], 49: [function(e, t, r) { + "use strict"; + var I = e("../utils/common"), O = e("./adler32"), B = e("./crc32"), R = e("./inffast"), T = e("./inftrees"), D = 1, F = 2, N = 0, U = -2, P = 1, n = 852, i = 592; + function L(e2) { + return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24); + } + function s() { + this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; + } + function a(e2) { + var t2; + return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = P, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new I.Buf32(n), t2.distcode = t2.distdyn = new I.Buf32(i), t2.sane = 1, t2.back = -1, N) : U; + } + function o(e2) { + var t2; + return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, a(e2)) : U; + } + function h(e2, t2) { + var r2, n2; + return e2 && e2.state ? (n2 = e2.state, t2 < 0 ? (r2 = 0, t2 = -t2) : (r2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? U : (null !== n2.window && n2.wbits !== t2 && (n2.window = null), n2.wrap = r2, n2.wbits = t2, o(e2))) : U; + } + function u(e2, t2) { + var r2, n2; + return e2 ? (n2 = new s(), (e2.state = n2).window = null, (r2 = h(e2, t2)) !== N && (e2.state = null), r2) : U; + } + var l, f, c = true; + function j(e2) { + if (c) { + var t2; + for (l = new I.Buf32(512), f = new I.Buf32(32), t2 = 0; t2 < 144; ) + e2.lens[t2++] = 8; + for (; t2 < 256; ) + e2.lens[t2++] = 9; + for (; t2 < 280; ) + e2.lens[t2++] = 7; + for (; t2 < 288; ) + e2.lens[t2++] = 8; + for (T(D, e2.lens, 0, 288, l, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; ) + e2.lens[t2++] = 5; + T(F, e2.lens, 0, 32, f, 0, e2.work, { bits: 5 }), c = false; + } + e2.lencode = l, e2.lenbits = 9, e2.distcode = f, e2.distbits = 5; + } + function Z(e2, t2, r2, n2) { + var i2, s2 = e2.state; + return null === s2.window && (s2.wsize = 1 << s2.wbits, s2.wnext = 0, s2.whave = 0, s2.window = new I.Buf8(s2.wsize)), n2 >= s2.wsize ? (I.arraySet(s2.window, t2, r2 - s2.wsize, s2.wsize, 0), s2.wnext = 0, s2.whave = s2.wsize) : (n2 < (i2 = s2.wsize - s2.wnext) && (i2 = n2), I.arraySet(s2.window, t2, r2 - n2, i2, s2.wnext), (n2 -= i2) ? (I.arraySet(s2.window, t2, r2 - n2, n2, 0), s2.wnext = n2, s2.whave = s2.wsize) : (s2.wnext += i2, s2.wnext === s2.wsize && (s2.wnext = 0), s2.whave < s2.wsize && (s2.whave += i2))), 0; + } + r.inflateReset = o, r.inflateReset2 = h, r.inflateResetKeep = a, r.inflateInit = function(e2) { + return u(e2, 15); + }, r.inflateInit2 = u, r.inflate = function(e2, t2) { + var r2, n2, i2, s2, a2, o2, h2, u2, l2, f2, c2, d, p, m, _, g, b, v, y, w, k, x, S, z, C = 0, E = new I.Buf8(4), A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; + if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in) + return U; + 12 === (r2 = e2.state).mode && (r2.mode = 13), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, f2 = o2, c2 = h2, x = N; + e: + for (; ; ) + switch (r2.mode) { + case P: + if (0 === r2.wrap) { + r2.mode = 13; + break; + } + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (2 & r2.wrap && 35615 === u2) { + E[r2.check = 0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0), l2 = u2 = 0, r2.mode = 2; + break; + } + if (r2.flags = 0, r2.head && (r2.head.done = false), !(1 & r2.wrap) || (((255 & u2) << 8) + (u2 >> 8)) % 31) { + e2.msg = "incorrect header check", r2.mode = 30; + break; + } + if (8 != (15 & u2)) { + e2.msg = "unknown compression method", r2.mode = 30; + break; + } + if (l2 -= 4, k = 8 + (15 & (u2 >>>= 4)), 0 === r2.wbits) + r2.wbits = k; + else if (k > r2.wbits) { + e2.msg = "invalid window size", r2.mode = 30; + break; + } + r2.dmax = 1 << k, e2.adler = r2.check = 1, r2.mode = 512 & u2 ? 10 : 12, l2 = u2 = 0; + break; + case 2: + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (r2.flags = u2, 8 != (255 & r2.flags)) { + e2.msg = "unknown compression method", r2.mode = 30; + break; + } + if (57344 & r2.flags) { + e2.msg = "unknown header flags set", r2.mode = 30; + break; + } + r2.head && (r2.head.text = u2 >> 8 & 1), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 3; + case 3: + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.head && (r2.head.time = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, E[2] = u2 >>> 16 & 255, E[3] = u2 >>> 24 & 255, r2.check = B(r2.check, E, 4, 0)), l2 = u2 = 0, r2.mode = 4; + case 4: + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.head && (r2.head.xflags = 255 & u2, r2.head.os = u2 >> 8), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 5; + case 5: + if (1024 & r2.flags) { + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.length = u2, r2.head && (r2.head.extra_len = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0; + } else + r2.head && (r2.head.extra = null); + r2.mode = 6; + case 6: + if (1024 & r2.flags && (o2 < (d = r2.length) && (d = o2), d && (r2.head && (k = r2.head.extra_len - r2.length, r2.head.extra || (r2.head.extra = new Array(r2.head.extra_len)), I.arraySet(r2.head.extra, n2, s2, d, k)), 512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, r2.length -= d), r2.length)) + break e; + r2.length = 0, r2.mode = 7; + case 7: + if (2048 & r2.flags) { + if (0 === o2) + break e; + for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.name += String.fromCharCode(k)), k && d < o2; ) + ; + if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) + break e; + } else + r2.head && (r2.head.name = null); + r2.length = 0, r2.mode = 8; + case 8: + if (4096 & r2.flags) { + if (0 === o2) + break e; + for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.comment += String.fromCharCode(k)), k && d < o2; ) + ; + if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) + break e; + } else + r2.head && (r2.head.comment = null); + r2.mode = 9; + case 9: + if (512 & r2.flags) { + for (; l2 < 16; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 !== (65535 & r2.check)) { + e2.msg = "header crc mismatch", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.head && (r2.head.hcrc = r2.flags >> 9 & 1, r2.head.done = true), e2.adler = r2.check = 0, r2.mode = 12; + break; + case 10: + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + e2.adler = r2.check = L(u2), l2 = u2 = 0, r2.mode = 11; + case 11: + if (0 === r2.havedict) + return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, 2; + e2.adler = r2.check = 1, r2.mode = 12; + case 12: + if (5 === t2 || 6 === t2) + break e; + case 13: + if (r2.last) { + u2 >>>= 7 & l2, l2 -= 7 & l2, r2.mode = 27; + break; + } + for (; l2 < 3; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + switch (r2.last = 1 & u2, l2 -= 1, 3 & (u2 >>>= 1)) { + case 0: + r2.mode = 14; + break; + case 1: + if (j(r2), r2.mode = 20, 6 !== t2) + break; + u2 >>>= 2, l2 -= 2; + break e; + case 2: + r2.mode = 17; + break; + case 3: + e2.msg = "invalid block type", r2.mode = 30; + } + u2 >>>= 2, l2 -= 2; + break; + case 14: + for (u2 >>>= 7 & l2, l2 -= 7 & l2; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if ((65535 & u2) != (u2 >>> 16 ^ 65535)) { + e2.msg = "invalid stored block lengths", r2.mode = 30; + break; + } + if (r2.length = 65535 & u2, l2 = u2 = 0, r2.mode = 15, 6 === t2) + break e; + case 15: + r2.mode = 16; + case 16: + if (d = r2.length) { + if (o2 < d && (d = o2), h2 < d && (d = h2), 0 === d) + break e; + I.arraySet(i2, n2, s2, d, a2), o2 -= d, s2 += d, h2 -= d, a2 += d, r2.length -= d; + break; + } + r2.mode = 12; + break; + case 17: + for (; l2 < 14; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (r2.nlen = 257 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ndist = 1 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ncode = 4 + (15 & u2), u2 >>>= 4, l2 -= 4, 286 < r2.nlen || 30 < r2.ndist) { + e2.msg = "too many length or distance symbols", r2.mode = 30; + break; + } + r2.have = 0, r2.mode = 18; + case 18: + for (; r2.have < r2.ncode; ) { + for (; l2 < 3; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.lens[A[r2.have++]] = 7 & u2, u2 >>>= 3, l2 -= 3; + } + for (; r2.have < 19; ) + r2.lens[A[r2.have++]] = 0; + if (r2.lencode = r2.lendyn, r2.lenbits = 7, S = { bits: r2.lenbits }, x = T(0, r2.lens, 0, 19, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { + e2.msg = "invalid code lengths set", r2.mode = 30; + break; + } + r2.have = 0, r2.mode = 19; + case 19: + for (; r2.have < r2.nlen + r2.ndist; ) { + for (; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (b < 16) + u2 >>>= _, l2 -= _, r2.lens[r2.have++] = b; + else { + if (16 === b) { + for (z = _ + 2; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 >>>= _, l2 -= _, 0 === r2.have) { + e2.msg = "invalid bit length repeat", r2.mode = 30; + break; + } + k = r2.lens[r2.have - 1], d = 3 + (3 & u2), u2 >>>= 2, l2 -= 2; + } else if (17 === b) { + for (z = _ + 3; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + l2 -= _, k = 0, d = 3 + (7 & (u2 >>>= _)), u2 >>>= 3, l2 -= 3; + } else { + for (z = _ + 7; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + l2 -= _, k = 0, d = 11 + (127 & (u2 >>>= _)), u2 >>>= 7, l2 -= 7; + } + if (r2.have + d > r2.nlen + r2.ndist) { + e2.msg = "invalid bit length repeat", r2.mode = 30; + break; + } + for (; d--; ) + r2.lens[r2.have++] = k; + } + } + if (30 === r2.mode) + break; + if (0 === r2.lens[256]) { + e2.msg = "invalid code -- missing end-of-block", r2.mode = 30; + break; + } + if (r2.lenbits = 9, S = { bits: r2.lenbits }, x = T(D, r2.lens, 0, r2.nlen, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { + e2.msg = "invalid literal/lengths set", r2.mode = 30; + break; + } + if (r2.distbits = 6, r2.distcode = r2.distdyn, S = { bits: r2.distbits }, x = T(F, r2.lens, r2.nlen, r2.ndist, r2.distcode, 0, r2.work, S), r2.distbits = S.bits, x) { + e2.msg = "invalid distances set", r2.mode = 30; + break; + } + if (r2.mode = 20, 6 === t2) + break e; + case 20: + r2.mode = 21; + case 21: + if (6 <= o2 && 258 <= h2) { + e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, R(e2, c2), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, 12 === r2.mode && (r2.back = -1); + break; + } + for (r2.back = 0; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (g && 0 == (240 & g)) { + for (v = _, y = g, w = b; g = (C = r2.lencode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + u2 >>>= v, l2 -= v, r2.back += v; + } + if (u2 >>>= _, l2 -= _, r2.back += _, r2.length = b, 0 === g) { + r2.mode = 26; + break; + } + if (32 & g) { + r2.back = -1, r2.mode = 12; + break; + } + if (64 & g) { + e2.msg = "invalid literal/length code", r2.mode = 30; + break; + } + r2.extra = 15 & g, r2.mode = 22; + case 22: + if (r2.extra) { + for (z = r2.extra; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.length += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; + } + r2.was = r2.length, r2.mode = 23; + case 23: + for (; g = (C = r2.distcode[u2 & (1 << r2.distbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (0 == (240 & g)) { + for (v = _, y = g, w = b; g = (C = r2.distcode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + u2 >>>= v, l2 -= v, r2.back += v; + } + if (u2 >>>= _, l2 -= _, r2.back += _, 64 & g) { + e2.msg = "invalid distance code", r2.mode = 30; + break; + } + r2.offset = b, r2.extra = 15 & g, r2.mode = 24; + case 24: + if (r2.extra) { + for (z = r2.extra; l2 < z; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + r2.offset += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; + } + if (r2.offset > r2.dmax) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break; + } + r2.mode = 25; + case 25: + if (0 === h2) + break e; + if (d = c2 - h2, r2.offset > d) { + if ((d = r2.offset - d) > r2.whave && r2.sane) { + e2.msg = "invalid distance too far back", r2.mode = 30; + break; + } + p = d > r2.wnext ? (d -= r2.wnext, r2.wsize - d) : r2.wnext - d, d > r2.length && (d = r2.length), m = r2.window; + } else + m = i2, p = a2 - r2.offset, d = r2.length; + for (h2 < d && (d = h2), h2 -= d, r2.length -= d; i2[a2++] = m[p++], --d; ) + ; + 0 === r2.length && (r2.mode = 21); + break; + case 26: + if (0 === h2) + break e; + i2[a2++] = r2.length, h2--, r2.mode = 21; + break; + case 27: + if (r2.wrap) { + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 |= n2[s2++] << l2, l2 += 8; + } + if (c2 -= h2, e2.total_out += c2, r2.total += c2, c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, a2 - c2) : O(r2.check, i2, c2, a2 - c2)), c2 = h2, (r2.flags ? u2 : L(u2)) !== r2.check) { + e2.msg = "incorrect data check", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.mode = 28; + case 28: + if (r2.wrap && r2.flags) { + for (; l2 < 32; ) { + if (0 === o2) + break e; + o2--, u2 += n2[s2++] << l2, l2 += 8; + } + if (u2 !== (4294967295 & r2.total)) { + e2.msg = "incorrect length check", r2.mode = 30; + break; + } + l2 = u2 = 0; + } + r2.mode = 29; + case 29: + x = 1; + break e; + case 30: + x = -3; + break e; + case 31: + return -4; + case 32: + default: + return U; + } + return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, (r2.wsize || c2 !== e2.avail_out && r2.mode < 30 && (r2.mode < 27 || 4 !== t2)) && Z(e2, e2.output, e2.next_out, c2 - e2.avail_out) ? (r2.mode = 31, -4) : (f2 -= e2.avail_in, c2 -= e2.avail_out, e2.total_in += f2, e2.total_out += c2, r2.total += c2, r2.wrap && c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, e2.next_out - c2) : O(r2.check, i2, c2, e2.next_out - c2)), e2.data_type = r2.bits + (r2.last ? 64 : 0) + (12 === r2.mode ? 128 : 0) + (20 === r2.mode || 15 === r2.mode ? 256 : 0), (0 == f2 && 0 === c2 || 4 === t2) && x === N && (x = -5), x); + }, r.inflateEnd = function(e2) { + if (!e2 || !e2.state) + return U; + var t2 = e2.state; + return t2.window && (t2.window = null), e2.state = null, N; + }, r.inflateGetHeader = function(e2, t2) { + var r2; + return e2 && e2.state ? 0 == (2 & (r2 = e2.state).wrap) ? U : ((r2.head = t2).done = false, N) : U; + }, r.inflateSetDictionary = function(e2, t2) { + var r2, n2 = t2.length; + return e2 && e2.state ? 0 !== (r2 = e2.state).wrap && 11 !== r2.mode ? U : 11 === r2.mode && O(1, t2, n2, 0) !== r2.check ? -3 : Z(e2, t2, n2, n2) ? (r2.mode = 31, -4) : (r2.havedict = 1, N) : U; + }, r.inflateInfo = "pako inflate (from Nodeca project)"; + }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e, t, r) { + "use strict"; + var D = e("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; + t.exports = function(e2, t2, r2, n, i, s, a, o) { + var h, u, l, f, c, d, p, m, _, g = o.bits, b = 0, v = 0, y = 0, w = 0, k = 0, x = 0, S = 0, z = 0, C = 0, E = 0, A = null, I = 0, O = new D.Buf16(16), B = new D.Buf16(16), R = null, T = 0; + for (b = 0; b <= 15; b++) + O[b] = 0; + for (v = 0; v < n; v++) + O[t2[r2 + v]]++; + for (k = g, w = 15; 1 <= w && 0 === O[w]; w--) + ; + if (w < k && (k = w), 0 === w) + return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0; + for (y = 1; y < w && 0 === O[y]; y++) + ; + for (k < y && (k = y), b = z = 1; b <= 15; b++) + if (z <<= 1, (z -= O[b]) < 0) + return -1; + if (0 < z && (0 === e2 || 1 !== w)) + return -1; + for (B[1] = 0, b = 1; b < 15; b++) + B[b + 1] = B[b] + O[b]; + for (v = 0; v < n; v++) + 0 !== t2[r2 + v] && (a[B[t2[r2 + v]]++] = v); + if (d = 0 === e2 ? (A = R = a, 19) : 1 === e2 ? (A = F, I -= 257, R = N, T -= 257, 256) : (A = U, R = P, -1), b = y, c = s, S = v = E = 0, l = -1, f = (C = 1 << (x = k)) - 1, 1 === e2 && 852 < C || 2 === e2 && 592 < C) + return 1; + for (; ; ) { + for (p = b - S, _ = a[v] < d ? (m = 0, a[v]) : a[v] > d ? (m = R[T + a[v]], A[I + a[v]]) : (m = 96, 0), h = 1 << b - S, y = u = 1 << x; i[c + (E >> S) + (u -= h)] = p << 24 | m << 16 | _ | 0, 0 !== u; ) + ; + for (h = 1 << b - 1; E & h; ) + h >>= 1; + if (0 !== h ? (E &= h - 1, E += h) : E = 0, v++, 0 == --O[b]) { + if (b === w) + break; + b = t2[r2 + a[v]]; + } + if (k < b && (E & f) !== l) { + for (0 === S && (S = k), c += y, z = 1 << (x = b - S); x + S < w && !((z -= O[x + S]) <= 0); ) + x++, z <<= 1; + if (C += 1 << x, 1 === e2 && 852 < C || 2 === e2 && 592 < C) + return 1; + i[l = E & f] = k << 24 | x << 16 | c - s | 0; + } + } + return 0 !== E && (i[c + E] = b - S << 24 | 64 << 16 | 0), o.bits = k, 0; + }; + }, { "../utils/common": 41 }], 51: [function(e, t, r) { + "use strict"; + t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; + }, {}], 52: [function(e, t, r) { + "use strict"; + var i = e("../utils/common"), o = 0, h = 1; + function n(e2) { + for (var t2 = e2.length; 0 <= --t2; ) + e2[t2] = 0; + } + var s = 0, a = 29, u = 256, l = u + 1 + a, f = 30, c = 19, _ = 2 * l + 1, g = 15, d = 16, p = 7, m = 256, b = 16, v = 17, y = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z = new Array(2 * (l + 2)); + n(z); + var C = new Array(2 * f); + n(C); + var E = new Array(512); + n(E); + var A = new Array(256); + n(A); + var I = new Array(a); + n(I); + var O, B, R, T = new Array(f); + function D(e2, t2, r2, n2, i2) { + this.static_tree = e2, this.extra_bits = t2, this.extra_base = r2, this.elems = n2, this.max_length = i2, this.has_stree = e2 && e2.length; + } + function F(e2, t2) { + this.dyn_tree = e2, this.max_code = 0, this.stat_desc = t2; + } + function N(e2) { + return e2 < 256 ? E[e2] : E[256 + (e2 >>> 7)]; + } + function U(e2, t2) { + e2.pending_buf[e2.pending++] = 255 & t2, e2.pending_buf[e2.pending++] = t2 >>> 8 & 255; + } + function P(e2, t2, r2) { + e2.bi_valid > d - r2 ? (e2.bi_buf |= t2 << e2.bi_valid & 65535, U(e2, e2.bi_buf), e2.bi_buf = t2 >> d - e2.bi_valid, e2.bi_valid += r2 - d) : (e2.bi_buf |= t2 << e2.bi_valid & 65535, e2.bi_valid += r2); + } + function L(e2, t2, r2) { + P(e2, r2[2 * t2], r2[2 * t2 + 1]); + } + function j(e2, t2) { + for (var r2 = 0; r2 |= 1 & e2, e2 >>>= 1, r2 <<= 1, 0 < --t2; ) + ; + return r2 >>> 1; + } + function Z(e2, t2, r2) { + var n2, i2, s2 = new Array(g + 1), a2 = 0; + for (n2 = 1; n2 <= g; n2++) + s2[n2] = a2 = a2 + r2[n2 - 1] << 1; + for (i2 = 0; i2 <= t2; i2++) { + var o2 = e2[2 * i2 + 1]; + 0 !== o2 && (e2[2 * i2] = j(s2[o2]++, o2)); + } + } + function W(e2) { + var t2; + for (t2 = 0; t2 < l; t2++) + e2.dyn_ltree[2 * t2] = 0; + for (t2 = 0; t2 < f; t2++) + e2.dyn_dtree[2 * t2] = 0; + for (t2 = 0; t2 < c; t2++) + e2.bl_tree[2 * t2] = 0; + e2.dyn_ltree[2 * m] = 1, e2.opt_len = e2.static_len = 0, e2.last_lit = e2.matches = 0; + } + function M(e2) { + 8 < e2.bi_valid ? U(e2, e2.bi_buf) : 0 < e2.bi_valid && (e2.pending_buf[e2.pending++] = e2.bi_buf), e2.bi_buf = 0, e2.bi_valid = 0; + } + function H(e2, t2, r2, n2) { + var i2 = 2 * t2, s2 = 2 * r2; + return e2[i2] < e2[s2] || e2[i2] === e2[s2] && n2[t2] <= n2[r2]; + } + function G(e2, t2, r2) { + for (var n2 = e2.heap[r2], i2 = r2 << 1; i2 <= e2.heap_len && (i2 < e2.heap_len && H(t2, e2.heap[i2 + 1], e2.heap[i2], e2.depth) && i2++, !H(t2, n2, e2.heap[i2], e2.depth)); ) + e2.heap[r2] = e2.heap[i2], r2 = i2, i2 <<= 1; + e2.heap[r2] = n2; + } + function K(e2, t2, r2) { + var n2, i2, s2, a2, o2 = 0; + if (0 !== e2.last_lit) + for (; n2 = e2.pending_buf[e2.d_buf + 2 * o2] << 8 | e2.pending_buf[e2.d_buf + 2 * o2 + 1], i2 = e2.pending_buf[e2.l_buf + o2], o2++, 0 === n2 ? L(e2, i2, t2) : (L(e2, (s2 = A[i2]) + u + 1, t2), 0 !== (a2 = w[s2]) && P(e2, i2 -= I[s2], a2), L(e2, s2 = N(--n2), r2), 0 !== (a2 = k[s2]) && P(e2, n2 -= T[s2], a2)), o2 < e2.last_lit; ) + ; + L(e2, m, t2); + } + function Y(e2, t2) { + var r2, n2, i2, s2 = t2.dyn_tree, a2 = t2.stat_desc.static_tree, o2 = t2.stat_desc.has_stree, h2 = t2.stat_desc.elems, u2 = -1; + for (e2.heap_len = 0, e2.heap_max = _, r2 = 0; r2 < h2; r2++) + 0 !== s2[2 * r2] ? (e2.heap[++e2.heap_len] = u2 = r2, e2.depth[r2] = 0) : s2[2 * r2 + 1] = 0; + for (; e2.heap_len < 2; ) + s2[2 * (i2 = e2.heap[++e2.heap_len] = u2 < 2 ? ++u2 : 0)] = 1, e2.depth[i2] = 0, e2.opt_len--, o2 && (e2.static_len -= a2[2 * i2 + 1]); + for (t2.max_code = u2, r2 = e2.heap_len >> 1; 1 <= r2; r2--) + G(e2, s2, r2); + for (i2 = h2; r2 = e2.heap[1], e2.heap[1] = e2.heap[e2.heap_len--], G(e2, s2, 1), n2 = e2.heap[1], e2.heap[--e2.heap_max] = r2, e2.heap[--e2.heap_max] = n2, s2[2 * i2] = s2[2 * r2] + s2[2 * n2], e2.depth[i2] = (e2.depth[r2] >= e2.depth[n2] ? e2.depth[r2] : e2.depth[n2]) + 1, s2[2 * r2 + 1] = s2[2 * n2 + 1] = i2, e2.heap[1] = i2++, G(e2, s2, 1), 2 <= e2.heap_len; ) + ; + e2.heap[--e2.heap_max] = e2.heap[1], function(e3, t3) { + var r3, n3, i3, s3, a3, o3, h3 = t3.dyn_tree, u3 = t3.max_code, l2 = t3.stat_desc.static_tree, f2 = t3.stat_desc.has_stree, c2 = t3.stat_desc.extra_bits, d2 = t3.stat_desc.extra_base, p2 = t3.stat_desc.max_length, m2 = 0; + for (s3 = 0; s3 <= g; s3++) + e3.bl_count[s3] = 0; + for (h3[2 * e3.heap[e3.heap_max] + 1] = 0, r3 = e3.heap_max + 1; r3 < _; r3++) + p2 < (s3 = h3[2 * h3[2 * (n3 = e3.heap[r3]) + 1] + 1] + 1) && (s3 = p2, m2++), h3[2 * n3 + 1] = s3, u3 < n3 || (e3.bl_count[s3]++, a3 = 0, d2 <= n3 && (a3 = c2[n3 - d2]), o3 = h3[2 * n3], e3.opt_len += o3 * (s3 + a3), f2 && (e3.static_len += o3 * (l2[2 * n3 + 1] + a3))); + if (0 !== m2) { + do { + for (s3 = p2 - 1; 0 === e3.bl_count[s3]; ) + s3--; + e3.bl_count[s3]--, e3.bl_count[s3 + 1] += 2, e3.bl_count[p2]--, m2 -= 2; + } while (0 < m2); + for (s3 = p2; 0 !== s3; s3--) + for (n3 = e3.bl_count[s3]; 0 !== n3; ) + u3 < (i3 = e3.heap[--r3]) || (h3[2 * i3 + 1] !== s3 && (e3.opt_len += (s3 - h3[2 * i3 + 1]) * h3[2 * i3], h3[2 * i3 + 1] = s3), n3--); + } + }(e2, t2), Z(s2, u2, e2.bl_count); + } + function X(e2, t2, r2) { + var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; + for (0 === a2 && (h2 = 138, u2 = 3), t2[2 * (r2 + 1) + 1] = 65535, n2 = 0; n2 <= r2; n2++) + i2 = a2, a2 = t2[2 * (n2 + 1) + 1], ++o2 < h2 && i2 === a2 || (o2 < u2 ? e2.bl_tree[2 * i2] += o2 : 0 !== i2 ? (i2 !== s2 && e2.bl_tree[2 * i2]++, e2.bl_tree[2 * b]++) : o2 <= 10 ? e2.bl_tree[2 * v]++ : e2.bl_tree[2 * y]++, s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4)); + } + function V(e2, t2, r2) { + var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; + for (0 === a2 && (h2 = 138, u2 = 3), n2 = 0; n2 <= r2; n2++) + if (i2 = a2, a2 = t2[2 * (n2 + 1) + 1], !(++o2 < h2 && i2 === a2)) { + if (o2 < u2) + for (; L(e2, i2, e2.bl_tree), 0 != --o2; ) + ; + else + 0 !== i2 ? (i2 !== s2 && (L(e2, i2, e2.bl_tree), o2--), L(e2, b, e2.bl_tree), P(e2, o2 - 3, 2)) : o2 <= 10 ? (L(e2, v, e2.bl_tree), P(e2, o2 - 3, 3)) : (L(e2, y, e2.bl_tree), P(e2, o2 - 11, 7)); + s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4); + } + } + n(T); + var q = false; + function J(e2, t2, r2, n2) { + P(e2, (s << 1) + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { + M(e3), n3 && (U(e3, r3), U(e3, ~r3)), i.arraySet(e3.pending_buf, e3.window, t3, r3, e3.pending), e3.pending += r3; + }(e2, t2, r2, true); + } + r._tr_init = function(e2) { + q || (function() { + var e3, t2, r2, n2, i2, s2 = new Array(g + 1); + for (n2 = r2 = 0; n2 < a - 1; n2++) + for (I[n2] = r2, e3 = 0; e3 < 1 << w[n2]; e3++) + A[r2++] = n2; + for (A[r2 - 1] = n2, n2 = i2 = 0; n2 < 16; n2++) + for (T[n2] = i2, e3 = 0; e3 < 1 << k[n2]; e3++) + E[i2++] = n2; + for (i2 >>= 7; n2 < f; n2++) + for (T[n2] = i2 << 7, e3 = 0; e3 < 1 << k[n2] - 7; e3++) + E[256 + i2++] = n2; + for (t2 = 0; t2 <= g; t2++) + s2[t2] = 0; + for (e3 = 0; e3 <= 143; ) + z[2 * e3 + 1] = 8, e3++, s2[8]++; + for (; e3 <= 255; ) + z[2 * e3 + 1] = 9, e3++, s2[9]++; + for (; e3 <= 279; ) + z[2 * e3 + 1] = 7, e3++, s2[7]++; + for (; e3 <= 287; ) + z[2 * e3 + 1] = 8, e3++, s2[8]++; + for (Z(z, l + 1, s2), e3 = 0; e3 < f; e3++) + C[2 * e3 + 1] = 5, C[2 * e3] = j(e3, 5); + O = new D(z, w, u + 1, l, g), B = new D(C, k, 0, f, g), R = new D(new Array(0), x, 0, c, p); + }(), q = true), e2.l_desc = new F(e2.dyn_ltree, O), e2.d_desc = new F(e2.dyn_dtree, B), e2.bl_desc = new F(e2.bl_tree, R), e2.bi_buf = 0, e2.bi_valid = 0, W(e2); + }, r._tr_stored_block = J, r._tr_flush_block = function(e2, t2, r2, n2) { + var i2, s2, a2 = 0; + 0 < e2.level ? (2 === e2.strm.data_type && (e2.strm.data_type = function(e3) { + var t3, r3 = 4093624447; + for (t3 = 0; t3 <= 31; t3++, r3 >>>= 1) + if (1 & r3 && 0 !== e3.dyn_ltree[2 * t3]) + return o; + if (0 !== e3.dyn_ltree[18] || 0 !== e3.dyn_ltree[20] || 0 !== e3.dyn_ltree[26]) + return h; + for (t3 = 32; t3 < u; t3++) + if (0 !== e3.dyn_ltree[2 * t3]) + return h; + return o; + }(e2)), Y(e2, e2.l_desc), Y(e2, e2.d_desc), a2 = function(e3) { + var t3; + for (X(e3, e3.dyn_ltree, e3.l_desc.max_code), X(e3, e3.dyn_dtree, e3.d_desc.max_code), Y(e3, e3.bl_desc), t3 = c - 1; 3 <= t3 && 0 === e3.bl_tree[2 * S[t3] + 1]; t3--) + ; + return e3.opt_len += 3 * (t3 + 1) + 5 + 5 + 4, t3; + }(e2), i2 = e2.opt_len + 3 + 7 >>> 3, (s2 = e2.static_len + 3 + 7 >>> 3) <= i2 && (i2 = s2)) : i2 = s2 = r2 + 5, r2 + 4 <= i2 && -1 !== t2 ? J(e2, t2, r2, n2) : 4 === e2.strategy || s2 === i2 ? (P(e2, 2 + (n2 ? 1 : 0), 3), K(e2, z, C)) : (P(e2, 4 + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { + var i3; + for (P(e3, t3 - 257, 5), P(e3, r3 - 1, 5), P(e3, n3 - 4, 4), i3 = 0; i3 < n3; i3++) + P(e3, e3.bl_tree[2 * S[i3] + 1], 3); + V(e3, e3.dyn_ltree, t3 - 1), V(e3, e3.dyn_dtree, r3 - 1); + }(e2, e2.l_desc.max_code + 1, e2.d_desc.max_code + 1, a2 + 1), K(e2, e2.dyn_ltree, e2.dyn_dtree)), W(e2), n2 && M(e2); + }, r._tr_tally = function(e2, t2, r2) { + return e2.pending_buf[e2.d_buf + 2 * e2.last_lit] = t2 >>> 8 & 255, e2.pending_buf[e2.d_buf + 2 * e2.last_lit + 1] = 255 & t2, e2.pending_buf[e2.l_buf + e2.last_lit] = 255 & r2, e2.last_lit++, 0 === t2 ? e2.dyn_ltree[2 * r2]++ : (e2.matches++, t2--, e2.dyn_ltree[2 * (A[r2] + u + 1)]++, e2.dyn_dtree[2 * N(t2)]++), e2.last_lit === e2.lit_bufsize - 1; + }, r._tr_align = function(e2) { + P(e2, 2, 3), L(e2, m, z), function(e3) { + 16 === e3.bi_valid ? (U(e3, e3.bi_buf), e3.bi_buf = 0, e3.bi_valid = 0) : 8 <= e3.bi_valid && (e3.pending_buf[e3.pending++] = 255 & e3.bi_buf, e3.bi_buf >>= 8, e3.bi_valid -= 8); + }(e2); + }; + }, { "../utils/common": 41 }], 53: [function(e, t, r) { + "use strict"; + t.exports = function() { + this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; + }; + }, {}], 54: [function(e, t, r) { + (function(e2) { + !function(r2, n) { + "use strict"; + if (!r2.setImmediate) { + var i, s, t2, a, o = 1, h = {}, u = false, l = r2.document, e3 = Object.getPrototypeOf && Object.getPrototypeOf(r2); + e3 = e3 && e3.setTimeout ? e3 : r2, i = "[object process]" === {}.toString.call(r2.process) ? function(e4) { + process.nextTick(function() { + c(e4); + }); + } : function() { + if (r2.postMessage && !r2.importScripts) { + var e4 = true, t3 = r2.onmessage; + return r2.onmessage = function() { + e4 = false; + }, r2.postMessage("", "*"), r2.onmessage = t3, e4; + } + }() ? (a = "setImmediate$" + Math.random() + "$", r2.addEventListener ? r2.addEventListener("message", d, false) : r2.attachEvent("onmessage", d), function(e4) { + r2.postMessage(a + e4, "*"); + }) : r2.MessageChannel ? ((t2 = new MessageChannel()).port1.onmessage = function(e4) { + c(e4.data); + }, function(e4) { + t2.port2.postMessage(e4); + }) : l && "onreadystatechange" in l.createElement("script") ? (s = l.documentElement, function(e4) { + var t3 = l.createElement("script"); + t3.onreadystatechange = function() { + c(e4), t3.onreadystatechange = null, s.removeChild(t3), t3 = null; + }, s.appendChild(t3); + }) : function(e4) { + setTimeout(c, 0, e4); + }, e3.setImmediate = function(e4) { + "function" != typeof e4 && (e4 = new Function("" + e4)); + for (var t3 = new Array(arguments.length - 1), r3 = 0; r3 < t3.length; r3++) + t3[r3] = arguments[r3 + 1]; + var n2 = { callback: e4, args: t3 }; + return h[o] = n2, i(o), o++; + }, e3.clearImmediate = f; + } + function f(e4) { + delete h[e4]; + } + function c(e4) { + if (u) + setTimeout(c, 0, e4); + else { + var t3 = h[e4]; + if (t3) { + u = true; + try { + !function(e5) { + var t4 = e5.callback, r3 = e5.args; + switch (r3.length) { + case 0: + t4(); + break; + case 1: + t4(r3[0]); + break; + case 2: + t4(r3[0], r3[1]); + break; + case 3: + t4(r3[0], r3[1], r3[2]); + break; + default: + t4.apply(n, r3); + } + }(t3); + } finally { + f(e4), u = false; + } + } + } + } + function d(e4) { + e4.source === r2 && "string" == typeof e4.data && 0 === e4.data.indexOf(a) && c(+e4.data.slice(a.length)); + } + }("undefined" == typeof self ? void 0 === e2 ? this : e2 : self); + }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); + }, {}] }, {}, [10])(10); + }); + } + }); + + // ../components/smart-camera-web.js + var VERSION = "1.0.2"; + var DEFAULT_NO_OF_LIVENESS_FRAMES = 8; + var PORTRAIT_ID_PREVIEW_WIDTH = 396; + var PORTRAIT_ID_PREVIEW_HEIGHT = 527; + function isSamsungMultiCameraDevice() { + const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\d{3}/); + if (!matchedModelNumber) { + return false; + } + const modelNumber = parseInt(matchedModelNumber[0].match(/\d{3}/)[0], 10); + const smallerModelNumber = 970; + return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber; + } + function getLivenessFramesIndices(totalNoOfFrames, numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES) { + const selectedFrames = []; + if (totalNoOfFrames < numberOfFramesRequired) { + throw new Error("SmartCameraWeb: Minimum required no of frames is ", numberOfFramesRequired); + } + const frameDivisor = numberOfFramesRequired - 1; + const frameInterval = Math.floor(totalNoOfFrames / frameDivisor); + let replacementFrameIndex = 1; + for (let i = 0; i < totalNoOfFrames; i += frameInterval) { + if (selectedFrames.length < 8) { + selectedFrames.push(i); + } else { + selectedFrames[replacementFrameIndex] = i; + selectedFrames.sort((a, b) => a - b); + replacementFrameIndex += 1; + } + } + const lastFrameIndex = totalNoOfFrames - 1; + if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) { + selectedFrames.push(lastFrameIndex); + } + return selectedFrames; + } + var SmartFileUpload = class _SmartFileUpload { + static memoryLimit = 1024e4; + static supportedTypes = ["image/jpeg", "image/png"]; + static getHumanSize(numberOfBytes) { + const units = [ + "B", + "kB", + "MB", + "GB", + "TB", + "PB", + "EB", + "ZB", + "YB" + ]; + const exponent = Math.min( + Math.floor(Math.log(numberOfBytes) / Math.log(1024)), + units.length - 1 + ); + const approx = numberOfBytes / 1024 ** exponent; + const output = exponent === 0 ? `${numberOfBytes} bytes` : `${approx.toFixed(0)} ${units[exponent]}`; + return output; + } + static getData(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = (e) => { + resolve(e.target.result); + }; + reader.onerror = () => { + reject(new Error("An error occurred reading the file. Please check the file, and try again")); + }; + reader.readAsDataURL(file); + }); + } + static async retrieve(files) { + if (files.length > 1) { + throw new Error("Only one file upload is permitted at a time"); + } + const file = files[0]; + if (!_SmartFileUpload.supportedTypes.includes(file.type)) { + throw new Error("Unsupported file format. Please ensure that you are providing a JPG or PNG image"); + } + if (file.size > _SmartFileUpload.memoryLimit) { + throw new Error(`${file.name} is too large. Please ensure that the file is less than ${_SmartFileUpload.getHumanSize(_SmartFileUpload.memoryLimit)}.`); + } + const imageAsDataUrl = await _SmartFileUpload.getData(file); + return imageAsDataUrl; + } + }; + function scwTemplateString() { + return ` + + + + + + + + + + + + + + + +
+

+

+
+ +
+ ${this.showNavigation ? ` + + ` : ""} +
+

+ We need access to your camera so that we can take selfie and proof-of-life images. +

+ + + + ${this.hideAttribution ? "" : ` + + `} +
+
+ + + + + + + + + + + + + + + + + + + + + + `; + } + var PoweredBySmileId = class extends HTMLElement { + constructor() { + super(); + const template = document.createElement("template"); + template.innerHTML = ` +

+ + + + + + + + + + + + + + + + + + + +

+ `; + this.attachShadow({ mode: "open" }).appendChild(template.content.cloneNode(true)); + } + }; + function hasMoreThanNColors(data, n = 16) { + const colors = /* @__PURE__ */ new Set(); + for (let i = 0; i < Math.min(data.length, 1e4); i += 4) { + colors.add(data[i] << 16 | data[i + 1] << 8 | data[i + 2]); + if (colors.size > n) { + return true; + } + } + return false; + } + window.customElements.define("powered-by-smile-id", PoweredBySmileId); + var SmartCameraWeb = class extends HTMLElement { + constructor() { + super(); + this.scwTemplateString = scwTemplateString.bind(this); + this.render = () => this.scwTemplateString(); + this.attachShadow({ mode: "open" }); + this.activeScreen = null; + } + setActiveScreen(element) { + this.activeScreen.hidden = true; + element.hidden = false; + this.activeScreen = element; + } + connectedCallback() { + this.shadowRoot.innerHTML = this.render(); + if ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices) { + this.setUpEventListeners(); + } else { + const heading = document.createElement("h1"); + heading.classList.add("error-message"); + heading.textContent = "Your browser does not support this integration"; + this.shadowRoot.innerHTML = heading; + } + } + disconnectedCallback() { + if (this.activeScreen) { + this.activeScreen.hidden = true; + } + this.activeScreen = null; + this.shadowRoot.innerHTML = ""; + } + static get observedAttributes() { + return ["document-capture-modes", "document-type", "hide-back-to-host", "show-navigation"]; + } + attributeChangedCallback(name) { + switch (name) { + case "document-capture-modes": + case "document-type": + case "hide-back-to-host": + case "show-navigation": + this.shadowRoot.innerHTML = this.render(); + this.setUpEventListeners(); + break; + default: + break; + } + } + setUpEventListeners() { + this.errorMessage = this.shadowRoot.querySelector("#error"); + this.requestScreen = this.shadowRoot.querySelector("#request-screen"); + this.activeScreen = this.requestScreen; + this.cameraScreen = this.shadowRoot.querySelector("#camera-screen"); + this.failedImageTestScreen = this.shadowRoot.querySelector("#failed-image-test-screen"); + this.reviewScreen = this.shadowRoot.querySelector("#review-screen"); + this.idEntryScreen = this.shadowRoot.querySelector("#id-entry-screen"); + this.IDCameraScreen = this.shadowRoot.querySelector("#id-camera-screen"); + this.IDReviewScreen = this.shadowRoot.querySelector("#id-review-screen"); + this.backOfIdEntryScreen = this.shadowRoot.querySelector("#back-of-id-entry-screen"); + this.backOfIDCameraScreen = this.shadowRoot.querySelector("#back-of-id-camera-screen"); + this.backOfIDReviewScreen = this.shadowRoot.querySelector("#back-of-id-review-screen"); + this.thanksScreen = this.shadowRoot.querySelector("#thanks-screen"); + this.videoContainer = this.shadowRoot.querySelector(".video-container > .video"); + this.smileCTA = this.shadowRoot.querySelector("#smile-cta"); + this.imageOutline = this.shadowRoot.querySelector("#image-outline path"); + this.startImageCapture = this.shadowRoot.querySelector("#start-image-capture"); + this.captureIDImage = this.shadowRoot.querySelector("#capture-id-image"); + this.captureBackOfIDImage = this.shadowRoot.querySelector("#capture-back-of-id-image"); + this.reviewImage = this.shadowRoot.querySelector("#review-image"); + this.IDReviewImage = this.shadowRoot.querySelector("#id-review-image"); + this.backOfIDReviewImage = this.shadowRoot.querySelector("#back-of-id-review-image"); + this.reStartImageCapture = this.shadowRoot.querySelector("#restart-image-capture"); + this.reCaptureIDImage = this.shadowRoot.querySelector("#re-capture-id-image"); + this.reCaptureBackOfIDImage = this.shadowRoot.querySelector("#re-capture-back-of-id-image"); + this.selectSelfie = this.shadowRoot.querySelector("#select-selfie"); + this.selectIDImage = this.shadowRoot.querySelector("#select-id-image"); + this.selectBackOfIDImage = this.shadowRoot.querySelector("#select-back-of-id-image"); + this.takeDocumentPhotoButton = this.idEntryScreen.querySelector("#take-photo"); + this.uploadDocumentPhotoButton = this.idEntryScreen.querySelector("#upload-photo"); + this.skipBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#skip-this-step"); + this.takeBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#take-photo"); + this.uploadBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#upload-photo"); + this.shadowRoot.querySelector("#request-camera-access").addEventListener("click", () => this.init()); + if (this.showNavigation) { + const backButtons = this.shadowRoot.querySelectorAll(".back-button-exit"); + backButtons.forEach((button) => { + button.addEventListener("click", () => { + this._backAndExit(); + }); + }); + const closeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); + closeButtons.forEach((button) => { + button.addEventListener("click", () => { + this._exitSmartCamera(); + }); + }); + } + if (this.takeDocumentPhotoButton) + this.takeDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); + if (this.skipBackOfDocumentPhotoButton) + this.skipBackOfDocumentPhotoButton.addEventListener("click", () => this._skipBackDocument()); + if (this.takeBackOfDocumentPhotoButton) + this.takeBackOfDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); + if (this.uploadDocumentPhotoButton) + this.uploadDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); + if (this.uploadBackOfDocumentPhotoButton) + this.uploadBackOfDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); + this.backToSelfie = this.shadowRoot.querySelector("#back-button-selfie"); + this.backToIdEntryButton = this.shadowRoot.querySelector("#back-button-id-entry"); + this.backToBackIdEntryButton = this.shadowRoot.querySelector("#back-button-back-id-entry"); + this.backToIdImageButton = this.shadowRoot.querySelector("#back-button-id-image"); + if (this.backToSelfie) { + this.backToSelfie.addEventListener("click", () => { + this._reStartImageCapture(); + }); + } + if (this.backToIdEntryButton) { + this.backToIdEntryButton.addEventListener("click", () => { + this.setActiveScreen(this.idEntryScreen); + }); + } + if (this.backToBackIdEntryButton) { + this.backToBackIdEntryButton.addEventListener("click", () => { + this.setActiveScreen(this.backOfIdEntryScreen); + }); + } + if (this.backToIdImageButton) { + this.backToIdImageButton.addEventListener("click", () => { + this.setActiveScreen(this.IDReviewScreen); + }); + } + this.startImageCapture.addEventListener("click", () => { + this._startImageCapture(); + }); + this.selectSelfie.addEventListener("click", () => { + this._selectSelfie(); + }); + this.selectIDImage.addEventListener("click", () => { + this._selectIDImage(); + }); + this.selectBackOfIDImage.addEventListener("click", () => { + this._selectIDImage(true); + }); + this.captureIDImage.addEventListener("click", () => { + this._captureIDImage(); + }); + this.captureBackOfIDImage.addEventListener("click", () => { + this._captureIDImage(); + }); + this.reStartImageCapture.addEventListener("click", () => { + this._reStartImageCapture(); + }); + this.reCaptureIDImage.addEventListener("click", () => { + this._reCaptureIDImage(); + }); + this.reCaptureBackOfIDImage.addEventListener("click", () => { + this._reCaptureIDImage(); + }); + } + init() { + this._videoStreamDurationInMS = 7800; + this._imageCaptureIntervalInMS = 200; + this._data = { + images: [], + partner_params: { + libraryVersion: VERSION, + permissionGranted: false + } + }; + this._rawImages = []; + navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { + this.handleSuccess(stream); + }).catch((e) => { + this.handleError(e); + }); + } + reset() { + this.disconnectedCallback(); + this.connectedCallback(); + } + resetErrorMessage() { + this.errorMessage.textContent = ""; + } + handleSuccess(stream) { + const videoExists = !!this.videoContainer.querySelector("video"); + const video = videoExists ? this.videoContainer.querySelector("video") : document.createElement("video"); + video.autoplay = true; + video.playsInline = true; + video.muted = true; + if ("srcObject" in video) { + video.srcObject = stream; + } else { + video.src = window.URL.createObjectURL(stream); + } + video.play(); + if (!videoExists) + this.videoContainer.prepend(video); + this._data.partner_params.permissionGranted = true; + this.setActiveScreen(this.cameraScreen); + this._stream = stream; + this._video = video; + } + handleIDStream(stream) { + const videoExists = this.activeScreen === this.IDCameraScreen ? !!this.IDCameraScreen.querySelector("video") : !!this.backOfIDCameraScreen.querySelector("video"); + let video = null; + if (videoExists) { + if (this.activeScreen === this.IDCameraScreen) { + video = this.IDCameraScreen.querySelector("video"); + } else { + video = this.backOfIDCameraScreen.querySelector("video"); + } + } else { + video = document.createElement("video"); + } + video.autoplay = true; + video.playsInline = true; + video.muted = true; + if ("srcObject" in video) { + video.srcObject = stream; + } else { + video.src = window.URL.createObjectURL(stream); + } + video.play(); + const videoContainer = this.activeScreen === this.IDCameraScreen ? this.IDCameraScreen.querySelector(".id-video-container") : this.backOfIDCameraScreen.querySelector(".id-video-container"); + video.onloadedmetadata = () => { + videoContainer.querySelector(".actions").hidden = false; + }; + if (!videoExists) { + videoContainer.prepend(video); + } + this._IDStream = stream; + this._IDVideo = video; + } + handleError(e) { + switch (e.name) { + case "NotAllowedError": + case "SecurityError": + this.errorMessage.textContent = ` + Looks like camera access was not granted, or was blocked by a browser + level setting / extension. Please follow the prompt from the URL bar, + or extensions, and enable access. + You may need to refresh to start all over again + `; + break; + case "AbortError": + this.errorMessage.textContent = ` + Oops! Something happened, and we lost access to your stream. + Please refresh to start all over again + `; + break; + case "NotReadableError": + this.errorMessage.textContent = ` + There seems to be a problem with your device's camera, or its connection. + Please check this, and when resolved, try again. Or try another device. + `; + break; + case "NotFoundError": + this.errorMessage.textContent = ` + We are unable to find a video stream. + You may need to refresh to start all over again + `; + break; + case "TypeError": + this.errorMessage.textContent = ` + This site is insecure, and as such cannot have access to your camera. + Try to navigate to a secure version of this page, or contact the owner. + `; + break; + default: + this.errorMessage.textContent = e.message; + } + } + _startImageCapture() { + this.startImageCapture.disabled = true; + const imageOutlineLength = this.imageOutline.getTotalLength(); + this.imageOutline.style.transition = "none"; + this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`; + this.imageOutline.style.strokeDashoffset = imageOutlineLength; + this.imageOutline.getBoundingClientRect(); + this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1e3}s ease-in-out`; + this.imageOutline.style.strokeDashoffset = "0"; + this.smileCTA.style.animation = `fadeInOut ease ${this._videoStreamDurationInMS / 1e3}s`; + this._imageCaptureInterval = setInterval(() => { + this._capturePOLPhoto(); + }, this._imageCaptureIntervalInMS); + this._videoStreamTimeout = setTimeout(() => { + this._stopVideoStream(this._stream); + }, this._videoStreamDurationInMS); + } + _captureIDImage() { + const image = this._drawIDImage(); + if (this.activeScreen === this.IDCameraScreen) { + this.IDReviewImage.src = image; + } else { + this.backOfIDReviewImage.src = image; + } + this._data.images.push({ + image: image.split(",")[1], + image_type_id: this.activeScreen === this.IDCameraScreen ? 3 : 7 + }); + this._stopIDVideoStream(); + if (this.activeScreen === this.IDCameraScreen) { + this.setActiveScreen(this.IDReviewScreen); + } else { + this.setActiveScreen(this.backOfIDReviewScreen); + } + } + _drawImage(canvas, enableImageTests = true, video = this._video) { + this.resetErrorMessage(); + const context = canvas.getContext("2d"); + context.drawImage( + video, + 0, + 0, + video.videoWidth, + video.videoHeight, + 0, + 0, + canvas.width, + canvas.height + ); + if (enableImageTests) { + const imageData = context.getImageData(0, 0, canvas.width, canvas.height); + const hasEnoughColors = hasMoreThanNColors(imageData.data); + if (hasEnoughColors) { + return context; + } + throw new Error("Unable to capture webcam images - Please try another device"); + } else { + return context; + } + } + _capturePOLPhoto() { + const canvas = document.createElement("canvas"); + canvas.width = 240; + canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; + this._drawImage(canvas, false); + this._rawImages.push(canvas.toDataURL("image/jpeg")); + } + _captureReferencePhoto() { + const canvas = document.createElement("canvas"); + canvas.width = 480; + canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; + this._drawImage(canvas, !this.disableImageTests); + const image = canvas.toDataURL("image/jpeg"); + this._referenceImage = image; + this._data.images.push({ + image: image.split(",")[1], + image_type_id: 2 + }); + } + _skipBackDocument() { + this._publishSelectedImages(); + } + async _uploadDocument(event) { + this.resetErrorMessage(); + try { + const { files } = event.target; + const fileData = await SmartFileUpload.retrieve(files); + this._data.images.push({ + // NOTE: data URLs start with a file type before the base64 data, + // separated by a comma. + // + // we are only interested in the base64 segment, so we extract it + image: fileData.split(",")[1], + image_type_id: this.activeScreen === this.idEntryScreen ? 3 : 7 + }); + const nextScreen = this.activeScreen === this.idEntryScreen ? this.IDReviewScreen : this.backOfIDReviewScreen; + const previewImage = nextScreen.querySelector("img"); + previewImage.src = fileData; + this.setActiveScreen(nextScreen); + } catch (error) { + this.handleError(error); + } + } + _drawIDImage(video = this._IDVideo) { + const canvas = document.createElement("canvas"); + if (this.isPortraitCaptureView) { + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + const ctx = canvas.getContext("2d"); + ctx.drawImage(video, 0, 0, canvas.width, canvas.height); + const previewWidth = PORTRAIT_ID_PREVIEW_WIDTH; + const previewHeight = PORTRAIT_ID_PREVIEW_HEIGHT; + const paddingPercent = 0.5; + const paddedWidth = previewWidth * (1 + paddingPercent); + const paddedHeight = previewHeight * (1 + paddingPercent); + const cropWidth = paddedWidth; + const cropHeight = paddedHeight; + const cropLeft = (canvas.width - cropWidth) / 2; + const cropTop = (canvas.height - cropHeight) / 2; + const croppedCanvas = document.createElement("canvas"); + croppedCanvas.width = cropWidth; + croppedCanvas.height = cropHeight; + const croppedCtx = croppedCanvas.getContext("2d"); + croppedCtx.drawImage(canvas, cropLeft, cropTop, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); + return croppedCanvas.toDataURL("image/jpeg"); + } + canvas.width = 2240; + canvas.height = 1260; + const context = canvas.getContext("2d"); + const aspectRatio = video.videoWidth / video.videoHeight; + if (aspectRatio < 1) { + const imageFrame = this.activeScreen.querySelector('[class*="image-frame"]:not([hidden]) [href*="image-frame"]'); + const videoBox = video.getBoundingClientRect(); + const frameBox = imageFrame.getBoundingClientRect(); + const sourceXOffset = (frameBox.left - videoBox.left) / videoBox.width * video.videoWidth; + const sourceYOffset = (frameBox.top - videoBox.top) / videoBox.height * video.videoHeight; + const sourceWidth = frameBox.width * (video.videoWidth / videoBox.width); + const sourceHeight = frameBox.height * (video.videoHeight / videoBox.height); + canvas.height = canvas.width * frameBox.height / frameBox.width; + context.drawImage(video, sourceXOffset, sourceYOffset, sourceWidth, sourceHeight, 0, 0, canvas.width, canvas.height); + return canvas.toDataURL("image/jpeg"); + } + context.drawImage(video, 0, 0, canvas.width, canvas.height); + return canvas.toDataURL("image/jpeg"); + } + _stopVideoStream(stream) { + try { + clearTimeout(this._videoStreamTimeout); + clearInterval(this._imageCaptureInterval); + clearInterval(this._drawingInterval); + this.smileCTA.style.animation = "none"; + this._capturePOLPhoto(); + this._captureReferencePhoto(); + stream.getTracks().forEach((track) => track.stop()); + this.reviewImage.src = this._referenceImage; + const totalNoOfFrames = this._rawImages.length; + const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames); + this._data.images = this._data.images.concat(livenessFramesIndices.map((imageIndex) => ({ + image: this._rawImages[imageIndex].split(",")[1], + image_type_id: 6 + }))); + this.setActiveScreen(this.reviewScreen); + } catch (error) { + this.setActiveScreen(this.failedImageTestScreen); + } + } + _stopIDVideoStream(stream = this._IDStream) { + stream.getTracks().forEach((track) => track.stop()); + } + async _startIDCamera() { + try { + const stream = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: { + facingMode: "environment", + width: { min: 1280 }, + // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant) + // "We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges. + // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it." + zoom: isSamsungMultiCameraDevice() ? 2 : 1 + } + }); + if (this.activeScreen === this.idEntryScreen) { + this.setActiveScreen(this.IDCameraScreen); + } else if (this.activeScreen === this.backOfIdEntryScreen) { + this.setActiveScreen(this.backOfIDCameraScreen); + } + this.handleIDStream(stream); + } catch (e) { + this.handleError(e); + } + } + _selectSelfie() { + if (!this.captureID) { + this._publishSelectedImages(); + } else { + this.setActiveScreen(this.idEntryScreen); + } + } + _selectIDImage(backOfIDCaptured = false) { + if (!this.captureBackOfID || backOfIDCaptured) { + this._publishSelectedImages(); + } else { + this.setActiveScreen(this.backOfIdEntryScreen); + } + } + _publishSelectedImages() { + this.dispatchEvent( + new CustomEvent("imagesComputed", { detail: this._data }) + ); + this.setActiveScreen(this.thanksScreen); + } + _exitSmartCamera() { + this.dispatchEvent( + new CustomEvent("close", { detail: {} }) + ); + } + _backAndExit() { + this.dispatchEvent( + new CustomEvent("backExit", { detail: {} }) + ); + } + async _reStartImageCapture() { + this.startImageCapture.disabled = false; + this._rawImages = []; + this._data.images = []; + try { + const stream = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: true + }); + this.handleSuccess(stream); + } catch (e) { + this.handleError(e); + } + } + async _reCaptureIDImage() { + const previousScreen = this.activeScreen === this.IDReviewScreen ? this.idEntryScreen : this.backOfIdEntryScreen; + this.setActiveScreen(previousScreen); + this._data.images.pop(); + } + get captureID() { + return this.hasAttribute("capture-id"); + } + get captureBackOfID() { + return this.getAttribute("capture-id") === "back" || false; + } + get hideAttribution() { + return this.hasAttribute("hide-attribution"); + } + get showNavigation() { + return this.hasAttribute("show-navigation"); + } + get hideBackToHost() { + return this.hasAttribute("hide-back-to-host"); + } + get documentType() { + return this.getAttribute("document-type"); + } + get isPortraitCaptureView() { + return this.getAttribute("document-type") === "GREEN_BOOK"; + } + get documentCaptureModes() { + return this.getAttribute("document-capture-modes") || "camera"; + } + get supportBothCaptureModes() { + const value = this.documentCaptureModes; + return value.includes("camera") && value.includes("upload"); + } + get disableImageTests() { + return this.hasAttribute("disable-image-tests"); + } + get doNotUpload() { + return this.getAttribute("document-capture-modes") === "camera"; + } + }; + window.customElements.define("smart-camera-web", SmartCameraWeb); + + // src/js/smartselfie-auth.js + var import_jszip = __toESM(require_jszip_min(), 1); + + // package.json + var version = "v1.2.3"; + + // src/js/smartselfie-auth.js + (function SmartSelfie() { + "use strict"; + const endpoints = { + sandbox: "https://testapi.smileidentity.com/v1", + live: "https://api.smileidentity.com/v1", + production: "https://api.smileidentity.com/v1" + }; + const referenceWindow = window.parent; + referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); + const labels = { + 2: { + title: "SmartSelfie\u2122 Authentication", + upload: "Authenticating User" + }, + 4: { + title: "SmartSelfie\u2122 Registration", + upload: "Registering User" + } + }; + let config; + let activeScreen; + let id_info; + let images; + let partner_params; + const SmartCameraWeb2 = document.querySelector("smart-camera-web"); + const UploadProgressScreen = document.querySelector( + "#upload-progress-screen" + ); + const UploadFailureScreen = document.querySelector("#upload-failure-screen"); + const CompleteScreen = document.querySelector("#complete-screen"); + const CloseIframeButton = document.querySelector("#close-iframe"); + const RetryUploadButton = document.querySelector("#retry-upload"); + let fileToUpload; + let uploadURL; + window.addEventListener( + "message", + async (event) => { + if (event.data && event.data.includes("SmileIdentity::Configuration")) { + config = JSON.parse(event.data); + partner_params = getPartnerParams(); + id_info = {}; + setActiveScreen(SmartCameraWeb2); + } + }, + false + ); + SmartCameraWeb2.addEventListener( + "imagesComputed", + (event) => { + images = event.detail.images; + const title = document.querySelector("#uploadTitle"); + title.innerHTML = labels[`${partner_params.job_type}`].upload; + setActiveScreen(UploadProgressScreen); + handleFormSubmit(); + }, + false + ); + RetryUploadButton.addEventListener( + "click", + () => { + retryUpload(); + }, + false + ); + CloseIframeButton.addEventListener( + "click", + () => { + closeWindow(true); + }, + false + ); + function parseJWT(token) { + const base64Url = token.split(".")[1]; + const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); + const jsonPayload = decodeURIComponent( + atob(base64).split("").map(function(c) { + return `%${c.charCodeAt(0).toString(16)}`; + }).join("") + ); + return JSON.parse(jsonPayload); + } + function getPartnerParams() { + const { partner_params: partnerParams } = parseJWT(config.token); + partner_params = { ...partnerParams, ...config.partner_params || {} }; + return partner_params; + } + function setActiveScreen(node) { + if (activeScreen) + activeScreen.hidden = true; + node.hidden = false; + activeScreen = node; + } + async function handleFormSubmit() { + const errorMessage = document.querySelector(".validation-message"); + if (errorMessage) + errorMessage.remove(); + try { + [uploadURL, fileToUpload] = await Promise.all([ + getUploadURL(), + createZip() + ]); + uploadZip(fileToUpload, uploadURL); + } catch (error) { + displayErrorMessage("Something went wrong"); + console.error( + `SmileIdentity - ${error.name || error.message}: ${error.cause}` + ); + } + } + function displayErrorMessage(message) { + const p = document.createElement("p"); + p.textContent = message; + p.style.color = "red"; + p.style.fontSize = "1.5rem"; + p.style.textAlign = "center"; + const main = document.querySelector("main"); + main.prepend(p); + } + async function createZip() { + const zip = new import_jszip.default(); + zip.file( + "info.json", + JSON.stringify({ + package_information: { + language: "Hosted Web Integration", + apiVersion: { + buildNumber: 0, + majorVersion: 2, + minorVersion: 0 + } + }, + id_info, + images + }) + ); + try { + const zipFile = await zip.generateAsync({ type: "blob" }); + return zipFile; + } catch (error) { + throw new Error("createZip failed", { cause: error }); + } + } + async function getUploadURL() { + const payload = { + source_sdk: config.sdk || "hosted_web", + source_sdk_version: config.sdk_version || version, + file_name: `${config.product}.zip`, + smile_client_id: config.partner_details.partner_id, + callback_url: config.callback_url, + token: config.token, + partner_params + }; + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json" + }, + method: "POST", + body: JSON.stringify(payload) + }; + const URL = `${endpoints[config.environment]}/upload`; + const response = await fetch(URL, fetchConfig); + const json = await response.json(); + if (json.error) + throw new Error(json.error); + return json.upload_url; + } + function uploadZip(file, destination) { + const request = new XMLHttpRequest(); + request.open("PUT", destination); + request.upload.addEventListener("load", function() { + return request.response; + }); + request.upload.addEventListener("error", function(e) { + setActiveScreen(UploadFailureScreen); + throw new Error("uploadZip failed", { cause: e }); + }); + request.onreadystatechange = function() { + if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { + setActiveScreen(CompleteScreen); + handleSuccess(); + window.setTimeout(closeWindow, 2e3); + } + if (request.readyState === XMLHttpRequest.DONE && request.status !== 200) { + setActiveScreen(UploadFailureScreen); + throw new Error("uploadZip failed", { cause: request }); + } + }; + request.setRequestHeader("Content-type", "application/zip"); + request.send(file); + } + function retryUpload() { + const fileUploaded = uploadZip(fileToUpload, uploadURL); + return fileUploaded; + } + function closeWindow(userTriggered) { + const message = userTriggered ? "SmileIdentity::Close" : "SmileIdentity::Close::System"; + referenceWindow.postMessage(message, "*"); + } + function handleSuccess() { + referenceWindow.postMessage("SmileIdentity::Success", "*"); + } + })(); +})(); +/*! Bundled license information: + +jszip/dist/jszip.min.js: + (*! + + JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + + (c) 2009-2016 Stuart Knightley + Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + + JSZip uses the library pako released under the MIT license : + https://github.com/nodeca/pako/blob/main/LICENSE + *) +*/ diff --git a/packages/embed/build/kra-verification-basic-kyc.html b/packages/embed/build/kra-verification-basic-kyc.html new file mode 100644 index 00000000..2dd54544 --- /dev/null +++ b/packages/embed/build/kra-verification-basic-kyc.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/kra-verification-ekyc.html b/packages/embed/build/kra-verification-ekyc.html new file mode 100644 index 00000000..7d895add --- /dev/null +++ b/packages/embed/build/kra-verification-ekyc.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/product-selection.html b/packages/embed/build/product-selection.html new file mode 100644 index 00000000..b6abe38a --- /dev/null +++ b/packages/embed/build/product-selection.html @@ -0,0 +1,226 @@ + + + + + + SmileIdentity - ID Type Selection + + + + + + + + + + + + + + +
+
+ +
+

+ +

Setting up

+ +

+ Just a few more seconds +
+ We are setting up your verification flow +

+ +

+ Powered by SmileID + +

+
+ + +
+ + + + diff --git a/packages/embed/build/smartselfie-auth.html b/packages/embed/build/smartselfie-auth.html new file mode 100644 index 00000000..5aaf8105 --- /dev/null +++ b/packages/embed/build/smartselfie-auth.html @@ -0,0 +1,296 @@ + + + + + + SmileIdentity - SmartSelfie Authentication + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + diff --git a/packages/embed/build/smartselfie.html b/packages/embed/build/smartselfie.html new file mode 100644 index 00000000..69ced52f --- /dev/null +++ b/packages/embed/build/smartselfie.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/verification-method-selection-single-country-multiple-id-types.html b/packages/embed/build/verification-method-selection-single-country-multiple-id-types.html new file mode 100644 index 00000000..b379917d --- /dev/null +++ b/packages/embed/build/verification-method-selection-single-country-multiple-id-types.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/verification-method-selection-single-country-single-id-type.html b/packages/embed/build/verification-method-selection-single-country-single-id-type.html new file mode 100644 index 00000000..811f2a71 --- /dev/null +++ b/packages/embed/build/verification-method-selection-single-country-single-id-type.html @@ -0,0 +1,50 @@ + + + + + + + + + + + + + diff --git a/packages/embed/build/verification-method-selection.html b/packages/embed/build/verification-method-selection.html new file mode 100644 index 00000000..410dd737 --- /dev/null +++ b/packages/embed/build/verification-method-selection.html @@ -0,0 +1,70 @@ + + + + + + + + + + + + + diff --git a/packages/embed/cypress/pages/verification-method-selection.html b/packages/embed/cypress/pages/verification-method-selection.html index ba42a2ac..410dd737 100644 --- a/packages/embed/cypress/pages/verification-method-selection.html +++ b/packages/embed/cypress/pages/verification-method-selection.html @@ -46,6 +46,11 @@ id_type: "PASSPORT", verification_method: "doc_verification", }, + { + country: "ZA", + id_type: "IDENTITY_CARD", + verification_method: "enhanced_document_verification", + }, ], callback_url: "https://portal.smileidentity.com/api/v2/007/postback/update_status", diff --git a/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- biometric_kyc -- should redirect to the biometric kyc sequence in a nested iframe (failed).png b/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- biometric_kyc -- should redirect to the biometric kyc sequence in a nested iframe (failed).png new file mode 100644 index 0000000000000000000000000000000000000000..44db9d1eb7d6b510f006c0570092365c3c5a5f46 GIT binary patch literal 248717 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�Gc!A` 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νd2 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�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 Gxc@%|NoRln literal 0 HcmV?d00001 diff --git a/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- enhanced_kyc -- should redirect to the enhanced kyc sequence in a nested iframe (failed).png b/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- enhanced_kyc -- should redirect to the enhanced kyc sequence in a nested iframe (failed).png new file mode 100644 index 0000000000000000000000000000000000000000..b8e8be7fe8a79bfe8dce0a651bc573d79f23adfb GIT binary patch literal 240613 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�ZpnZ<&f`_kU2%}p0@i`8%4x>YGy`TDgy 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

Y(2e*HOha=`Kg0O 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ⅇSzWz0kQpEUQgg5W~8MB zr#anivOSg+Xhbe0fx$ERa>1h|90e>U=JeNeR zV?2>^coHi-9~T!|e|vLxW1V!^M4!@^tC@kjB~jb470!6ro6av)AoTEGxoQJ1*n_Yo z^PrbKpa{9=7izn@x~fSB)R+IdlH1VmU~%+n1`erDF%lSG@&Gss!)V4VOkYu_MU6qw zD@j5^0;CGu0z}zUl*x7|I3%XO)K*Y(dumGHx?~>PcY(l$hkzC2ynbC4Eb}xn@jwH_ zw_v3R&DZtJ`$OZDuvh5@6uj|*N?u+Y!&`$?``fc(mKGM@TU!k)M%@w{M#{_P7#bQ! z<|BUHqzLw)6cJ>$8G$~}lu`g@v4?h3Fz>islQ4yhX7x|G00JROOD`D}O(=q#lc$bD ztC19{*J3W5L10QDbbcAYA8J!gcMM1_-c+YYEP%{r!8OyR?ea(o*%}hWKS%QM7!S&R`724~f+c03{Mf_E*=` zDR)47`SR`iY!5S7uV~+rDfJwo1JR2CY~R+G*&aUG%jP_9H#v+YQCyoumJI{-zkE-UF^?`5Dd;IwG z#6$#0rmUxBrPp7?X5KhPWr7q}90jhEgIU5w2C0YYFLyKsV1xtUD@l>SbYSf5JtMTh zzE$Y}O&Hr_)23%mpL4VfX~sA_Q4M5U{f&t1r+2mMA%v}-`U^9 zgV>Tz*lsG1nuUoQei$Ss8mY7I=hFCEnjQM#!-p6tH6n8&==Iz*!~n;AL@K_?v$}=2$~%A%{1u zq&B4u3=K0fGq1Eu9jatM1*qeW6=pfA?Z}twat&!|Y0s0zD<;3KnD=6Zg@l&pM+bjR zPltnL@tBk{*6RqCA>~kou2ks|RYv%SK)%0D-f4iybc`W>b_PNUBrDw=)c zXAF$h+q-b`__OsQ+ba_HnXpp35>jS6c`Ej@@(YX1ch;&7W##0KCEnZT(&ohW_g{9# zU?8Bg@TdE>#VW5J^7A``7%8o`mMN8Q+h90$_1oLYWiq+3-QBb)=y|Zq^3T95t}_H8 zb5_Il8Q$?HsCwoYBTaN#c9 zO~tSVa?J~#`EhB-_=BzJ<<(UMQ&YaW9k+Ou_P#fF&F=>8J*-`BaPY75c&mc!`WoDL z_vzH_ldm55Z;lNEg!4+i%oC>hDwS96RPNJ}(M!$-0_KR-j8&_z+U?-Hhxj)6n zx0Wi99rGrJyImNir0V`Ud0YUS&n9$*m7Zf?C3!PnthTmx#YOr4;<&l3z5OIk-z<*t zfnHqk=3}5YB9O?(c6Llo^#9!^ca0b;(HMt zeF;F_5AXki;|J1~{FIaNd3$>j4%?2GKpfDW!7hXGY`2O*Oe!H-=;-Oqhh|gTN^xFZ zu3s6QYhQuQqG_b{VzMQ&oWa@2>3MdxmH+y$-Cn#JWNxH_HO1GL%6DVoRWS9&O=)R$ zg7Ae47X;I(>i)?E0RR2xvENsC^d~&%)vFW!0sGf3pDuD*oYzB%IfLbKQ_-m6xnn5U zaHC^Qx*-=YSsG`Ye)V9laMh2;wDx4q&6}3xj>GF`==e=v;zgW4Zkw=O{H3C7(9zVS z`$V`1oTIQ;?vtSsB*S*`Ny~<`3%B5SzJd389=fPBR>gqJ`1D|Z&#L;)}PVZGZ zor8RaA3hftk&uu)0*Q~mD)8hi1RTuJ;ulKyxHT%$=tSS;74lkeS=l*2nHE0TSMSw$ zH8pxeJ^35J5E`1A5nnz(CWx@Ini&`wrd8&iWQ31(bLqJ5c(A4OE66G5fz)^s7|4>I(L}qmK)YF>u>(#@&;|Di10jdn%lz!7lq162omYW*kDp{1B`l z@Vv#+G02sRd`>yFeuL-Z!J&CN`ugU5&1RZfT4&Yyoo(#wxXM`Gehq#Nfs{MrZ(RyH z7BoC;ln*O84SFz~Jb6;b;O)|E>VT&bsM=3RNGJplzP7^V3G$sY`1=---__XIhjvRR ztE(#X;SILZ($G5ZbAf?JZgX;eCG>r`BP8?^l=^ujf%>MgGr+$9q%OOOO!x}Q-q6f-OM+5lUY?FV`rD@zoeG;_oz5FR5q1D0JrZRjY z{f3Ut$98|94uyf=?RBX{B^@ob4YRZ0zp-Yi5S77t6k=yuY{CQ=)%GNXUXUqqtb$GCeIPGvs6b z&0Dt=o-}=79YlTIC1FC{;mI+9{~vqr9Zz-t|Bt_-yYo-~WF9ecW!{E_HFvc|FJDalhXm zYvz`!r&&Xb)sLi|3 zz;NG=MGMkf$AweAe;3El|EVzUx#Daod8lkNJvCLdQ|L+!y2&R3tEojd_Ws@=LGrQY zCp1pU==+^0mrcBHX`7xph&|vDzT{YX9Y1sZfwHo)kt+hFsvrpX}eZJ|K z&cuvX-`;j^_}va8>cJEnGogXP3ZEe-uJU{( zfkZZBLg$f%MRt{YfZ8F`!NEbvHk9k8Z1d-JYJh>cQ(ej8a&nI(CAq23P{05DIq^qJ z0^E>Gm*~f5{u~u>C8MFC5!Kda1ap;DWw+V*`vc=4Wbth=^XvLT*tV*ko|6dIE4#xx zYq;x2ol8B){fpxGgf}P;hVVhJ2A;uC-f{dEEP>sg~D#?1RSC~ zQO_4xU$9<2Q=oB1z}2+`XCsi9`phH7P$E2iqoS$sg_6?G5+VMbtJh>aiWTX`064xh zF&S^1mdZ*uESR41pFDQrgl}>(%S@a0JFv3M*IBOe@f`;Ul9jD4w#fK|`PU=k3l{`8 z_imN!Ztd(8HalK7o0(dmcrEG`5U?Vf(>^n0XS`TAsEVDLsTvqK(#pY6?6Lp3xiCHb zRk)hRO(`(Vp!9$jKI7-Pw*ECGhl-IABO8ro!p6TpMfE|PS%Ksk^+sTD;1e~qn}7cN z8N<$pg0CTck2$#Tj3AV8f}Nece{fKuP3%ML@TIlKDt@6UFl1I8B40kB7D?0T0DOVe z%R*XNGq|o{_tah!KT2;eWr(coJCozJX}h-yLCroYM#=cFCMuUk$c4g}l0GCU>2cEc zq|1;aU_n0EswE~is{ZFd*8c6(-cafF`T2QyC8ZPa%J&6OKhr;{Dk-INNqb<6Bn#40 z|Ko_jw}d+s$N`yn`p}K^%ZJ~w$tZq`tnO@-oO7Pk(_ijUZsIa%c=p!Ux2n4O3_ zyLU8!VPVvlglvu(w;izZ)B(8REaRfP#~xm=C|tq)I;*htYvxZ1M90E{^0jEY5!cM3 zLn!{&ZmIwho-Dw-o1riWj>BFu0=Lb9|;RSCwF zWH{|uztUYUXP9=o+!L9gFTTaKHrGYw;Nb8hKff9PX=+ABwGTP=hbflQWW6k8SR_D2 z9pij$G0Uv~m2i{5s;Zj!qIZb$Yg6}2zlY5+G1KfrS+~MHJ?$O?M30ZYt#I*0*vpJp zN$LDHi;Cgl4Xv$!V0eOLq@O9O9v9Ij`o1fCtfwD-J>~Cz{21jT2`MRQcW-Z1lhm*; z|CI;#kknRJB}F46qt4!T^9s2^C&H+uygc@{^GfwG+K32iCO-EIgwz-A9X1@G7vUS-rbQnNt?xz+9FMO# zaD%l)UMMQvEMqWd<>ai79}&oPY~$z`xL?`SMee?{;hmpP4p)p4J`53jh}Pp7otber zzHvU)?fR}AuH`5zCH2SkQ9;}lPB{(drbfwS)T1)ZOWnU)6g1K@^6l`8-m08shrz^r z6AQh3ZH8YmK)S?SN zSm%XG}~>J01}cAz5^_r7WCPm{+V8d#x=?dilP9VYY-r zL^I!=!nf}!C{9j?@XYthEMf`Fw|TR_WoIi59=(6#2927U+Pexn`LxQotH7%G1_s^* z3Hr1}dIYqv|B4wKW8eal)Lya~`gkUbV%cqD1J~;4n2Z7r1~>cx_{5o+bU&w|u#X?T zXJ(9OE?%sHk=o-P8M{q%c~=MgV;8lHH*Yp3n}2R;X%U#d zPcP&s!KMvyB-jH{@G{o9j&Bs;NSyM2ytKONm!HpLXK#O+5##VfG8)*~+lOE8h!6JS z-%e>Tz6}VlVZL^)vb&pNagm{O0}a}ldEq;li~c4!II9X5=4ha_5r;WxpYTMHI0on1 z%+W%Nfgm69(FYb596t*R!0aaM7KVhB6?N~&{duR(UT-!Ze}|jfR=4Il{Fk=G1QHYLRT)ef=5oql0zW>z!Z z6!|qHgIt8*C4lqfOzk~Th6G#P^4-gsj*PRjvxS2m%X**gXy_Z*VFeU759FEWBewVo ziX6T20|STMAwS}_Rl80!J|!(pV#hs%f&Pl42DpWaeG3-hovkjVE9$y*7zus-Z+A4# zF$ha94nvUbM?rxppWiMc^3%lm>0)^b%c1GAkKG*|wrFP_`t|j75Ep!54l4pDX#D9i(D2K)-s~BAI<+0b~wfFEme3SX+=zVIVn(7ez!}`gQaBnYiVm2 zE)FUT9`N3jv|bnS2LYE*0V>O#hta|{Zbs%C*PF#@nruVZ3dGtBMn3yK|ZCt!ru zRx4`4BlFS7W<)7k0l9p3G_4^+QgpL7OZwg8tDsI*Ly&1vILw$wM1=9=$)fQ1n7`fq zSEFww~Qw<%*=10Vm(@lV$IsHj9UaAVrzx{IQRJ1vu z(9W@e^?Bvw1kfl+5J92xG2Dozk+fClDZ#ylZ#ag&h6b885fSohjz`V_b>z~o%l`p` zl1)tfJ4t>tG$^EIXHzroj;FPEbbPSr>gf2@EtWE#mXh$`ag9oMZ?|~S_STMWT~Kt? zYGX!wAMg9SLjxlvY*`c_(c@xzDfh9RtJpCHXJuu^nj%y4s2 zn1iufW1od_)`t%ty~4{&HXwOalm!M=bGg_ZHfoOYzn!SULx82ZV+ zK6@wsjj5fO=ZAa+;9}Ie$9VV<38)8;?d|PRSm&Zq_Z_|N)Q%I?LM!50vRA1BpKjkrMt{Ltd z_4@eHHp5)V)z`mmc`y#Y^4~|>tGM>(V->uxq%vJLfWO~o>aT!Y3faR32P43JNkIsF z0N5H1$9*fEgy*)@|CWUQ`tLrSNdcPN{u&r**b~+QeAK&+IEP_#w53m6me8<};L^t4 zksEAmj~;jk!{5F@<|9bA`VH@`N)&NZX{k5FrqVvr2c_=YSi2?f>yw5iRAG z`RX-6?sa*$odIsBC-_=YLJRx^?%vCnFDnP{W`N$8+|37V6ZCqh*luqY@N(JpTTxsT zJPiC6p3ln4%B!M+!~#wn@ z)Q2)Yads|wJ`VzTU1>qaa$St&uV24TGrE@@hU|;ftSmqdbTGsmru)6iQuq9rX4U-{ z%vT};9bZ5d!ut!hbN6|99f2+;0)Wp@&N4eE2!ZSBf(+$$Cg!u8W%ub+Rg0c!X;Df^ zvGorO=;B95qV8MgJ)c*8VkS+bJCx8B^47K;tBtLV)mWu)a&_1yyuc%Q`74>3nIx%N z`*M1O19zv50c?A|F((m$fsReY+yeu&aB+xhGb)5Ks7rMv{4}f&5z&D)h1t2eI^$PA zMMhq^ES)Hrv##`}Rsk8V?@|dJL5vmlN8j_%7>Caps!zLl>8eX6Cr| zEEbwiVX;9xDNO40Jm6e`$ecb!^R_M0-KVTfBU82f#PqZw;suCUe+aM6WxjJ}Vw=&O zg14(n$JCfJZud_QTYrUn%&QCZl}QpGbwLHi6j{i-G*35m9Ao6CxOVN@mf0M)!El-X z&d|D*t*v)qA?3!xK#$3$g;<-AurTGXUqT?q27n#RDy*-qy{gx&0)o#KcJ^~{gSm%# zoZHeNYDYESM|gWdJ2n{dB))kPNMLWh{ry=X!TQe6%a3!$lGQS|Eq#g|3 z<;B#_x@kj0@o{Bk-ZCLi5{Ow51c+ ze0+S|e|hryRY5lzi;>0}DmLYxs8J}@t?X{5D0lH0$8D3tnFuKxzEoUV@(A!2vQ%G~ z1?V;4Iacm(EOyPZ1{rfd&&Wt6f)+48qaDqIdSsiH0qD@QFRQLQE%XXA^I50|eN<#I z0wm2J`YO<45BLMGu=gZ=f{c5I;j-uuzdAWDP*iu+R7p-LUkVB+^%5!E4=F8Gn>zq# zgYiIJ3WfVC$T^rja6wg2mSw%s#uIfv4L2tHKv%e8dxuTheeE`o7zvTKmX=?w z^h3$vxKH69tj}b4Y%xq;mwt;vkwG|@>QgfSztWb(Auwme@wXy>82jpXP4vdutNi@w`y@6RD3>EmC&-s) z^}9eL3}6s?h`d8bf*!G#YtFW^vZ5BOfITn?6lbo2(9=^@Ro0z#I)o?RqVvmh35nYw z3_@>+%Ak7IYL$=eDgU?cXn4-|_TKAs$bxc#Vw-914crL3d zO3v$a{6NUN;F8zco~og6GTuT|00JbnJ<>UvwITGL4P~|hAGtTbJnr^cg*)T5)h6F~ z#Dj{F|J|QIuY%}!836VnHE1#A9F00g&pi&_FGC-UDLZ+JUZT-5h1TT_K$82D0 z*4C#(7)1iA{U{4dBl%tFy>|Z6h!LIYorL8ECWY~NES0{#e*aLDrHCiz2l2PS%0-=3 zX?NBc5ipBU(f$}ZSUQM19y{1u4eG?o{^M>iTUk-QU@v%Za~Z;RiBAIg4IvEcr~@_q z^zmZg)Xtxe07>MLs%l!}FM4O72fBua!Rdc)0!Id#EqWPl#a$p^@@i^{y%*QkPwJSM zyavn%Ic2H&X0*P(zFhOYCyOjGPfaBJJ71qrP~ZVB^aXl>%t>0Bcl7r9miQdGOie^K zbEZtRFci`!uk(3#?@h)NVK3U*SXmd>knpR(#oBv%o&;0ltcSQEl14nnkmm4XWf#w1 z#_?JdA@chtS3jM-zy=8i<(_9dAXpZy%1c8t3o+Ekb9jZzrz#<)2rZ3oaB#@8UiuCo zA1FBJmiMstc;)N5!3tvDmCLeXC1L?wMb9H&WmMy2u z7t%P~wtl%H%veK8cXxM?K*u-Cr(2~)jC0v{c8+otafwM-=T_P73;Y%38o{t4T+mqr zxIz_P_B0T6;@kQ9K1~J0U}$KVvbRg#A>xk;yg%mRIKP1M@ypl{nIC53eqKoZqo{}% z8H>StEVP&X=Weg*V(!S}*~!|GDD zdQ|JHqDrmQf&x5^GTwkY#G`n-s z(a|A!iYqTz(n_}-|9g?)=d8CLKR}*T{r-I%?5jqW{sN#{NW9Auw!|}B5?H)~RL(Vs zhm#sitUh0U{bmP*bGTw3K4uN#`~C{3WQFXFrqXGgJ>dh9o(B@fTFBqHYoaH~QG{?b zY%D%BG)G!M$FQcpULV^UCocXBz0cW!4o(g~XO?MB)H$P~qAm*w$yh|aJ1EIiKjaml zhUpYZh_4Wacu~(q)0YNGYZVY)ByMC|yB0*G9)ksyjTg-Bwf?&(^6tQ#2HA_TQ(70k zdPvJ<&JYw}666FqdG2!GNh+r&NjE{oBI4ug*M(-2-+#6+G}4H!{``67S_Q=R zYrp(@guG)roUKhzNKqPM{@Wv6{nJQ;Feh?gJCk36wY$Q}OT}xUp@2$e7P@bpds|#q z5I-E+K!3^lXeI4-KVOTr# zw}1MtzlhsYAb*F|f4!&uga7;Izc2pj)Bm?7|6Gy(AJ=4)hVbw|asmDyYwvIc=#Z|i zP)AnGfVWn_ClL1+7R+>wjCQ_6J|rOLXJ#P2-~(zrYS&@SW3jh|!oi`C>-Ie*Q^9{e zkGyg{qH|$oaCo49t4Zw=-%oNE7Z)lQKEz9Trp!y>I_21ik0n@!b`g-@>8$?LkQ_d` zQ-HD*!(*u~aMq-qA>%Ub&Hr;N{GS&swW-Uco&54NlpK>F6eoj$CAdj_C$^B6Vf(U^LgTH&V-5tG;|p+Pe|D^uG#$a3ErL6Lw=C|ZsM%OYP;=!iG0AU ztdjE#5nW4elEk&`M*s8YQ}zEcIJ1~5naXm+A7i6(V)^HXeoQ!-iEJTrv$JE%a|)-= zo<%%G7`uCWuJG}lgJSUdihVyd90sk;D0r~-4N@X&jiu0G9*eWHUXC+p62!@VQ5}@} znk4_p_6+443ufl;KUkBeTy4{7>cyQp;bYU62%u(pvR4fFKIj zLd9Obq(UmQHFvEh444s}+4f&fPK}R~QbuZ4EGz1x-hH6qx8rj0-KY%D=v(d`3goiT zI9&HQ=G6W-bu=x6Y#+aPap#`JV7e9BRaGUbdSv7r=vV;$OP}kX9ciNm zwCVIxt2 zz0hb*gc!~Q*>P!oF2w&#oo;vPxXKT!+vypmN&3+2k4w+#KD073nBl&Cuj<|Sc&9V( zK^{;grA{0)L8ZC>gYjt)O#n9DvqbUOv&*N(R+AZZhxJH(+fmdp$`h6F zs|^heFXjXjJYMmi=ZLz#8Vwi!;lno&aC8#9hok)z9-eXMIwH6}b*Buq#2(!SX6-bC z@G)qzKym)o9^yyIXnL1}nVDwZQ|*Y5kmj86y?eb&YipGaAF7w&O#MFjZ5?;!sHLUc zmW3fLnm9-Rp-z#Q3^W#!*Ft)*25#Yc9XG&g}b}Edd*St#A^j7U%Ru- zkBZ9Aw=V8#92gLIVFb~ruue5UL#hlPe z*G@1*(M=0HV9WRL+s3+PW^aXV`U<+PpDiK;%ZbA^%=)kM1XWiY4DsCZGx>`nFFux`Dvg^<^-vi{?(_FZ8Fpc zq+Ux)54gCwYa+5dbrv%?b^F_|a8H(%3*A2W3WUFoyx65+eHeTM=9YE<)O-GRTb!Em zI@sUUfgg<89UMC0UGY!Dw1!_vAV*4zU8D$RhA>d)`;EgdO$<3l$dJs;h4%vzB$aZJ zw|wEOKz;D?!GzrVs84S!jErW7cqt$W@EDUA#S=3#!QRY$)nw;B!p{>Dzge9K-Ymt| zOy|#^pNSGSzsZmwd~SbdqmC(5x~kAzz_6~28~Y@PPT(SF8fc5*H(e=hSK0TkRk`@+ zRlT*|TIi~^A=Ssx!ZjX^CLDcy_4GZn{-BR3vP`_3jJmpCqxdFSom^e@rURygL27-~*aOm~g`n%p&0V2P=r0I#PJ6!XHpF9Lb{Lv7FU=Wi zPwe>wg2XBY$H~P0*Cr+=)OwQf7j9_6^z?0q6Nt{pXFP}zLG~gRm5f7x9!pAI{CqJ6L6(>OA<*g_8A*2aX=r8JJa6GekuRQ%G<0;3}1xTQX*X(So31N5YOjpu4Ity)CzkFt5b&kIGjKX*6$}qW6u?G)yQ!YtO;I{D( zfJNJC#ruFMnV6_;Qdz6GFRiMqe0{{SFMgkB5{bunH!u>CKGS+MPJa_aysBPBTbA7; z8y$^T*_=EYE9`#0#Ce;h9ZmIJXye%4zI*P(5a-fT_jUES$ueH;TDWSEA@8r4;aN3+ zZY4eCCxLht$hJPDSRR(QvW zbwNFSGT8HFkTlW`rTc0h7J+_N4i?NO4-tR2S}a5#_Xp3VBdQ(V3o&`0oC=jgz-ez0 zT#oc+4_zLCx}QK>Y~l~xruM0e7lSTnJ5ge?RFb>P918Dk=?&Dkx3^bDWDPBkizP@D z;YJ)!xo*rW)KHQ6+i%}UUBK17=w?CQ z7aoqt%+Jg$Q;Zoy+0PsKCU_j2({|g=8pfeE7wXklXRcn=OBzOWYGywmH5gR7xdF?j z?OJjO83NT{KgQ^-rRH7PxEF^!kBNoESI)?YT;-}nSJ#)S>*}6HzNDvLM4qWDU*B{Q zdwSpxnh7w>FP>;&Zbdp0>)IACMC1-H`E=pR(HccY5m;i6p%uTie33$Y-SU|a{UwvU z{R4wKzw7an+p4xnLw+ae-(Zb|gCUQgY_Cx;`d$|+tBJU*Y;9=)8`tVUiq%ZBcJZlm zSqHV3|KXPsIUao5*F4Y+2vAeb%g-zHP7W^z(*yI3pS?(RIVb2WEiL^ejkRJetT)k7 zz-8@lyz|D9vV5J~Mq5Iub>Q$)@2^KbQXH_DS?-n2E1HDQ&W9Pf;+2Y!V|oEP`F5DHDClt z%RVVO+^R^O8oRl1wWM!0QrojSoUISSGk~;GJ58S}*+>RRZ^>N+?_QLbM}lx{x{0I{ zV-Zvty{y9(mV_&?gs0EWQn|Vg>_WjKUA1rEP)GXUL0@F}5Mgps&5%ix*oyG(MS{0bZDlG9Ur+VoqljhBDl}ge>)ytb&U4L7={5Ri1lX z#6K_3#%*gn1*u{8$6JuFA0I!+buWUCMKnwIZPsAagEHrI0_#7P{pz36e_g_XnnH;Nxnj{0nE636i(p{2g!e6+fPM^v6A*t!{fJDg+eG!wR z!8UT8OVll%B{>;#ljQFc*6D7u&u=Qc5=wt(GO0E-9e`$Ra;;!gWM)Z*TpgwHjjF1v zu_BB|#$*H4{7LqAD{J~`crA_6HMV~kzl3)o2~&73uiCSGexO2lgapa8J`NiI*@#){ zsyA5KaZ9<~EG9SsfGat_`?rbHj@&K zFCk%S@vJaDqcGy{GCp`m0yUxJd}U>v1A6o5{?rkISL;cFMA=rSsS08Bri!}ycs14e z3GZ5R$W#om#eVzYhb{4C#tFWDsF=?A_iw|A zND>M>BT%79{0Sg|L9e>^(astB&gzE(B_voSbEX&9lai7ON)ilQy*#mGsggs-GVk7L zBzU~|i@dly;08iplkOJ0BE4loK&jXM@kCDbK4-tpUpk5NB(c7H_9Y=+T2}T6x}scQ zIx4-?L+B_iZ8W3}et^8uF`ZDj>MxZ0#%g|x`%HfPcrHQx$rBdnf&nn`I0QD5QjA3* z?Mis0oCHZ=-$oeSFQX47PDQVvsWv(PNgnrC_pXzAc}<)eD_<0YRA_4Ik6dsBgJ^k9 zoT&?aV)YDxoQbjN>DR{b9+#A}HR>1ma=w+7C3c0n7eUu%@ZMF8jd?Bm5aWCCxv#nT z#g4H=vWT-rY}|WiHu4=87s(dWFF905YDSK-iO|!hPZ6&{wc2wlh&bCUEgfCP9ZzNJ zi5gaT9PuFpautdB2=9mfc?78al(g%I>qui#iOb2685bB03W-jit+T^6}?z4aXAjr*(^s~N(I5TsQ z6a!q&B~bmZ%k}vnpG5S_{;9G369ft1LHa|5as7qn*P$1{>5HADp+fhLF!@qFdij#8 zH*@EFs7!)2CWH#f&0VIs^Fw6M&He1+H@NzqBDF))5Fme(Bj=cj`EfjfbGP(c)2D#o zKtI4;rLL}NcVwT-cXV}qYuPU=8#dfPNBa6sDAf)Q687rTDh}=uS(F$<{9DLB(cj;Z zfpnY;iHRQ~wZC+_J$>rCWM1OPVgDTAV!eF?ZqNAK+~|zQsFt~B#bdZ$Zcgu2Z^jKWqbEo%tWsB zgmnnzM!RL&)f=Hjktxjw)aSyXF$hGnkJNX+g)a4B#$Op;i&}3zI~Qg(81+sb;qN`* zO%fv(-@K3TIFp=g7?)Q8t=SRL&BcI6@gPxH+1bs0nq=)9U2kn_66>y&;<|nN0l~w4 z3@%S4;t5uJY$e>(Jj9%>^3V9=1`Xgjydcc{v=Oe|X&noMYQ=WJ)aPO)fGb~Fu zKbhj)dv{5Y;So&%!-^*5>?>?+WDi~+06eZ+8h`XmS=kTJb-EzPArTwsjz|GRbL12w zCna+9=$8IegRaeH^kyAfdwa1+PR_O8>kg&_7pbaGr%y9+xpZ40mGR|dSHgy!P6W~O zNLq|30bgA2gOt2ZOQVLLE5ZJ!F}okH2_Ggu@}OJykstB#mX|*HFE%{ zgj?#eL3bw>?lC7?|MtQ%SNvhQkevZv#2nSP(*x`!+8x z0D!Vu*kXm01L6*;NFhs|J(M|86L4nl1D-<0@>v*l#wtD9JE_TZA+EBtkS{mkf1N?W zw7e0VGzoH_k56aohn2}W3Fi<70sqoce(7jI66i*F5fRTZSBHWPCAZxpZ@dpBJ$OoP zYuoI(Yfo{ppAjAos>YdkW;V?Q-hcXZ2y8>9>OQ;R@JP}SIPUM#@m@KRoV6f9)!}@H zZYJ>l)0@}}Z5EYX`fU%G`Vzkz1(0364wU8i^Z=oHnyn9VSx$O-YO6%WeEa#6q6w|K zU6h&f<;y98>-agSy%7f5ST#6!0z`?_9CR>D@|yJPnP2)XhR+bhCvJ-PhKIAj+$F!0 z^UB`}3(x=loko;MgM;rPV>|0KZWU%FlB*p1ZhU6unYUkcTV-x7O2G=5%z66=Xm?&9c@Pi7qoY)BV`2gu`_hDnFWzwak*>aea5>5o*xVJR zY&AdgA%}D!EcEKTjh$BQL}zpzD8o^H{rUjmFFN!EeB9oVK*)y<0wG~(au6@Csp%a< zOS`nX4uxmepugM+Q#Q7sS81hv(Xt7`fzFn#KH1rnN*;uBpzRSwvr)}8`3!ecQ&a1y z+2himw@x8re|qLYY|9wYcUu}aCO+cQZm;$;H8tP8HxIXVoTRENo6rXg#!w$@Bn{TY zsC?@tq;q-!q`1_NrhoFJwxOlTFD4^@jbU_e=-vXxv-n%&>;H9c5hcV;RLgUc{+0_~ z-@s_}4P-|UX(>?e%U+0BXnbW7YnQ;?7d`P)Q!fP9*9cq&vowO+-K&sXZoP&Rfd$=W zfL2pi+E0;ve353;2VwXU*mRkgqQufts8&2W+re}Ulp%=1)hahB>(n(zK2!Ln#=;9> zr=l6oDqz})d3n_EgU3#+`9(yWf8N!(TpNkeTQps@-gS7Ckvs1(>=i1qeMwc74@w~) z>v)O4wR)zl9f}ihnDn`TO@wJ>J;jg@S0;%4>$FZ!p98-k3IcId^yhIuMUjb&X|@+& zNnsIaq(rns%F5gzld->F1+tQ>Qx`AF9Xlry^`CI*Z z*~AjnV{B|vhslmq*3=w^3*t1{a%9WkH+PS0)c@MTTd%!s$M)ycB_+GMx_mMM$t9Z_ z`Gv%LR2?iZ6p*4>#%Fm2xOn1<6S3%IU;q+?&z6)p-(Y8-|733h#X7C6=dWF>15H}g z-M#$zBp8TW?Cd(G`reJ{H>akj0S?*gJUgwdY@Li=SRiIOrxiHZLsBecMIf-&^cH-3 ztDzv45QK@MMZuvUTP+U~qVPd4u-T9m(x(~}L@_=!`|i)@SJ3WAVu+tW4=)0lC2txV z)0Gsjuz>2AYq;80?2aPwJ{tPaFnr?tL?lQ2Yp}*f!n}0YRx!xEd2VNG{{S4kjm_#= z2CNnl9Q-Ky=*xvymNEbkxZ_%kiXuUv@^RXNii!%~z6V9;+@6~o8%Ghh)say8&yoMR zatyZ$p}v7=o@$b&$ZX8$=u8)eD`+7B6Oycy`%!qE4ELiHv*gff5q3Owf4)qu9@gri zk`g7bK4@o63(|B$tCG7cq+TQ@>OpEYnxJ+{oJXT7$23DxyS|uYs!Bz zfy59!X+yzj76e1D9iGvsKw9L>&ou&W#3U+W+MV|R zf2)$K@)kukx7mp|dGFMRzfELIj9mVlENs%ukblpl>$^;sa2s?l>a+_Th>3cfU&8E8 z{qg(lx~IVx!(~L}MK|1!9(_w<6t#_}F*4Bc(v>eGcnH^zTi@?s;V<>F)?*@b*+=vW4SoaT$62vHbS2u@k(E1yaNjT zBD!Qnn9Q@XoELJ%LhbqLyJ>R-cp#^_bvOlU&=kR5UmB~wSn%_nR#t+$Ic_W#qH^~v zEt<wJDVuv6NmvhSqtdn_76$LXUhYaDqzE*<#aktXIRnht8(@Cog^VpOAR4 zB*Sj2L#w?-BW{^ed^6wW(6@Opdm9w#Swg+ZWjD(rdh0UQ^BH-Jq%A78aU~N086ozp z|9Tful6I1%bKJUBHPSKn*rD5wV3PAHwyiC{P57hhVhPqTJ%|))2P7W3Kk^N|(FRGQ zA@+Pi+!lLVu{Moq13x_68Qhk5;dx>m59Sq=l_QO3+S&69JbF%grV>| z9c&KT|2}L^$;Xh2L*L~R;^Ag7_6|eW1qa`wK1gVAo96+Z+ivzprb_OfN@OP!6VPDp zf9C>-1vS=Q(EjX0p5Uo?7?Bfpmi#Ww#{&9c&P&9q(u<^IYeMQH^X9O-G88jt<+}d6 zrDY}Cuk)3h`Ao+NIFrGjbJ1Mm?WJTkc7QU@LPhw0e<&QRgP}vG#F>!6g6}dh5$OG) zZ85hvn1f*a%-r0;3=Bt6ec0*x%b#(A12B%zp#h$(cKM%hxg?GAxch*zf#lu71yQG&V6Y zvAgGF+tO*KyrpeySNk)}G(SvvqrK~5_v&bGQd$}-^qG-{nzGPWkYg`}8@pm+YTlA( zD3uTE?%q0=YApKXNm!C&&L}On-ODfoR|N&=AF=7W9~Kq{XGbOsn4mE9{QI*}7UH@v zoXbSVYayu9LQ2+~q>R^^gE-Y<$-cn+z;J&QWT9Ei)4&@arOcF&l9IZYshtqcrhI8h z*mZsc<(N)JDJ|3TrBxpev5fj)XKBW|mpUIzXf~c|kWWj`ZtY~@wA+nG+1@vGm2=;X zNJ-4oL*omeXO??Y)9OS7`#`Dvyzr#=(UX!ACUYKWl-P4^w8uWTUQGi94cBET*ip@! z@?l#1uA-puQP;j&p*KYi;6$F?T-bhgNr-)Sv55jSFo=itzn2{MmTB8PMI$)13)>u1 zzZ*S+nC%C80Y`(mFqV<*{KYlM1&8h+&Cnt!4;r`K(kx99L*L!sS#N6i@a;LV)plLo zE%n08CVb7o8XhCUBo-_SO_O@FG(W-U`Mx7&y?WpG4fvwC7)uXV-%y&4>8+LNCY#-& zis-whN{#~f2`P@20w82ChvxazI{_QB?2Lp7C1xAR^YyiT~XW*ofj4JwhnXTn>*s8S%0T_Ozc zf!z??=>HanjkkxU*t&x;&vON0VQQzjd9;wL64aCx<=GlY7F6TvIVz^Yh=z@yzyK#ncr}_3$Gp8i89F_LIq3CB$j!=P_uR{sGk{ZD zaZr$B(3=@O62G}ogl779O|G>KzpJ{4!l&$(YlRV?hudhOzZK0{X7!2#{)A112vmF& z^V}4VT!nT!u^Nv1KOr5`fv@6KPr4hv6+h#1;XLD#2Yp=-Z48y?l)h#N3~oEPCXr`7 zS?9LHNhlj~zMx^HYZ0~ay|q#=EK?iJpg|mno)(d%52=DJ~g72~2EWua4 zCSC0ab-xPN(Zp={lWM+^5lmR7gFi%fU6D=0B zE1I~avE_EpOeKLi`i_as==$R3ci2W~)7%(DD`z<0dqF`}HT*Qw(wlhKQf98gY z1TEc%7{3=6-*+5d#(6tlpd_gOX&9|0_9T4p8$iDhK@)_*of^JEMyI=Zs4T2CD2yBme-`9)O#?R?E#xJ9dIuC_GB7xoNGNjqza0PaSF10cX^Bi3*>l;)#?^jmS#eM`5=y9530@1gSVDrkXe+1bQj`Ys(EMk^;YFuCZ0OOP@Vwwm`N0;Pri zTqb}>O}1@9k$J-I+%SWeh=rUNOOEW?i3;M&RuwdbxPoJNv442WZo^ZxWUA&vkF;2* z`kCIEtWPpjmf}Dy1jIT`NJNWxYR$C9#q{=SLMFm*=vWAo=R2ou<+OGdcrAvbVn+9R ze-;)RZe&KQR=BC&ym^zj^3w5cHW3`^Ve9i7xQos>`#$UnTQ-d4l81iFQGEHvDPStW zO&jcOoyoVYZ?$+7rjVi)JD-id0+roqIhgk;@h;pk_spBYrP<6x8yi9-j+V#441DHF z|2Opf^6rr@ONz<`WW$@An7+vnfyH;(XoKHj9G(!vWtPY;-5F#m<@m2lUmro~l|ur! z#+g87A)}~h4?ri}bFT_pdN@cHj=kH`BSs1MDq0obFEQ``aV3E;Y>ayQ<7qHMT&U-s zoNdPwg|27X7#1%$z7bTzJL6Esu+a4yDn;%WjqZGf8b?;VCn0M)#dF866~_s^(Lb)X zdAf&9B@njBRSWG*uw`)e_iD90_?g5)nkBBwH1M>onMqAKR?G{fWzom(?3~=*!ya&O zR&42E`#-U!OqJtzMI%ED{Pa4feml=ZZ*TAPRpiMjSCy8IJ7ZC!9|0!}JJ&m|poB_C zp`FEyoXB>XbhM3RHtN8aL-W|~278;I@ZJZC)YJwrH>=^CnBHv<2p-yWbO+i_23xig zZDc*8>m8UF@jI3;pU1d$LBr;^A)iNc6wz~F2&42u9wGG%u6H6eY*eo$2(mzrNlA#- zL@vX@hD~Bo{rOTC5`C=N=SK(`8wE=ho0!k9NljPQx@=2v0S?2~_1FmY(Qv?k!|t1* zD=}mqBYaBGSIDtqb%bv}sBhYvap$Elp`^`Wd!aPnsO66v!PU`Vs^J6QdUsdY)ED}( z@3Q60gk?tUwoIWnp~QQ$D(B7*P?m4fKBp-MPf*16k7widP0Y<(-WVtRPD_c4x1OxW z`eQ^!`5ZtgPfki=7I0h?2Y2zum#VGt9H)7pTUD{OL>LeV`hp#hgI0Zc_a0Ob_61OO zl|&qPur=u!20#~Ejz`_q-tt4sNl7)4BxF^qV;pP&4<`^k3L|=Hn`7KJBirLqcF9a> z8Q#5U#@3TiG-46#KJIg2S{<|ZG=7ljmg{u5GInr2yN!r!U?#^5Ibo@UV~9@9vn#k{ zDy+$7aL#y&u#Zl#Q}3h0ILX92O>Ay&;4ljsOhgYi*JAnG=Ynhtdr_G{!tQRH!vOzI ztZi#kxUyCpw7Z;2I9O)nuP%___So~^Zub-UJZ~8lao4oZV6n@Vzn=JE=PXNEC2a8J zj*hAduzihU!YlP93oDVO75~P6m!y|-IlLk<@2@=KdDT4&aVu>s&6bV5`@YeO94 z=nZ3&X5NZ}9_HW9*z$^|{Tz&F3YbEg}-VYx3B>7@io9t?Xeq|tn~PcPE(PEWC> zTynsyC>mbSFZVb;U7s;`(pHNbPv$lGPBr9X#A`+cx%w zHjkYI0Pc+?*w`V%g;?7*DQjzMqn6kXmc7WImMI6pmTv1`NRJ|c52FNUDBoN2C>q=+u58<0kM@jXsGwVa0Uk$0 zYhke!0tPnUE%r5z|54GGTQokoI9$Rc*Jk4BDReTHKD{<@VT}C_!6k{CqcK72J{(*vD(KZmhAY(5)B>_Kcuj zPO~sZ=;AsKFCee2jd9NTfI_R2@w|Gm>ztvKy-gxjMUIa6c z^;YPq52$5i+DU8-2#4Zs916C`Y`FhD*mQ0%4T30v%FfezsD(VX(zin!cebZkB?i5@ zLvfS|<|Czd(R(@CQ|TF)_fXZw5B*O~h~N{15Mf)aa2%Y6&8b`g7&5=|rR@i(5U}Ja z$~jtob~xrZlB9Cz96wb&86p>^VLh$L=bB@oL*Llg81|Da;o`+VAIr`T4r|Y@Oat&m zw}IG%F{T@1RrpTqWc?T3Tr?L;1g(TeqsS#^(cJaV*22?J{>9W0S2?(=^BYcG8ym*# ztaCdG&c&v?qA>J63XHgM{}0_X@QyPrF+2th@1cxys&A8U6LfoLi(hYI@8~{+Q}_|g ztU>o|#~gSDFhwIQvyONEsF$oD3H6QP(f6&NV;$#p_&vmkNWrmuw|pd?N4M(jhV8}~ zaku4KcCs=t$14?ZvPmuWW0~2M7YPD|Hk+R><%+di!%dGH@*#}3SmGVD@FQp@2pG)) zfiAQd`3y)5Qi*T*hd)n3|F~hTuo!Ei4OA_^$C3k^Qz?+PQ)`B7}85ld76nx0O%C zKf_$+E)lm>!x%BHj^{bt4!rsno+)%OcnxY}bCcZFyX$0P2Ioa2Hz*WB=v}KGv|(09 z@80zeV~)8;zg5m?4)tKIJgZn^z$rv}VAS$CdMddMzsxlIsXq=-&!>n&0tNlcVDsVr zg8}-MHe)$+J}YrEOR>B{DrjHqObg6{=&Fc#?~H@x=1_-;#b{XykIBl^U+9y^c!Obx z&?=I?ewUY*k;|%Y*_q=1Ywuj6n!2($&J4D8YL!}FrHHgs)B+-o5l{n(EjpB?B7-Q8L_oqz0zOD2kOYEB2qDSrgW5G; z=F@zc4|OfFSdrX&bM86&?EU-iyEkhD7hJ`uKbi5SiurBEcwJ_?xnXT|^dUkvbZJ9Q zCPX>wkHrfIV>*m(P#hk7K7T0n*H>0Eu?0F-fBtSL?~CV{5zKQOgYs-GtBYa~BnR}G&y+`DI&X!Q-LBX4>nLBWRQ?oXtB2w^(m5b>pBk&=M z$|ZYMQ2_u+Y?F0zFz(IsED6FQ+yM3wgys5!uTwde)M_`))YaS#DMx+qhBK{s&KOvRZC;C3MYc%Vz!w+q ztPSw+pe8AvoriUQjhz&~M}A{om|P)@Rm%*?KIE0wBYol`V4N+*j8KuKSpiH_v~_Mf z-N)g}_s#=zHTId=SPyRMP**oZaZpfG>3Sis2K$7Qq=o4$Dm{!>f(ymODyDq0B)nZ8 zT3FIo)^I$;#Aq!y2)bfRVTrl--aG7PoW{^no{TE{DjmGYPwu?b4sD5|3h&syAK&`L zHlu$&rh`KIwqA&Y2^_!CCW!*231r^aZhHfuL+7X#_!RWm1s6_U-ZoxdTq9jj0+DOW zpG+ekJx(CP0#2D8*`%x2Dq9H@nGkT~ZwP-83#pnDHWbd1nyAfBFrQd%-q6_SsU3Y{ z#O18?f=&lXPm=Et&EiKCS{&tH<5&0j`9d6?l$Xa&j5T+QXtuL+bZlGXYpnA=>*)c$ zL5^b-&2#QFMJDSTZ0K0&ohdU|bhq#8CkIuH>yS_M&!1j)!dSsW+Boow`m1Y|aFX(* zw!G~H8)u0rCNdgIKQiW9xhz*tZ)Qg-lA^W5#LF>_+ItCsdZ`ObF{B==zBu8q|Jc9@ zW(766QK9@v&v){L*cK>sM@fM4B+lD29?Jeyl7fcKOV#GQAe|iOf&?F95Ot9?31l z{`BG+&-jmd7{FYD@FpAlDk3v6DHEUCij%rJ$F#5lF?3t=4|k7Y#D$rkh64IWp&UmV zoHR1*&J|seeRQA@+>(LVyTRbglLVWb%J@SMKIwT$8u=&&n9ayQ(i{h9thUulW+3-1%UZ1A$K1A7Ck*bt`}M)&&$s#2 z%-;_+N{8Qc`uM6k@?@t(BF5%^Yeh{@5!!q^0W3_=xOrfMn+;yq-PdxEj%W>L$#|)6PA;l?v_CW+YUoTnfe(G ziB@k-tu9Cr1%}j-t*0S^>XjDc+XmLXD3(S;8KAMPDS~Qg61fc?&ycE@1z(yJ(5Q^$ zo`tr&L$b!g{y!;imBt=hwf)kuDU0`HpC$)A#a)WHGek)NoAM&}UVF;Q%zTn3*<$Y&>ku;W=FOwCUcoCpfsELa-Sd5MoG2 z2dvYl_C+Y5?ZxDS7mc@WSzgfAnnb{wFOygR>!eI_D53$X91hR1t<5RX0JE$aE1nQg z-h|r-ADs{3IF`aYmc)Ww+g$gk$SfueP*KXO^BKF~zT%HJVQbtx!1-LupJ|3M>GiCw z38A}94aKQmoDP}|2d3Xxb=D*+1$TkjN+0Hn=_a)X-|Qby`&BLaXZU*^WpC}{o75#ll;eEwbv(&{iS;3ItNa`BC)`9D^rDJ%;jJI>cqRV zaZ-XCnAE%Q?hUJQ!C36Zx~)+3DNcb|^rfR6k3LrMK|&Mul8a%7yfR^tncElYvsQQ< z6vVd!5p2ZG1$+XY-d(u^hCm{qaxuZ=b+D7P#jTi1gr)_g(c3nHpBILBWHe=2W?Q7b zZb%soGOhFP>T>5w+B?8^=jjKO^3TpF2KhAL=RpX;Ks=&clv=B-D=G&10j-Pdh|H8d zj7ooCgIb=}FnfsAg~xU=9CK)s`EwB)Lwk#>qEZB#xzt@rrE%)FytfJlJ9p6sJP|;< zo>^`$4W)Kn^pw}3h#n$_14v0j;rw#oVw)6IFA>F@c_GyfOYx>aoMD8oNK$0cD87(1 ztKxPS=K30YZ4rNnCJL< zJ?)XKtE98)aCmxGS21u}k^&rIth9~k?%)l;53mfbXr{t9qVbnughA}>9WW59+Cit! zNgz|b6-4cnj`jxVS>mT^39O0S@$igwKAKr#vQn^Z*$(+<_po1x$_NZ6 z+6a4g4mUD_^X9GPeFH7Sy}%^RUSLgM;UJ66hld*CT+}-z8p9`NCJzFwmEl4 z$ewzaNB4G6M%Xm`7;z-NDyn9+L|Byn>N-HE2xw*l8*n&d0(}I64B(dlGrXDP*!rDi zWe^?=8U*s{;XEzO84fTaCWwIVNs)0D1IAsSH)+QrEGvm605py71vBODJBE&9!N=&_g!qin&l1t z7I-7MWmI)b3OKzXl2)cO21!28j&%m9G64a(@`qy(On&2_WN@E1_<=+W5rMR{CbcI* zj6$c|5T%Pv#vl^V1PO0aAVgQZb7$^X9_iQMF#wY;n~aH>K3n$c_m*HEUosnNi8jvY zayL#CJ6hvst^{Sh-sgD$T0!U@EWSl_aBzaL~Etmcl zjsbJ$)#s7w>#p0X(CdWA`=Cl<2J758)QLe-!~9N!lMsaWDu*Z%p#67>x>3)8q%bnv z6!W)e*U-c-@3M-1B7?Ix&YfnxE2{AKUuRQ`zgo?x%t7 ziyxEr^gn0GnR~%$1S0R}=U3sY<-=#4_Krs*Y5eq3$5ufhmXI^eq^M5a8|%9W_J;^e z7@H-`$GRpDs2c=>XPHM}#5r-MNSD~?N7Yg$+%K8n%L7zH`iz!lT8{>eQM^ccf)&D9 zWl{-Em#pHBlcZd4x_`+YiI}Vqs0`7hnIYIUAhGzUZb<;tf3sU7|qMmtSy`s2BRX;B3bMF&ghyg-`+mHbG6oOTjN& zb`3-~#&0qiLjCjAYWD?LP>&qUqmIzoY!D$zo1B*|S%L&MU{x8*S==#|!%>(c7@Cpy zOw&liUaQulbqKI!ESb8}3-nsH4ekykCw1l zz#+_c5eQK3JH|8E7rqv(9lubqD+t`ZZ22Rw6Nut`d-4cUra{rs9P$DC0HOda=W4R} z`U+tQC>Mh&6^p=0E%ITS@nDM^FyebaXGy@~5@qKNLVF9`R2YK~Rpg3nbqt#R;lhw* zv*Vu@?mhQDqZcD=71nCS*(f)oJu%aE2K9y#QY5q+<-ghUr*u@^uoLaBa1(>@Qv_JW z3XlcN(<@+>`@w}nW}rtYs^yZwvp&*McX70NiKo+-_h7SQ1y{eg8KV3#dVs4=Qzp|O zQ4>Jbv2`#HG7|Zq7X=?58TO*0m1U3GH zggIIt@N^jRH1Yv3aMfBd*&@oJeF5Y-G<#T>T%dE6dv`E71Z{YYPHTLi0OG?e{NIqm zJXG&7t2>U5609}UZzv~^L}3n&p97Q9h*$?$t@5z?iYD%w_tW{Z)t}SK&M~4!#USDu z_&h$?(5UhR|VfUsJYA-b!NQvQ=nBj@xTroOW7~T|IkrGah#~ z6_wZgJ|p#sHL^Bo0o8z#Z&X&Q&q*ucK~~s;ojhh6Tbr5jzW4}bukxA!>_$AMugq|Z zgICBBKW=IN_EbY%TTq7VWwSMeIyZ>gMkaJ9c5A-qKzR7hq;3?==EHux1p=H%K|yXr zOAf@2@-!(l9$y2Rt=mw_+Y4M=*AX6qesxFcS>x$tL`d>Md3q8S;;pL^zaoa6BQZ!iiJoPAPA2A zy@Z6as?~cV2%?Yii58OYP{t3Yl+Oyq4$KIW5XF5`#ZpDN{0E2Ob2a)Hi-N?X8KOU- zw&Ub&lEVnQJs=04mvGd$9nC3?0o#ml;rC3{>v?b92aNn zZ}UmY!A3d=iHFn^FsoG`?fY&X*5?9et#9t%T&81Bun8>J*>)zv)zCI$U9`LT9Qw4* zi{&u-;+MI|)C#pHY$M(A94fZB*>*W`*$9LvoF-T%@tgOt3R!c%ckDyUrI(LE*ZtBH zOy=qXm@d@=C8C6}4rY3Ef*pDy-17ypqZ>I_rhw$_YN+X1$ju!)U}SkBnu zCByhKkE;R<^ZPeOBh5uG{X3MexBdmB1>tRHUmHmL_AJXog1Um~iwd|_{orJM zy3Rrn6(lDqrskfyGiUBhYM%c53WW;I>@gHp#~>9Yo&#`JqoYsU9#x}7Ttt*{e2qWWM6&ziXiI`_f(c9hKkc( z#2%Bxc~dl|9xKm@0|Si`FQx-|KB;Gcl`du|DVu9g?ij^AhBhoq&|TK^qns@!G-1Y)9|gG`qWWi{LO*@_AX?szA^jiYfO6Z}G)SLE5^i)WeErJaVe2Fsn_gSo-_|Ti zqk~rTmy8G#!T+D5e;SYKAVfT8qM`jLtEAv>5g$K5_wOOmOdKTAs63U-mhJ5N#9o;0 zKWzF@$4aZ3QENy3X?FY%lEHwi|6J`GgQnG!f)Xy}9iRWbTrF&H!)RjClOgC~6xJ0i zmkXu_G>=LMnH;cFvHoKSG?;Ov*bU!0iCicDBaxI)gFDAQHi2HBAG16=d-izP^2h9Y z>l8aA`_I6c+O2=UL*Vh58lV2hgTK(+^A&OvS$Jdoa2xJ^kNh4K2wq$%Pf@>ezPzO_Eg>%Nua zylJKP=!i@WWdAt`xBq$3{ioobCD9)~n09vlDmgL69ey~ThKBnwM}-4BF&zg-mTqiI z$8pE*ySg*d|9Ao5Oa1Y`9{DGHY^*BvV<`kEA`bcMfb^s_H&nEE2+^R6`}g$7O3HN8 zaI;c?i{VO3ik7LeZ5h;!4B~9YGDEE!p^hIDO$(S|z7qd2M)1Y$Ir2jSPS6$?=akI0 znA~-Z*nU|)Rm{{RD~V4?XU)w7etw(LK8|}s^;n9Qn%ZNSvHtMJUO?ySHu&Ff_~G}S zUVFSg1lE**oavVyu41|lAxW#m0kf`JeFP{pEKgCc|4gNLOzo-7;_uLfG zL(bQc<`}Mk^g28_XC;1CPg!da(P2TkQM(@(FP8?(C;t!UsL*Iu(N#{>w#$o4hPU}J zH~jAtD!%?7PI&Yv27*!ss{g;9@M!Siv2^g|9hi@A?5|hcUjNtW3lDlm_g`n>U*8GE zDjRWVb%Yo(j;ILeN=}w>hspi_d!75|xD7oCE-3Q{6%H-`96B4;qd5jGxaj}q^ac8Xx^&b;(P^@{#7VkPf&k zdm~s3Nu=3pq6k?9IWS+HjcZ0#)0tzDw0sP3G%BNwYfJXLS;Je8$XUe2y?0VYL}n^} zl8lX3XYNUpy6zXZCnylW<#8ncwy;ge@>52tl8!3=?JRiHN&)#R+O<}!EKt*khjv8m zWlXs0GFW*`*_m7Yz2Yo>v+^fi8fvA**_C?z)8b>Ih41*)X^Cd(!=R%R6PNhd=E5|t zU28{Xrhgu_zuzzZqTC{;(Jo#S-?7v>Z1Mzx1Zp&Ccx37)!(}CZ=E`-+MSm*tzVj)~ zA}%x)`nDY3g#5dEaS_$o6JdG9BswFp?oYUcq*!q>l*#)H>*L42xOv|OHl1_^h&;Un zGRGoVhGYK~>BBlFiT8VD%KG}vnI7IQH}Yg6zSc1bp&B}GeMnDMke|}g&BpLNBTcEd zugXPxCdCK0upf`JWT}8hLrZ&bk#h|Pk-zn+otg~z5!thr2^z%lEUO| z+l*B-TB|dHn5A6%9N}?z?24a^A$IImW;vC>Dy#Q(_^`?!^**K zv&xmDF=@S8cf2bH1W1$~pGt%c4@aaNMe5^}5sQ*jI3}HvLC4SmQL5sE)%*9oyzYhq z)i&BF0ix{Nf?xVnyj_ks>+4YrYi8ge2M3PHN-J9IorS;+_8_53a`~djUemT=lXauY zDUN)yu3v?3B&DyA+36ymH{ShPCn6#{Y|I@Y6@-hE*CZL5TqUWdmq`9}jcskvOrVun z)wokrS>@<6Y)L0L5g~EDt5pftTIK6=ebgyMe-%9ZY+L4Uy*U1=dC3V)N$6NJ`QAx2 zcS*7Rv;Y&ss9p5mYNDCGC40~DyjuDc&<19+lTE691PepBt@ZC4ze;jNH}h9SjD1Hj z(YWiE=U;WAvX(f$U6xkzKs=C6kwot;esXTurD+NuNapUgDkbc4%SL^!gKw# zXL>@lE z5GE+@V^)zr#{Zl89;IlY*%_m<$I}x9WUXkB2r=Jpy$zJ2s1yHn`|vQ@wBf zx5K8vJ!?9AOtZ&q7Ko8@Ai~c%g^7R>PFlST2?Lj-S6RHVl_zXOx86$R^JYf ziBCdKn}?+C*%dSDu$$)n7j9?rE{1U^r98A38AbN*51-=ubl{>Qf><)!nNf}G?BqSc ziC7F@c``In)}BbmN+XpTilzPxZvAlXdrJC&fs}_Zg~tJ_>@x;ss}o+IJ^n4bpE(6m z!E7z{q1}`-l=c*#nyI}n4r}cB)1tqHA9k9!<>a%IO2-kqoZ4KRy~g_W%h`RU#N^^Q zLxj{Zf5rau_c3WI=x#X?metTe`R;pw9rMX)gLv|GAI8D*G0sI(i;EM|pOJ@LT~TP; zlRTiISL=)iMaR*i)mj(1fa+4TOCnpOE0YKRvWi7kULKnS^1cc~m{isdEG|9~@FcRc zMM2l(o#>uX;N2y6)Q+6lQk*ppv#@#d{*-8VQ}90FDV;=YDw*R|LP2JRWaDYzK9)i2^+UHhc$g-O{0+)u96P}RENwH|S5DhvzbIrs(ri6EYNzYW&niG-{ zEc>+mAo}s?=}ToS93y9EL=Y{}vRu(=X(4l7XIYjKFTW8dUF`IP3|S_!N{UKK;>(V= zZITv)K%~xX6lzj?6QRIRN(sMrkBkA=toJ4`@l$x70X-av<#vMg)ZLxm4U6LsA9=Ix zt`h6+X15F2byd<*Ge~Z$>rXrtR<1B50L)-gn&&}mm%blc%4fA8{QXX9z|b+^+JvS)fa*C$*WZDB;{VOWM`aDKXBL$}eQbzDS?54Y8EOg0wVMi0nxqE6=YPpm<3l zqJ9)FE~3}k?9y_W#g@$aXt^KFX3IpAefd7-JPWjYZyYwVW>fz95DjmsXh%P>_l(!T zDd6or_5^+7I!UsF;m99soYdsl582{p*CkTiDdZ))O++M)r&D2FVLkov%NnW&@N~g) zc*)5PSrZM6NNa1d02O#rz~dwiTS#lVi9ngfPoGG1SRzB31t1BHTK>`)V{dkfkB$9A zm*GnR9{`=6PB@&M@RZNwsn*2B#YLZ=iO$aiRgXUxyjwkwj)@8DP!bGxoA>lVN=yaa z{fns(ZzlGqgbQ~{oxgvPAEXe&pJ3dxRG6m=MnW-?cQ-}tV6zmNhj%vvq?-S9N{@%%Y$k0@ z_723*F!r@D8S;-ll{E5ASh#jx-`G?KC~w)g+-p79f8^Wu=O#`re5`tnaNiyA%_@UE0@yT zHrl<1*YfbKh2>UouXWoLhKu{&W)Ro7Ij&Gs>Fs?C${BL;*Pr0L(eaur-SMcAbxR3k z$Xp;{oF-)eJEY^3$X#z|+M_SypN8F{Ep8kQ> zp>ogWA~E@$vyFmOvDDb$0o^nALIl=stUen7R|(LRI7@z1rE5XwE0NCmb!d{Y9G`JR z{Nu+D6=f|%4?9>a8||YsM#iuJ8v2zZV9?uSY@Ygz6Y zaINt_J^CqN_fH7xf-A9j5Vf?__AW6Ye8PmXO%%7##yRU9QQZ(SA)z3Ur|ElO;tnd< zptnClBPkg3^gfy*h7JTdrpBqety)CTAz3-O_Ve^+ww+B#v#VsG#RC(vKbYU8XBd=n zgF%CSnmB)lh+aR(c%vGp+?0jywp%LwI>N5jveZ-v0rFp_8oQm{UpIvbjeZ;6aQL2! z2GX!a6&|=VZaAKbMsi3~12+u|%Y`z%zm@FR^p(b}#YXE_9h`=N&#BgEj!xevwbTO} zXCpE*s&s5>?GKUhZ##&Rr){;hH+y;$44quGdtkv;w$l!y0HoxZLqQTbJ<+*YW{`H~OWOd=WHR*7Itg0Wh$zI<~X>S>2!? z9vSv4ck4&ycBPj&LH)a1<)TxNCxfs_xsJ7t=I?OGra!g^F2YS$u5S-bjfH$$b#FY_ zxfR~mX4U{t`kEYtpLYj@V;IP)ADS9?Xc#!=?R>dlv~_%M^crXVZKt4BABlV&gB{|* z^NWc@4)#p(_j0UzDd?u-a~2W+-H;7#au_xXIgx9YzJ!B5p;tQGx1~Y;M)4#WlnoH% zem5l{tEhOOOOZDc2HK}lJ-c7guOfTp@HoFQ^bEvg|9px=8iaX_`TJJO)-q=4C|-K9 zkpf(=6nnx-7Y>S#mzu0GSDozNv*#V2W$ZYeCd4cnCCd0JDeleuG!}nnvYG;Pn2#PU ziM((&XhElIuET`fH@iZX?D-u|r&)SDQHCc(B0gO3nwoxFUWA)CuOupcYbPyXLf5%0 zDR}-{3_uPQw;Y1Bx3}y`zk3D~7KfSy1h2C@mO87p2l88{u;X7vUR-FcuA3XmyC5<4 zA>b_RHu*kbTlkReN5nse_;}eQCMhO(u7TUoN9s`{&hE$b@Ky9@wlAEs^V}f*Cb-Kw zVz4?o_ui5|qI`mP;&gnwH_J@ORH|pyKJW`WB65@J(`RurX_B+ush{8C$FES-@=NSG zS~Jl>et$~WMaxBtwatiL?z4Rrosrgm&iUk+565F<>$&~kX_lW==i)i!GC%3j!3$em zldbUC_G~fPFF9`xoH7lt9DT|ES>NtphYdP7!l5|)=?6x&=xKuiI_ra=Clu%x=j$^R ze4aakYK&OpWo+$tO({du^WkfR#Gp6kFk%;HloONEhQpq1B8Z83WMl`kpS9c)w`w4} zMPST-=?OYG5ak_bHrpy>nVjzf=)21oDIFCh;*y4w;kis9`v)PaQAKkh7?fq% z*AX4(8D6c&SHHKtK!zzDe~}|U9+f^XhWZiSRQ64U&y1(_l-eE_tWJ-z!$u}m&8? zyz6sYX;+P_)U_wC%5DBOF-I!Q)q3s{2FtuCpV^6irCL!?kMHGbi^<-7iRPAZYHMEW zCxUVe`d|y2Z7FeaW_|BFG3d^w`YX|+(uu0<>ShAQcx3o2DAt+7b$`}>VCGMwUNpwp;B$~&QX;&C&!KsT&N-GZDOl%xpbR5ee9}j7y87v=ft>Be& zj)~6bSPdLxY@7plq#iCGT`x9FWV}DmjPY0B85`Oof&(mGtl**})p{)uX1uGI+96W= zY-pi{l{1W)GWYqb#l+F-+N&V!oLP~~_JeW~4vx}S4J&wY%8W8u!=F3Y--}yYzle=n zR(bO!d}AY@&u#@gIk!f<`?T1+!n)zW2EGFgw_5zgDND%Ajs~L)2X}6eGQH^E`s`?* zkKymy4cj|EprN60$cEy~Q{rw_7BHaUhS~P>>dDspC3!+vPqG1e5NpLLt};eCr}(6$ zEj24UJ2b1S;o(QlZf@D-(@mSfLTFtQ>LE1tC9vVx2 zp30{gp50C+c)vr9`tdG}9kiUEd?yZ?yFT*4)r2$@YM1*PvP*QBTnt#r7;&BkMY&}Ce)TvO)vDWL69#zceZEf~p4gFMgSMUI;ZjP?GN^8;i%IIIEm z!DS=sHnD%PIiy)S*B%ZN^2e&2oy7XZ{=VJHj_fq4MK9}vUY4YS4TkUGNM2Adv~Bxy z3AEvtjb>HT>_+U_Wqw2eg1{)nAWewL!lrDEbsT`%YRQ-D68% z&CXukCB5GlrIvBo=d8=4vrBrV&K&0wY1{F~(}(qC(86f=PNZhAAWI}RcKMM=PN9C8 zH!5}r0%V3|w6^vti)7e6(8ZQ8e5}&oH+NK{9z*Fkgom7C;0_a7h=>@C4hU&X-E5)W zCPpQKFrAsd=ROz9A?=?0id}FjCx+mU9fJ3Sb?!r(VP`-?%~i>^oxVVz*x!8E_TEZ< zbt!@0UHHD3Ag$nv7ezs*4B%7>JnBof<}|r@c>`IsMIJw17Az}x>Dl7bEp)@RxW(=U zKu!9477g82mz$Ggr&`yhsr9O6UxKSE^@qkopjv%-lWq@iD*NZ`87A6Ar02S4pw4zM zPN;4??scA|Nqr~cc*0ydae21+-UV-H>-j^;S0MFz0Kr#Cs+e)ou*OJfuKD{Fo(DE) zo+pW!h?wJ$Hu5xdXV=rEOLLqo zPYDKnuN8XFzpr4|0FZ-pFl)WhiKFk%ZgKJb&P+h~=0Z1PVs_?RiNxn1lw_`LZn~?|byv zXnp@>cXx^!@w{^VWn3?OS~JQ(iBPTcDWSgap;3m@HxQT7D<>x!MFZxPNAtpa$Li&{ z%i`0trN^V}e@412thd^|D1EW^ZQbgOQ2`Jq$(=UA@S#Vr-}TDy^Jv>oof64B!j$m? z#MHrJ*4t*B?;j?y!z(BXA7R~{?+c$zeKxTq|24`#YnkvcVaCp{1zfNn!#tWEiru?r zQ0(q@`Sy>qdhu_Xd%ym25mrhXCQP{$SUP5F>G)d|DLk@qitOxqE=qqA{ckToR>|AX z`yxEI%58e3QA^dde?~faUDo&^%>zc3m-Yu)fIBJO^988%X7M9RP^la5+BAhL#_0T^ z!9<;nsvW>b2W^x}SB<%3BtecAm^`-CE9)XYB)141APitvxN1}~pVOrjO7>scIKK`b z=3oKza(70vv-|jgZ*8CrQw^JvUOT9iSB-0TENZ$FpE8<{RglHkCmGKoc_@%9eQ8FtZt9Q3Hk@fm31g>T`w{;6Y1nOolT>i6vh^K=As zOL{r;`z`<=_mY&{@ffi$gZ9L_dXu|xZqI*^6E4jb9zrS#biMDwgU=$Tpb^Ar-+ke0MJpP;o$*Be?HV-ac3;l;jP4dCCWIl zj#~ZJ+ENBD_lS;$P9`wF=YUrKvMxzhK_S`A0tSeVrje==(D~k8-6wqNTAnt;!z;y9 zsihWmyTGwOy=RBqQ@(nrI+m&{u65iZsFa%YgQj+ifjJ0b|UOP@3d|&|JaW8ID z3|dWpPyu>!Af-=5KLIC8)c`h1yeJJFdrk=5;J`VY=3ot;0KkFnEHn^bUM9(gMs@XsBAX9R zWP!rA?|ty{ZW)#?p;-NN=M-K~o&0VWCxcd;zH=pNPe#Rvn+zL;zv0S$YsZBs(ya09 z*ZM`v-PW@fLo=_CcGc5oB5Vi%?WpL)Vt|D~{uW)6pcLetgENPlop`z%M%H>e*I(V; z%ZD=OIe;L-MWxy%ZUqZhyp*UN#qWl&ONtMSC+*nxd^d?isb~9WOxJy9slj``#cKb# zUb81goHX7;2KT>%bt6a$6rH-DGl<}(`R+! zSOBIdQFd7$A2d4%=aZeHk<@iCGgLZf)6vlZVWoA``3lK!HjrE%0O<~((+!Q%bc`sG zp=xnRj&nglZ5v7R155VHO;OElnU44z!!$dyDj$#j2!=|kZ0zhkG$BLVSpTAX{}#az zu}stXG(&)*^AHVSzCbFhbamdF)CdEoXfbm)-i5&6Ae{LY((hfR$D-E$2P*7&gL>zP z%%GK*9J?}J{cDz~St@Czi!&`iP^&)ypELX+(eEI1-RW2;p@`=T4V%m-v>-IQCNDC` zexsQ@pWbQCTH!V7+k)RSJb9%a@TTAeD68oE-!x*L;N*kMB5D%HM3(*qKdK{Y2ZKMu zP2`3IG`#MsZB6v7eGdu<$bX9I^~gEB5g?C>|E;Hi2{$Xp#Yx{RrLn2#eT^ia8K-4Y zh-khuO6B!H0tr(lDosW;9MkdRW4Ha8Ko7r4BzD^ zrQ4h2C#l_^!X3-sn-BxCl;g#V;9L!2z#BST>9K&xnXDeG5`mqQ@D`3Q;p}^dWw%>f z7qH6c>m&c7dk%0fR+UQ$5Ng^UuBoXnymLPF(bp}*$6+4tZbn%DzO1ZnlKlL6x_FYb&3m)qn*keK z_d@Fyhe-ew+~RkPL8M>?I9HSYT=e2HdjF24hqqw+(oLc$rM2bmj{a`P9Of?WE^;}% zV$Vy)>(xxbVj~2|gI1g-afvL(zn;1lUY$Vgm9+6;;E9!d#P*B&GhK*W6s?D`n#!8+!Sw`(VxmE4=c9 zvsvRhz#@H-FyXa7*Z4xXPQ%9s2P)OWiv|FZhh)0qy$J(j-dWtGKBYtzEw>t>#M4iK zUB*%?C9HsauJ%8+ufbyKJAUHrF_Ww4-Nu?>|}ib7=}l=&ThKT z^6t4}D_tEs$~x<)m-su~8a2bW9@I}ajZb>s26W%S5j?=$hb(GVBH66$!ZR(n)B>8> zLY^;KKc7CyG2#E|aojFPXS0_uPBCeH=8tn;TjT;?x=YlPCj%27 z=kjMs>8mKshLZlga6ZRe)NtYfRKNpr-(f~O+dC_Bu1#*HqtPKAI1PcsYu+~3W7 z)d>N7P%GNg=f9`{#Zgco_cir}iL)BQSUw?W{w7L!R!W6Za5>bq?Ymty|DOEHwf(9< z2xmDFiI>>{jdrNqMdUWSN6|TE zzwzy#22c4mFL?Vf z8>)+jy+BYBJ|%ne<_(Y~IXF2ZMrS-nWc@4IQsf0R{GgQx-Q7tzW||#B;*c@ zSqs%Z_dDjjl(h7+-_7|wCZtS%b=Y$E7cj_fYqV?&ZnX*hPhcUpQ-D79--H%_dki1_ zvHZ0*DveEWX97jrq96p(KIB7T_1bT-_-bFCEN1xK3ainQ{H*F1f@=i~IsWUp9p?p8 zS=rFj#x=q{XRazYdS(5DD9Za@Bc(hgz@vf|P*f+GC=aGDW1{+mRsa0~S{oP<6$=Y7 zfV_zCqKsIxo1M7L>_g-4?H-EpI}&6m>eh{%6c!zlgY?OmeX()TbJyq*fc+7+^@ce@voc8 zE7vun0^;v5q^1P`=1#hdw9^9i>=6a`cKQXcE#VB(s4>!45B1}I-z}rnkUhJ!nc#e9 zfq(s$RW&)dv|!7J815|TqL%2ULBx+jMpz^qthbwyG7(X2IaW@tk<1Cw%nj0D0EoiE z9Nf1Kgy5K%NuIwYw}pqJA`J0O=6m*zf0pO{3y*e{xVT*Z5yaRng1zIr)G^CrL7#N~ zenA?V53-7%LNs`mwC|E03Ou*w;>^gzgNdTX8hZEL!#Bfa0UtIHbA^cCa(9NVGvf)2 zM2COEajw0q%c(FxAw5X(6AA>?oQ%(NoGW7Lb>X9z>0Vb<)pi&{&iOnJj_{qmXu@MF z-!_-EVcG%XyQ`a4!1yHWrTMzI?{!D|TT=U*ZF%1NIjk2oee9ftr)r;*_bXDr5Ji3K zbl=D=?1%F=rRetsUWGhZeId#2OeI>B2se3c-vet|vK`~eiDnL)SOP>w47Ebn;BElr z=&;4fMHejnunrDzV`8ov{Jz&$dF5Kg>4o~?ZGgTK^Ci^3YokqfGSM(2d5|YzExweX zawrVUxo;gJ2&=0({dfj6iNiI4ZlfB3A(2e+0!;$)5?gq?rgMTFSAo7)M+YmEoGzyL88M0Y{c$t0~g>Sa7Z^ z|4m8HQk)~;di+>#DXpg`l#j9_e3-(46!1fDy$T<+c`yCAS8pB`>x8c#{@WkEdUb2) zgKW-|MY;;5w~M7hW4!MB*syI75A-a(AKMHimC7CiZhwsoO5OMLc3#CFC22Ajp=U`F zW_w_;?e?GFtX0v1-Y@0&iuLau>2L8;1q>S)OD^D^9ssTnzyChI3h-Csu8nf$S6 z|7%qvX!GlzLMxd~uVzOtWz)0`7cDwbA(zuT(mdPz&IoSs@@L4pap?@ceHFuk=Q%GB zUjQj|7@i@#s~T1b>f}sKY4`o*9G!5ya>p28!SU$cc8tvXEhx_V*02#^E`fb!g zqbp)x7DwaZS>i?1{oQx%5S3ImQ1JnRMq1=Q^E(_d_ddH;`kl zfb1Uo(t}v|SW966?@>tv@D$t}wi75pL*#eI*odsZ7PMZOg^!i}n0x&|&Wl8>IM@58 zBt@7>%E%a9kDm(Te3kp78vT_h3h?>J@i`AN3}1~RiGoG#7*bwG*oO~VJChold~VO5 z{Q@Eb0d39$m*YQW{n60^AIJ%klBm>*uBXSfemLQhD(Mq}97L}lw6fd!c7K~IK;Vp8 zYD&M8c*pTg|CR@&kRDjSsErTl&uIrB6110+tHTv->XdMIc6AxfB%o(3R2VzZ01M9$ z3#q?8a4FfL>b&#$4)`zn_#A&otEH6Q;`G;dU_zyN`3%ld!JWD_X{klP<-%Z*8ykYx z8pq8P9}c&fam&iiehkW-)Ie2#IOoDZN{vzfI61H19zMXq-r_EQ3APUxC8DUA1W;g2 z2b}XB+o%2nH?QRT4_8%TVpO<`(zh-z=IX<;sGp@O(ixkWs32Y6a{sW`&fy%qRlKSgMfIV;;NFcC!>#Z5?H;57&EMxbfrux)oQ;&;4Ylq@5&^d^b##*TOFK2SlxN&n|fyA3VZjf`91 z&!46()Vy$-A;WuVqz`NuJ3B9Y9v)l>rk?df5&loEss z`CjF8JLFX0Ng-*Ag{;KZg`Bfs-h4AVSIcK$;u6}x4Zk}kJHYHeY0BF>uAACR0G6nI zzkT1EnG^#<;DVCLYj>g@Fs^uzC!lgGnRulOm;yciVx2j*qPl^Du`=KC=F{091!TJ1 zml;K~U1em04m>;762+(Ht?qY36Da= zBr0ZNYXvmw^3Emy1M7_!a_$xUnUsv=6m#Oq2E*Kk54<-Eez!-d6J0YMIC~G785joO zH6jr8$YaYIZ+M0Ik63__=o-r*9^`+6yPK)Z_{#`s%{*OWWA9e#(?$=?{bTHX1(GIs z|4KFJq;!7$mT&(u%seT?OZ#U%8c`4;6hto1z#vD@_&Wep#Yly>zHp);9h+#k?wa?N zQ#-ZZr-aZ%v}ZtI5J=MQt65DKfTp$Bjz$q;Q~yHno8hMBE9+Z_NJO9quHj`Loh@d~ zDMwm>dKg%2-ir4_>$3?T{`ncKH({|tW)GcrK;nE~T4|pOkg0lgu1prt!JdyUyzs4o z+Skb65ic;YqKr({8r(5(CJqHF@q~ee60=}?zpJYYk<7I=n;C4e5!Zyu7kD5ofa8E9 z)!7+(5UWWKo8eNL4KFPfhOswbU~LJWx-a%6dAZp<=$Yj+yUN&+m$USscuf46Mrb7v z=D+E=^Uv_xOA6YcRA#Xx5IrASD-bK4LfM~N!b5e^E!=;XwN9+QAyn)v#|{p>>|8hhYu~Hmo8USmf1njrTeEh5XNnAWv`H!z>O+Mb#%K2a~Ck_UM{2iSXPhK9=`>yo+}&Zs*cU4Q_k`)=n@?h(E2h zq~P5&Ax)?bsD9UbQ+wz2%Ji*(49C4cC^`pT?BQ|h^Y>oGx%*+E8j9)xMQQko7iHS> zC~}UDLq-AWI!)_B=QjyD1`F(0SHTjBammT}M}k`ld88qV>*x-4#f)f^Wna_cKLbiO zIAjcP^;fC7@qH?jc@(ea)!q`a^Rmc2$;qU`(Am8xUh0~Xl$J)sx(7xC%|$Fxef{8v zWeQv*BfsA0)&D_F8TbtMH$TsE_jT#Q+}*@*<1D7qjF;n|pNtPm27=9Qsh4*h-yZ_) zU-lCInD>`DFRfS=J|=~!fgt~{okhTT3F}HoaUDB+V9`?u+fW;l%#CzZJ}zR zv5^%Nyzgn*hts>+BP)H|w0iC<E|`JbHLI?e{$Amf3(eZD=Z=?_yP9WJ52a@j(>;yx-++Vf7$IzO;NZd za~ser;^g{%(cj`u03D2lsq(rF-h2Adt=v^zm|?&nd%|w{g6}t6V@1>*p5vY?Jdc}# zFVWb?Q`BMX`Zy(KM}&?D4~Py)rG3LzBRRas%jJIixlo34#SHmK$2B1m#e7Yk8~f^Y zK&?Okz;BFwL7E;cEWHw@rih?9ndV00|FIg*+(8e#ezC*wW?xTuWxO z7?p}jOeJ#Hv;h9aR*JkbcHOuVaEA*iVBXfkfj$=4#qTD{L|TDe;b7>t;kI<*tRMsr zVU9hO;ZG6QD2K@;0qliXFt!UG`bS*!k07Cltv`C%FW8vaMX|WlH}(1ZuI{+lIM-r9 z?HYMs>}h@QePk%Eai!*DiTpTDc-NRP1H&1PZY{xTT`(zk60>rV3!Ggr3c3|D3Lwb9 zb_1xqG@EL}je?jsK*VRW!s9mbBSnAP*VlwS1f}oT*!pp%_nb4s zyETV@l4w?S_2!vq{wtT1qW+3He)mbYX2NNT!-O~%G@UUT7KNQlzev~F^=a!0Ed=4$ z`wCA#9nG5JhhLIHU@foLZhSUWXkQ@Rj^^!}-0agqG^7@PEL;nt_A;>VLu;077rei7f z^zN%DmA@?h-^=qiH6iPj3fIVLklyY_Hg3m)`j;nQ_rS$Z8FLeET|pevkNi0D&lo}@ zBZG%6ezh)!DwSK8u4gIFPIMRlK8c?3kx+LSf)>T6c`B!>zr+7X4*>T%KWzxUCjbuN z$BS@WHHD{LVo`}75H(%$&ajb?QSx9?;fF$xhIg|Hso07SGF}zQR5ntIieRg0UVen0 zaox=^?{_=7?Q5U>eQUWl)F?_X>KMA^wY-W5_C92t7hY`LUVivc8;zs-1;t(Yz3`hi zkAw7a#z>mhNmvgpd0QKOec{EEzW6KQYOFLkBQWXqEeP+u}b- z%&x7)2O12z2M#jw)zCs->!RU(v53ap8`Y7aso`LzL^i}UY1aL=OQ$^h#rf+BtMj+D z`c7SWSq5*LkkHV=HuhB)S9!XF24%jJ{0b`*?#5H{#Sw7bImCeWrYmuvp+Alo6IP{& zX;HnV?H`@;9&F~_pUJ(v;r$B=O7}I#=ZH^^LF$$f_N4@T0((**&U>(ZDXUJxUtZ|M zPTGt$HWp#Q86MKs#Q1GCaVhu;KQi`DVdluzDGBCDFQLs;`>CUxTo1MX+&+sGL2JvU zk{|Fo@e)NoznSy9^?TxThw)wcc-rY7Dxd@jiRC;~O zT~1yB+hawV9$%DE?t%B$DO(KJ5FlUe9ej;*y^owd_E}<{C&Flq=(RLP#B;9K&$*KG zY`I|}0tbWYKIf0l`Gc?1JpGU%;J|u7jli!4Y420rt&22&47_3flCYXx%Z}0| zHD!b(MfjkA=#bibv)X;GKBW{B=q?+!9IcFD+>Y-{yyO8J`vvdAVbZ*yJOSTzNa8dBPGvaIS9 z*;P*}fcP)SP%v)yfIOa8xL}%+Xeqny8c{PxFPbcWwfj8E-#=|H;QLX|ll(C3LL zGah)SHn6h{WMv3cHF~CA44o3^g671J=^>3X2=j31e}4>}h1Q6UVaypfiCb|+t+ZU0 zl?{+IUiKRZ@8iLH91O8Go)61yIO9FIOF%LMmNMZ_pY*Q9%A@so*D5J)RhOPW>^rIx z+lqo$ z<5W~Q^bGXNWEfwq>ZmMP>Qz_0gpmmDY*~kZeF;CbA|fJQW8yUU_H=i4W|j{T_~w@! zmffuLWRzmx0Pu>Wc#&Q%-7T%GqY;pr+UQS!IQN3&W+_jFZgNXYcPnRK#JZJ&*y{ZrF? zhOcr#!*)}FG2g<$KDCcVj#t!d9i!`WN&|y30C+t}oh_eq!cF$BLr3_8tZniSs1`|# znW=>dfeXl-m!qbeaxUu2m#2Dlo*2ODa?%&CN!nYj>3=#^3Lk!ed{I^Tcgk8xVlP(M#R# zMN*davMI=IUQD=3n(_yKtXnPYI_z-6A|?;L-}*Xi1kJ)_#rN1gWmoIdXF?;1cWAaR ze&!r%B+@|}zz>UWcwqp2Wq*zH)+r}TX!WSBE~H+Mfa$FXcv>a)H1&`A9bRo1`fKZcH@jj(qEzL!6wfWLylJht>* z8J{E{HuZoGEh54akg{!EOjw~25v{>}#7>KY5br>z() zp0|v7b^52)Ze7=p7i)MFuUVD}|v`3Twz0{V z#()MeMTk--EoJj*adpkROXm}H~>T)SXLy%R(dS@cL>IPN(1&e%T>)+p02t2-v#I4pr}^eo-_ zu7mCDsdV}KgH)}e$4K(JMe43zi}+*M>$`0&BTLFb-=8lwroXnud!~G_FjF(Dl)Avj zGAZV7=Y20Q?^mYPEZK6?bx+3bBR#$wp1a`t7s+P&r{WW~x5Iw7*M69N*HORfn=_j` zLf}Oz*y<|p=aS&cjq!=0yra991egSfvImsx4mvsr<~a6BEom%v<;)g$vy3i@41KU; zgZXm}1LB;B6Z{r!7<|}9Kh?-IxBJZZnT)dgE-ob~er`TzP;n-7UN`m=tKNi{-z-C3 zrKX(RA!BMr+2|KZDH$0?Mow`Rl}FQc>$Rl>iBT3!CPwVF8BeQSWt)5&;RCl9h+Hc>i(ECW-AO6`mIfs1zr7*%dHY>}@Dx1zW#w@{vYrp%F67oM(>OG*ni5Pr`Fk`1u*sQfSX-ZQMJrfUNQQBV=E)4@WK zj-D|d~X-Mhqgu?7>U5JBLAs8x` z2ncXI6nA7fFIY83UOU#g_4$SO7D^*7kjGU z$}U$4{pU|tQpdYoHX}ZT?^`60b+}*PJwRf_eG=2C%J#o|7^npu-Z7vNxXgP!q}ol6 za#fC+X;_iIq|lV9^^Jn$prq?Cev7o-8r4^`89ICW~j?Jt+l2A@M)$ zgls1*8NK9@`(sm6OpU%CaClCO*6J$t=dfm9LJkp;4y=^tTxL!(1iBKVY?F-bbX4fw zIQYI_QdwT!=FJ-+1KO_fKmSxCu@ici%dk*7B%v_3LC)Nqxv=<=x~J!A;wS|HreVzh zayun`0kW-p)nU~rVszA^pxSeVnpqf5uCo?Q{wn=);3eDv#r7WM#n&Sv*_lgozDsTI zgHbKNsy+7_o-OzF^=UacxX<1+nqSz?@a^vJqQBl->u|=R8Jj@dd$G>p%mVu5%gf_? zdlVLhn?~xgU+z79hYR?msV;h?m^mQ=TOx>IQ&_cr3;j7$P&>BBwI#}d@^_b1mJLoK z%q97AWu&kOO2a25Z(xMQlE4lIPPEl0zv%G4)LL7ZoqGVyjY6E)q7J>wxgNhcg%Z!O zadXSmI5gVWk{~u!pw?Q@vYtkTd-cM@u_^qD(O8zrIn(887|vQysM-oM6XP{kPZBuh zA$upzZN`6@BHBsWS@H%P4$t_5UL=Z-A&!qJtreh1ZXSp+XX0UXX}vYP>kdvWvK-PCw1|hKvX6ox^q#_eYHI;2Ja3}^=Tq{>7 z;5~Y6OK~SBgw&^k{Rf7_DJDK%z^tIHYo*`RGoQ8;c6G6Q3ZYzBU`u!XyH{SaU(V?} zo#aO>BF;~BR=Vy5uTf{bVz-*XJ8GX0dA%rc<&~T31Q3+we`||p%$8)d z{Uz(Fk*&pT?Q5427v#J( zS5%H^Gmh+8RP&U!Zv~YR!@}#m+-G5KIQrFcp;4FN*PSkBfs`bTs6k;R9iqcl60oUmNMgeFGRp=z?>-hVGgn##pECG- zE4NcqRfV>YHE*p+m6&(1Gs`|tsxOP!$>{?up>vx+Me5bFb9 z(rW8=KH1GZGrh?p)U~jWyxxK5Ek|ost)bzJJ{7Q5#kM(`vNK3zd1^{_dBk$`&H1Kh z0fFW>N@)KO1{+ha9y{^M-yMkRx}95S69UY$dC`B*C6B{8k$S1aglT@xIQj9z=|)8q z);JIKo&g~749*erag3gka=tIkK=sbajjZJfk|<@t(Xt#)+W4R zWOp}Ewelo~TUxrh4Hjn0>=1~N=W%6~2#&NvmER(OP6MG+E<#5;TIPy*%Ghq~0%iQUQ=Oc=DlH7qC z3+HlXOs^kr(HTiq$}2VC(e4ku_M?NmS8lOuGa)U0fvarLNYQ?NBW2F>VGlu_v0>VS zhkX^}Q;-Iryf)lsn_qBzaxlXPlXFJ>GW^XW|J+U?cB#J$8E2a_QHiTsy1T&6I*DN$ z9H?O&*@;QGedEojF9&HenlI_w$ngASk6XuJSAw?AzR+#Re%h&|ukrF_g2ahyx*_m# z2gJg{xK4ICV3*#fu3yVxLbZ4_flb?hi(6g6H5-(m+(3+Te8b8`X6K#|-zS418Z~uG zR`M^WD=4RN`Y2hJku!>y)nBTgahqBFS-w|`VU&CpN;}3gOv1RODr;R`s?UKut#6qJ zXJv@6C-l&JIHC$KNeqvb8DyHWa(6jw4VE_N?SD75^<5Hn|C5=VqSw6TnHNNA!Oq5J z*wLxqXAQ}4gU!yjaU1BC zhL>(MYB%u8mGbU^o}rRx_Kn}33YC`q+unPpOC@rk>gvAikS&koX6*~7M%XT+_FRIEjz{8vvfUY>A!f2@{!$l_Fj%0n#+^!AC%5F zI9F@r4d^4UO1@2|1~JI+8VbN z%$6^+tZt)MR6OS{R}>O~Qr>_SlbALh@sIjhIXo+cr2N4$ZjKtAA4yBUB^?HB;xlmFb@fDv&7id1uR9-RI9Aswcw^Gz0lGob#@8Y0p9`RpAHzSV ze!UsZBZdj^+d)Sl2M2Q?{@8j3KgT$Wfo`oAFY4IY(XMN~ns5mhWQv{%zSn9% zG3_wiT+C7^m_v{m1auY#EozxLA--GMni`|4qxUFSLXocrBHq4`mhq@8fg?QHX|oYi z%Ezcd8nlOp*!PYXt6e4NYJ2RnxOn6WY|A&tt%#C?2cq8G+}z+Vxyw-8yn9?N}_lPf~n*{hqFq*^Rdz;({Q7xb{} z^Q!M%b@t7*M>+k*PJWB=95Us@Bcm$v7iUPdW_jZ0P;2DUk05oH6k}bR%x?;BoJCR_To>cxdEjWs_2Q~x89}!&z7z%B7Q0eN z0H=%YXE3Z_&fIo(6}fa4uqlmM!@1!8oJG9Pw0L)7H|?#dn|#hx9z5ukQwr5qcPVn1 zDO8h_%S72e{V~?lMDa-}RSjaG zlwycL8D(QScY4%@lc=l4JQq=?(e+x|AjkQm0bDx2KM0#7lnAPP9+r;QL9zew9Rfjb^`~UIy~&t zW4CcoQ+0_sZ!b{y3&e?uB@u}4A$*4+9JAA#AZig2`^@PVOtCRGCxz|EkS4e;(&Y=m zaFS`!i>YNF9x5Fio>)Ah+VqLWE@4}U@~T}hSCGg?{^Ob&_Z2WVUN|C*V%L5ZllaN@ znMBX|THnBa85BC^j|;9HnGo8xC|>@c?-wvDF|c1X^8H3al|Tw8z^|=k=j2qVb_?^u zPV=~(Sp)%+10XRN$dN77WJY(P7j+o1@A6`&kApGd==5$*Hq*~l*R>58VkD_@Y-HRz zre~2{>C|h?i5`q?v@5Rr(&tcDlFNw-Z)P|-8V^%{{g8*4*J55pPlz_SF8uavKEQ5B z5E9&aV=?0@eiG>|3Kwyao@{xN4R&&U?g9|@1Hf7{@~<^8sB!r5LmEBFBQ9cm3;;MT zRtx=SQSYRkq|s~xwlf4^qjk=u!MQ{sy2>nL3%WG74ikj|K=M0?I$u^sA%FA`bqWF{ zl`dk`H?RpTFWhM*1`j88zT+4#Z-c@T+mYb(b!1J;(@2mTF43#}oyP?XV2}9Y>0F=z zkz6nkjQO4~zJYdxhoR$7E{48R)3u3?$C&Rtaa;){XOMv0Q&|U?SWC~pS1Di_553#= zl{X6y3rq#YO9{@hfE6b}LhPt}Bx~{e> zW8?t0L*YZTw+NLe23o%AYPYp9T!SJwnP68!5H)Q-R(^}}U=r4%p{N*WlKFtuU^|`3 zULP?+t5WIPd1FJ;LncgdbLiD*ygOXXSBKGmjp3GsqVit+DS1aZ9rc^T_{2s)bx2b> zROb8*q4uy7(%k6F_T4KvEmt#N9#Y}V2*ZN@6gM_;Av-M=Eo z$Rj*Hygx)r(PgZHg4Ij;V^Dr2I4t5^4u?Yc}d5U-+LS9iJ2b|L92P~5rp$s__7H{*kK!QWWO0Ccd5fVqlfZ+0mz znV&-skW*)y&GaIEyV01`1y>PGpJsi;(LpCWN10|w^)z%=_iJzWz;5`4a(Z*2{Un7K z1{WUA4Hx!SM0mr3YhU<&4RuZLd!;-YTI@P*=YDpo%_tiUP*=2=L=YdhY+{Yj3#&ad zs9yjG@WV(iqPAc#1}B`4u@)sv^hoGtkBv*t?vuZ2US4wo&*O#YkvdnJTU!r;xV4ai z7X{CG&)j8Vk6dC7nrNz1N$7kW^QC06G(P_DK90DjV=Ntb>dYY)J;nn0_4SJQRaj7u zob-pmCh@m22Gz=ME>V}2t>tHyS9|VL42nB{m>}bdm~E`>6M7c?BJ*a3iuWi>dsf%u z2CcUBOoR%zywoi76wU8cS4?^@(3lIg1_klop|*}69xuw=8`IPqTky3iFDX&Sx1Biz zXA|P#acPy(Yc+G!wjdCL9p>-uUX4wR<-6bJf5~MT-A2L)wo+-vCLHz+4@84TA!{&y zq{?@qs2C=vq@*e%vlNNGlHF1&!=2DGoi-wXM1~Cv zH;Rjki?}+bXJ(pK*^SFB4kTx#K*}O|ya`*UOTEU(D$dC=^Xqk_^OPvO&)Y6s+`0o0 zUtQX>V6+q^@MXVDa&a+7iickKs__S1lvp= z26lt_G&)=4$Vyg@X7Kk2Q%Y^fhI=bnEvMa@Q4nEJjkXI|DLsTm1|zcXPdobK4?9=DP@{kgeKzUyiC7-Ua6 z_$iM1&hOs3mBZL{UUfc(@c9xS@7|1QQvw@!Ga`dO~Gto}O?K z5&M%3Q6v1$vID|PTHc=cUQGpsYz%S#i;3M<_UbD4mEWI2L_CgC0f^?U`HFlG^sl4X|E7?eNY6EjBC5c%+gWR-0bp{?dv;XVXws>FHbG5TqEUQ z!mc{zvC2T5L0Gth=yBX!ykVB^l8_@vWuSXxSRgj z&9*1;TY8%L0N;wh!bkW+gPE-R&O-L5hEpzZ&%Xh=+qIquG$rEvHQ13(%qIP;Q+y^Q zxE@NE`CAq#gsx;Ov@!p zHc5zjBL+^hXGvzpx!l>-3y;bA{oAU#wox8+r$3#V*L2@1)J;q*EzQ$8>(8G|w}ll? zkh$^1e0`>)^)D^J^lDOp*Pn8?WPVY-&Tu2T9k2FppJrZh8P@$!MS#{p|^R_%;|>E*-n-?AJx>j78ZA&78O@YnYJfR zp=X>72DrDYy_cTa3gN*>5>6gVs= z1eQL8@EB2uH))n|X`Pkx+#3Q1a|?1AG%MxV1RseBA~khu>~esz?1LQ-0RgNC)pYEA zw$wK#`I`4ecaOa0xl#d8&&I-I^43%Jp}fYPo(1gP)5^v%2NW@Fl4l59K5LqXoL;(z zvjQ6A8b%K{Cf|*)Pmx_+T3A`6WE@QM%`>z9O5FPjPq}naS&U$e{N=nU>iAO+5XZd0 zpVMR1D*_qM^hMyEOjP+L9nyv-pF2T=?_IIQTTTQ0FJHg% zZiqVS-ibRP;{KpGpn%LJ>#4Sroi&~U9R1lU?SRel<}G|M2Otlu&n_zgc5yD*p7`5V zdmVQqlIWaWa#uV358p`~c|_D|ysE5LjJjcAKU1flBE&g-NdHpitiEGyJWq&??Xl8J zW&K#>#1fg60M)f*y~wO!hB{@P;WONl@6It-vLuf(@bV);k^@j6HVzJPz_$QhpZMzV zDV}S`-^KO`cDln&UQ>H4`{PGPsLrA&K82u@WIX|!4F&7V#vZ*L{|&%0n~QGY-QJ#I zq7w-@wgXv;rfGX11IdDcIA)b}`UWX_WNEw|g{oEW&^UjI-MEPD~czRQI z{3tne^;uwBGlhe%-E`!$2g;J=&p;}9q8XFj(9qykxo}vW0)iItv+ptp^L#+aoa!`q zgyVM-;4Fe10mqw<&hf*1YWwY5;zb7D$}50}0#F3~rKqo81*qo2>LSV@rlLhh&kK)W z8xjTTmZd*O?J>l!LD98se=)U}4caUH>5?&B58gLd$mPYyU-qB?sa_zH4z{rb zI(AO`6Hqb?rqlxfK2}Lk-ZG5-4a(+=)oT@QML9VJGFi`xw)FBl8Fa)qDGEamPN_Z) zT8&gNUjpJ@gA4A`*L!eYq2>U^LuCRPyo}>Omb?JCLLliCn@T4+D>gg{iwxbT`V`8G zCMlCFfqPFa3p6%&PErI1r&Ku~i-~`=&bb+w>N&s&i##*MFC-;+{e$54f`0ClYs8p# z9c2fDviC=`wWitF^&#dLDK3qQM_xXJJ3-TG&je-5w)qtCHpidTr7}k!=J>@@$A9SN zd>o`tJolCSt3q1ujvSfbhux8>MZ9{E9 zb9Z;k?RUNOSAoGWU-m4O28QHOUWyi#I!1Ol4N9KWJtYoK{bJTMFC_y5_~*}`M-S~8 z(L*_Veq%Aw$+_A_*tfkFl}d22T=7N(4X^n9$EwiN*-n7jBF;wvrX~| z%8D8%bB#_<)6KRp)JwfdMaya6{9m$(G*E-!yA{UBCM2XJia396IglF5l%&9Nw$h1H zQdJ%FLL2!DTdBhDDL-+(Z9y1t83?E!2ck5fY0qfaVC@u90-b_jitQ} zm_3~md*^z6Ik`|;tGogGK-!R zJ~2nvaDXhdMjIQzP(XE5gQO@6i`=IxP8fwz#8Z9l1YKRxk%@^?APog~7xCzkb=`7z zIbbBvYinAj>LEa+k(0}$@Vh=cD@#61u|!UmdVEJ>^dA5PhYNv`y3ODKNS;67pqKuZ zd%c6i;t_6Qe1rPjT{iZbFY^?ENzAN&ib3MZu}o4(m8;WRL(kPH)e=)N4C<+jw?lM? zM4C%|wpR!irYz_D{8c}Pskr3KY7xA%${WS@qw~iK^n4!nQc#Glv^+FeY7PO4@Jj$- ziR0FZ8vNsM!S)~iI6grR4V4~-D={;DXS**UWcG|$T%24`u(mL-Gh@Fh`-=BH^C#G1 zAZJ2gp@{hQxe*s-=x)5#;WFSG{PyCpbNx89q`wh9w}&aH73cv_$t>*mA{`3IT4TP% zd|RKG16`BmY9u{fotdjIZu+~!R#cxwLYuLQtLyu3-#$nlI@M=8G#X3`H3D|^VSnzL zb3Ir?kzKd%#y$=lUe!qG;|9p}^K#{b2j2qu;=fH>R_rUrER8K#y~AaC0ODrucR2yAl z5kEOnuW*}m-Ro#o>tJIm@Y9P|lYA)%6IvRx_3j;|GSKg8^4oXFjQ4G1uGo0H8xE$UUkdGpIhXd*H1KS4ogNmhoz3X4a!O8w!r=KkE(9-6Ghm#vT z@gEfhXVv7dOj(y0Rz4f>ooDtv>0gOB2_>^zpT2q0ww##FfVg2o3yyBf9(LWwQKia`+3GaOj%fO8Wxzfobv zz~EX8Bxj6QT3oX|&j`;k4*AGytK0FjEJBgx%^MlOlYvQn^SvkR;I&ZFx7)TfzF(DJ zzy6&+;RoTTx+bUak^Z3G1Tb>tROp(J&!2yV7VqDywXu5qST*aa3N6~5y7x6UV+C;5 z;;p>DcTE91_45Tk)ztiBe{(a|A;86Hg7^!7{lN*W=7iozNT_B-*QuV#+TmG$KFapL zmODR{z|!Miufq;be;WZQ*h}TQo~cs3N)P=&Ty}XFcr4nS;~EG%UkRlc0LKTN#0oiq zZ=L?2ow0LtSq?p?dYtqv7KGEWvA-f-0)O=W@p*9Nz^0_D7J0BbNN!~Hzp&;D0$!*A=?Mp+59D!5`%8LW2j04}$rs_XZ$jSo(7vN7X1IG- z=sv>ot#Oh7VSu_pV2&ZQ`IuDvV4oBygpi~tA88@I1RBn}Iy7tMyi~DK5{d=Zt5+#t zFcCpP&6C+P7%^9%lQGUgF-6E=0I^*`L&I5ER1^hdj?T`77G{n9PphhH*3KlGxEiN7 zVf3uZbaCT!8E$BZ_3%<~mGz!f#mHDeO^vS8&J{UDMQyucZ0BJckv9?Xj6Lqul=>R+ zonE-)7x8e0;F~vZ;=O&~W$SProGfHX0&)Mf*XKv&?Q(K*gHxWQ`)jt6D%uH+RgO}D z(p_C_-MzhP&rLEXCMOS$Eg1_l+W7u#;MXWPpd+q<=+t5f%L61{x`HdN1P)U4@&p7^ zWOsW9#sIsk0ks~5qK?(@q8fMi4|uM@96cIWl!GV!#v3+1hw?_S)m>57251L(`TTyR zl+3IL)$VSyp|-GFAR;^V9InRA>cDEAP*-^j+TrClU1n-}dcjI*Eyc|w{jZ{(EBIp* zsVM(wp_&1u4`hMZla?(qbiC4Qi{}JXy?B;T+f^18e-uG5eZ^#g)}bMj zMeBX$0MFozv?UVJ`_I#rwH$FisA}^ zpw;GJf{dM0e;qzLJe&m*=C122_uX8pC>qk*gAYMSs!*g=GT5u*5*weEQMG?fRt*X* z`&?!)Se_NEp{FNqr6+NG;MUa`( z{iB(fQsQM>1Q`Bfc`v8=37jC>UMtm5^WFW>nk=i}W=1}#2q z@HNTDvV((dd+lYk+= zbBn$p>G+}`;oEC&oP-39wY*f>mT6P@(m|C~wga-rQAj~^v%0%?1n>yVmE=|3wLUOR zRLBjgs^@*@dzaNXSvt`mLw!xn*|{mr#}0n?ZvR!cN)`>^-1;3gTe_VtNP{$s^g+CZ z8*CCeiB1y|=hp98w`1$gs_&4wI1r`7AYko8W0AV3C<*RRE8N_=2l)>b9QG+-h@Icif4AibeFzR_2)HsjGxNaobz<+*WoDL~!lFv4>1hM! zCv?&J84e5q0oOqM0d8#9!m)C)5jit+vkC?Vfi?{H-#11{7(hVq{;92ejEU*3+thbT z@>i&!DwhKa+DDPX+|TqeHn_;-c1~s?r+WLb@=6_twi}WZ(dzS8nv6eDlNVH?AprE^o9|QoP zk-(9PWU8(iH>=%S;Qr_3n&6oW;4P-6rww+JQWvG% z{KxMEu(dkC@-qqyqHojEW?Zhco6_Oo4)SYS zGD?gZcmt5_yXryPJ{0sXE|k8h0-t4P-VqsB z`SZ@2%wG+%7@ChCt3cX{x+XFX4>y60{G&Imyx%)y-g9mTfi67fiuL^>X-04n|IvGW zXOmE{A&(4>mpJG}(DfVEd+7gj#U|dqM%;DVLgR&5ok^yY-flF${}X0wL}y9*C4Y_V zRON%-Tv<#O^*{g0LOU?vx<0Bk;(xsHukQg-_{I9)uK>1>c+>muSMI$F1phY8zdlHO zcljT^{P$(XSMh7^zhD1gaQ3iiZ-W>@*yAMoiv z9=!3HSGhE@u?zVx1O00nLgiwrr8YLEGaQHsrZj=?)j3#{cIW`&WDX&r=U}a7IK=-2 zF#nk}_0*gUMS~g!Sv4R1?98lQK#X=7Uv_FIF#Zg}*ffSM6Y}8&aEp zJ}n^oPh0zED+<<%qvUSmUS@pMamjQXdrTb4R|wRT+U_Owv4DTlFO!hJMoPK$B9e>g zV;}nZXaIuI+<1Z`+7D0?EJ)=S$1yD z3`Z33>CdW*xUb`*peBs6V$U_VTlkxsn#b?8zPP0NPti<8NRj(n5bwkFE1uxtD}TM_ z2Ns=iW5$>5MG0mN|Jgtk;s3OWM+?*hQgG{k?_PiXYCyrqYXSdgB%?C z>Rl@0l5a}(a}fm;1pU1yi7F4ToX0qjT)RL({Pz(fxMjoC=5MM)Ot9(xzx$f>eEMI1 z@2{UzlWCqNVW=_5X+PI@dKU=PNvZ#aDFLch)*C9oCE*@h85;!b0^s!By$ABg1}D*K zfUN31KAQDe}n(xWsRg%Pk zZ+^Osj0miRltrv`^sx)WH)k7HR$k$&tAwDhb3b0*`#Ql#1AsazGG zaXql5WCP6EuY-8)QS@${nx+;KXcC`QT3A@C&h_4(oL}ES_D|=TRl3=3tOdy_%kPRB zfjmTbS{)t&7{)7Xejb>t|J@c_#S01wG`E^?aorqiO=WIwm-_Q9KoWc4d{N5Hb*A6J zg13$c(GTYt&Ecs1D}&H9)%y&EiLoaELa<{(v}1iXs9b8s%{kzOky}ltb)g-t&jRqW z8n~nnv$oOx7fX7;%5BVet1b6aqC5Rh-kF$YemG^2DFpl-UIBwI%h_%Kq7RUP2f3XF zuM&;2mfbqOp%|jl<)7uGC;NM665}Tm6C!SlHU)SYsT4)=kQ7DfRjTXM#r8L^fxMyS z%V0&@O%4rEx%9N@!-uI<_vd5)WAMrU$B<({UNY7tjTyzOW& zCjwnuD_}cG8Eh^<6Bn0M_@U!&9ODxXKwSdrmf^G#-jw-=_D*tA0yXcEa`e)jh5VIo zWI#GRmiaBIJN539#Jg?J{%*<7*YYHBDtHOqaf3hd-4)LPe#^4ed3!8!+MaRr6!`Kd z2Px?VKm!Swp)?O4_+744W}s66MM5X*dx0RY^(zJHUy3;0ONa&KD(I=U_T{EFe-~2c zs)Io{FsEujA?dy)T7YjBFQhvSk@7m}BJ&$lHB>FaoY$#yC&+^&nAcKQSoc5*0PI@u zkibHqDakJ{mqvKnrr;&lk%Lxr(+LYN!2(72?5Tq+85>AKfZ*N+WS0Qxtgh~o0>&BH zFV2c*8V3B1GtMIreg;u~d^gg#8kWe;Q{tmCL6QZ(wE1Yl3QKG7k`*9j!v6|T!B;I3 zqU@Z(Qg1W1w;rp{MDx**>DJxzZ>_4oBrK;)K_{?0IBq>$zXxHe=chV^osQfAsV|-A z*rce;prGUKuKq|6=y*!Q@it&#n^NQNrZ6B`sj4$P>@$imUA`g=Z}yrSR|IUE7Od7_ zs|leO9B!y$xGBKQ^8LhK+uk5X3ErHW|MRkVo#&6pbW^7}&W&QpoU`Em)tqHUIxQjj zP{ZwThyMl?3pJ$@2K?CkN?66i9C3?MIH7hzWe zxlb;`Cwl(79hH13?MNiDqzr?g6)60d7Jv@Z7+zZHurcNPJX*j~tEL4vq28Sup9$23 zLu$7UN+=mdyIY3JUxueAZtsm0%Q@WEE}g+Hi)( z*-G-p=9iN-jL|*JfI44e^*_%9NmFef{ZL?v8oaD8B~Rw|*!5?*74ZeIwN+66w%;sm z&L?)|sm;yZX;FZS|42A&v8X)OZSE3$%71vN`^OI%TTt1uwF|PzGqZ@|RcoLwAxoBo zXg?l|lKU7j2u#H5JSl93pe6974`Q#s)ImpY;tnI_MqfA8jW=3K?jHbt<27EDp$psx zO)dj$Acp~x$r^(&A0dB>zSL4MP-|RTafflE9Y^>7?xfy7hyhZa^wX8&D_!TX)9=!7 zt_Bv6{|c_1%9He+7Y3_ryX6m}K#K=wct#&7xIn*@>n%^-Qb!s^y@v14#0H z)|>36-2sayj+-L#J9h zjTxBDuK}T(fPFY*c=AvdU#=S0a|SJ2r>35$dQ%S$Kz7~ms;^Zj@0`n8M$QZ}%i>KE z1ff2oK*h7)8$*lVIe-uZXkSP2xbWkxrl$2!mOXJpuL1T%MATlye>I-T8u_{YDmtNh z=bJeO4G3d#a5^|@3lwdtDT_7eMmLUZA^+?W4%5==F?HoJxyTqh#3BnMIn<+kRN`_3|Lw}mrbQ=Gky~aW8so;)zH`IP3yr-t@B^nbWr&Ms;cp#Bw_`GGm`$hkfnP~bj)c&7AOI-U5&m# zFY2VKT^4_$fVub$h>xtg{syfQN)Y7ZqMb3 zK>-goi4fxiQ{+?+L=dl{@k($Y5F`%VUsq2Ncx^t`$*7YBzUE;QLGlo0*`U2W!PS>Ik|TxCJ&H`gY3tPmo|GH zIS)_7gvY5tUGxSy!IZ%MsoQ}Ta#ROQr7HF6r-xoV0~M7PO6qnB3m@Z~X(RvcMPfov zn^sR?xFtPcFmrX9YRo|Ol_)4KKI^ly^BCAn)B<@tdca{z6^ul*sML&cg=HNot2s;F z?SM$W(rY3*Dry~aD-}ksQ;TY^3}q_OmoQ>B7sS_U82S13TGoTP!D}-drV3-*S4UF) zs5kKcWdhc~X6rTaCH;OR*bgw?+p$OVVa9eb#`VaAMQ#=mwZ~bPpW1>05q`9A`WM9y z#0);+%`VE~(KC^e8Hz;n{iKhxE`JTQ&&_45%ng)eRhHftT{rf>MkaOL zTB7WrOvT%>URSoTz&?`cN2fFgr`@)X9uQP+bFCuGcRmwD0OwKxR=)m+`cSWP-YCN=b$%OIq_(ZgZGJk9;kwibgI0<&|KsoL9T0Rf+y`ps%P>$mY-NodH^^32SB zEWP)rx|(jutvqfZ)Kcvm6#|*SN0L11w%R<0Y&z&0q4qa9{muS-83W1~uP83k_m9aq#A5o0=ND2NxZidYdP(?MuVS+cu9hoU$xK zog}@8vtfxn9Gq&9*QAd!wRi-cs|9viaQB)(dI-743uFo}fH)1qqx=-5l0<+d!O7BS zZZA#;{GA1OKceh^p24(w9=GR)E4*~yA&f`ab1a*{+#4$|_gP(bb;Ep9KiD$u9|u!Z zieaCeBfsV{_e9s;676?15e=^-8Nc<7fw22gtf~xU>~m|B8aTSuCL@&ZYHaS)w-uHF z>yb|nXWVbHhHrRKcy`rvV1rG@KQnC^lavk!3%?w7LDf2l4?Sev85lz{*rqrdO?vkA zDWxhwH6gYnw)q-z4|-(^3vCNT&3X9qBHp0h>W4Fkwly*qFZ8Dye3Hw_tSJ1D(*wES zc>b;6ckvCsJ>75Sj~{D=FH`QF=ozW$SYv3_H4S<)9v<7FlKR5N46a|lP+SDvo(>QH zybu_nUHN910dd{Jw>dELkF${d_<-9OCzE}hzx-6qat>>mEVMxUI5pGWz}A4&xU2v? z>;l{#m}st*_%y0G(%nh!#Rt>mND1v9X< zrW!&adDg?Bo8h)kn5lAA9v!u19$N{#xt*Z#)uvB~0N{Y2qGDg@D@BXl?@@&4YB9e$ z)qx_YkCJ8_Jc?SX?&w|8l-C|}Dy(1Q133dhYexGqr{5XBk#V`S{Hs1Yp$af=qtGd- z>>s_otEP2x4SUCPn#;WAYAiBY3<*6yY(Z1*N`{fm`=^4dTx4W3%~aPWxCf@2+$0@p zX)DL61XeB|6KJmeA{&fVxM+V>+XGTIRm(<<*wXZI`~O z9ozX)alrKb<<2}UPluHinWK3)U3XQb%+9Giql%v1z@IV6c?hC`91NW!x7Tj+{)ZY( zYBycQge5J_u?pPmV*-|N+P7-dO%+CKzuwYyi9hR~^EqS``!Kxv;GuZX`zN$Y2_f&k z@zrenTza7@tdk@)UXQ*0^r@|xVq$VpS>nr?9g}d%*qi1d_n3vrrBYlFUK`|VYjkGj zyJu&~1>8I*Wx7KU^uLxV7<#MV zb2H}3Zgy{yhZ$>TZUS(v`LTY@vaw5{S8{T5$rE~Lt85A~-PdT~XTDH0-b?2@kJO$mM0S*!7hC{ftA*yyONgtR}U|7!*j;qMAxNgxx9TM@8- z?(9$-tmm*xfvX1fdeHpn+oL)uHS3)lhu7Z-@jVa} zUU(Apyls4sh0o0K0fBJv-tl%!b<=iPgy#-8H+eneAoUSDt1w%5Xw@kDyOVoZRbb#s zvc^kQoP0yX$ITFOdbU~Pekaa&$6Td;yJnmtVM;B-y&)5mxp%S(X_4X0xoONs4wv({ zf5$70RbLI@daijPcH7AD|7BUa%IVa@1BE-;IJTa+9vGNBp>8TFUavc_md?RUttelq zt|r^n)R>@-rDJpstH}_OO8J$pRrIVtW7geU#IAj9=c%TfVk=Ev!@{?ubxDug5uNP; z->EA2f| z-2MId&$`F$)JbX2!Qw-umTEBBSy`DOwI@{{-R4Z>Cp_pX{6v7V1LqhE@3Ee+pO4$F zjl*Uik+|&sd_{V0XyvKY#;)Sdq`};J_vX1RGvU+!1NSZuvY|S+8J}vz21&i#EhsGg zF;6Hhs#6kgYScRi0{pe-X3^Dmfd(2J@NsSiB-k^O5pX#OTMUPl0@Ls*dL>9Ve z?9Sls4M&yFcqn=W8jjJd+gV3VQPV=U+UIwSKV62_o*3!LL&{oC-phe^?(5aC)E4Nzp6T}t7%lWBAeOQvuzPB9 zjXe%hVRm)v$rmlvIq`I_X8(`H5W|?6FT>V8aho)Ba8iQ!1nn5#pLzvl{79Tqj>;q6 zAoQp3ilZPL!PSs%Lh#(4=Yxjq6=6ieSxr_obA}Tm7`oHPjEL1W$FP&VJL+;X+S!lL84QBL#2`b+m2X=k@@ zY|Y%hdP!9%Wb6DZub_21iD#$l*ALT%FRhaxKdI;!8K0s{#adjV-#7JgPaA*KF%LA6I_$CK{S|zOiU1u7EiuaD==$I-N{$7Hk}$8 z{k^dZou3>U#f)Gq^|&@N$xb#k3G8k-j67yy4!_R^Kw0KO!2h*wGWEDc{vYPvGAzok z>l+?KL`qa7Bn1Q%36YXUB&54Lq`MmoLXeg&=@@BgWJ&zegX3l-?TJ>9NuVoj4NH_Kf0K#+Q;2bbMdk(I>&W~ZORC!g+MITwYqUlGT@&Ehwd%w~&IW`X@#V_vX8fPbFpW>^l1dED_ zmWQ|n^BOWq1FrR^aX(%m9Z-z=NWo6-UovcCyg9;mHhyFav{VM^VYF#%w{MKY1u9ZY zeTk5!vId$9)E0K5<=bNnx~nR4H99P~o)m+5VYf8qccQ%EdW{7B(yU2hqu;s8Ta;ru zyU1@ec~KSR78g?+Z1L>p-6qP-t*eV8zC=>jO5pfVw=S77cpXwM#i|SC6cpUgQtYc; zP9a?2*GPEAM&KU{t=>8Qi3GODX*fvhz2ANrcOnw3Odn<lnQut+)&fB z3lyyMT=dZn42bwVCB|3{T3HTGzQ@eay(xVKjT^$wDmxH^N?0!n{!t*ur*uVkEj;K? z4eo?JK;(r+LL7*qQdxVd!bm8UQ>fg?=1RZk&R;Xd0#r2?Gj@(YkS8H7sK)Q?#1m@=S@GL7Q~K~l6+zK7#JUrULiN$mpAZl*7oKQ z_hx?m8qzQ?=3Q<=p4;+q9xskbP?(KSS4j+PU0mFCS_( z1B*~|ni|4650?N6R;@YZHoP%9M2fGk@j#F_H88>aNdSYC&!%fj3*MyXU>n?ivS6t% z`IV*zA!d0*nPrcfTG5!4&X=(ETvL4vQU411h`Bi&)9bof)p{{$QupumO`q4Qs0{Z{ zZX94R%B$)qz1S)vfXI-?59g#W{zw)`>w{~^zgEQq(rF%A;${@aG5G73%+)eDMSqwd zd_~2U--0aMborv)NER#AcE&^Cz4_@~A`f#YN=UEUOyBl_)xvE?sAVTliaem*f|u{A zRasbe1F45B3DMuZ=N8*mOr$lUT3MIp=*D%1 zIo$-difE1!0a5M?=%De__gP9oZ!mRO%=GQbx@nlFFTEX}lOww3HH)S%t!wwXo;1dG z5d4eFr3enW+67eItbo6Zg3TL*`<)KlDY%$TNBb~<`|9JZgpr|BzEgKt4xor0ZCLCW z{YPoqpGMfcEL`nfO|2T(*wO_>MIE*!S%q~()f2L!qR-=Xp2vJAcsB0C1hxs_^*}m5 z=2r}C84wiVR-z{sSiw@Kdh-YdX zFrhGu9=NaRd7dO4e0n_Dbg0V%nB)!mcA)p(ps4m9QUj|gswMLyktbJLsBd7sGCS;5 zZfcx@lP^0@I&m}8pcdo z&HI(yGgDp$;XEoSWq-hywfulv|{^a8(r)}hPEiK2B*#7J`Tj;vfZPQ)@+%_ zF@Gp_t@lNtLs{G;icsy#7ekYiqE1c(a%Su-c?8uH$kd|XWjsisLcvh}km36Pi<>xu zN8x;_JsiJA21ZFn<32Z%rdXqWE-Wkrt8BcYuq||f@Vh*>TipG(v79Hb=ZgW6L>Iv< z@*I>%FG8K3WbWsB=TVka08!qtFAc;)>!Kq80mb(ww6gpmifUaODA*Wp3360ahYYxa zVr~-$3|VgdBn@w;-~0V_kvtq)`f({Ekrjp4cHkf;Lu2Wuy*w2)R6o zqFeiFV%9&E)y+B<`S%&GVgFm#UO{}4qWdoC@Z!maix}AdK#vvB0xIfL=T1oAEgm0c z+X(_nTLV$cKE?(hr0&jTfjXsY?)Eo<;B_A9Jh-zFkQ>G6lK zvMO!EUFS0K8ztdmYA+1$ySRkMZ1=R<8LA`f?n3VUrrrR-p-Ed}JY*$U`piKxkon!5LyIHH+|sJh;rW6N*1vk*x@vD3AV>`_QM%Ceixt*v&T-uAcS}MbmXHqE9zj{N z3p~8{PjI-!3^-iRCd~iEUan?bfX!Ho2x$9uTpQmuT~SEa6H!eMPR#QC;Bv9ZM7Ele z>U~&$2_r;{#s-)4QwZHpSFPcaLZ-aJ!j!DqvAowlfArZ?+r8#~>hw)v8=K1Om%QKS zcNMgi!v@D>+}*ExzI=`y@OE6wOW*DQ_nIqmvAqFTR~hXu-xt zZ$)x?NcH;i8$Ym1k;pi>3$St}z>+y>5n%^p{_c?7HUD=?O7}lSduma&+_eC&EYP9C zuD!t%jXwr>@M*w&FW_?HP%4R(!lxmNJt8ZEvU(zHjQoR~T`TCGy87VA#NB_*Mlk#E zjv@M+d4%W9r(LFk$D<+#cFGJ9CTj~(KCm!Br>(J=Q%@WO-#I({<&36O?ei4EN%7?|`_Wp%5LO;X|fO~Tyo+rF@=hmuroc{F@*4+AK;J+Mo)C`t<_1h)<%M) zv}8$1$u;}EUdN{A?eOWJsA!RlCd<$aI6N-!qz*nEe%tI`n0OGFY*1k`MuN>R}L6?kAx-4vM*M90$^5Q}{L&mlEkOD{E4jjL-M#vPQ zE&b-s9Gt1Oh{pc{qFPbfjrb7KFnS}Sc{Wm6-6VB&^_P;nSZiyRa)Z6S{PDW3)LhAg z{$zGFEap4RPoBiY>v`X(_ksUwr(m9e&#kP z-r1}76yHBMI9PC6w!^e9?M=^`kI)qA6qD!OzTZbG?zoEHr0Y#qC9t86`qeZlT|YeD zRH9V5ZdD+22Bw_U$7x-mR6m;)7=+7^>vk0L0M>^j??t`p8s_&l@*G2bwSC={u&TlI=$W*V7W zS^`%&J|HuZX5kxnq#;A3ZRM;&x3mUI7@YW?`8KO41(|`0>O6`G@;*My0|O4C;^PUN zr{wTsPdbl|@aw63=KTt}GN~Ak@*lD0WM+Qsd_`83Z{Gef^`oAh!Nf40?zFP8G(-WK zrIr!t+Wq(Z{6TJWAAfD5`)8t$if17H01M2bgvEqUtsS!8J8_k&*JdNxcw%y?=h&VeJTe#M%Q-paVtt! zBZ0_&X^DQ)R=s+-lbkax|B)TeR*t^+f>jK3z&w%f(wm0X=3}}&k$wrz8J~juk`|L1 z$Y8?bdSKsFDdcX?SkS@_IEwM{Px<_!%G2<$`+Oh19x&0%CyHI{W}#)w?%1;{=k~VG z@0Pmu0J~}7I2@1UdGIRx5*v-pJr9rCPq9R9t2(t)EJ?}9Kve@~Pb}lVp@(4hI1x0; z2vpy9dPXptauspoch6^?)W>!s;X_kgaAs!zfX3AN!<{iR{r+F~NV-7e7*46-{F48U zerR(uLBsx5kcx^*T9r?l?IvK4t%>01R+;rNBi1Dn9VBc~l9di-!N$QsUvYI;gATDV zaZ>o}@>LyO^PYjxSKIBYeV3M^d^={nT3KsoX!t|ul!jg|ska8p3}fSopy2}uAe$YW zOONe|;FbYUWQ3lVm&L$V$D0PoVA>%3698B3MNloePb)(1$_a|ASEj7TIsGBQ{!};3 zXeztN&dqII4|nC>-<~_oT4b+YWUpaGo?`pExNsusx!_VccawX-IU$?Q+j?dsxHlkc z>+5`+dU=B!dOi48lHUkFB=aR=e?M zP!LI9=j5!c(V2p-4N}~AhgLli&@w>cC}Wb1Q9l*lJyfZd3Wg{uu9csk-@3|w?w6>- z82dgb$Zg$4q2SY~HP^;rlC7>fV=VT&7lYRLj#Q(Mb}))6Xq&wfr+aCa9yI83_9 zwqz}~)&}DggCUD8Wqh1eN;>3iZ^0v0I%+m7D09->oJgbb(oLMoN>{m*PJG_#hKBdq z3*R(~6kkNRWiRSfr+EEaL_R05a53Z<;Zj2MzZW0eHhv&-b2n81F~iJ}F@!wtOI(O) z3=)5Bx--&ofh%mG$un}XvlMAeb-Auj!t+yGb8%LJ(hQm8;@i>3<3%ZSHmmxv>&K2N z^%Y*b5aP%aI539 z8TKOGN==P^MBj~*-Aty%oMUF!{kboHx_}pI|CqRY+y-VIe$#7XZn3v`ej;B@pGil4ye1i+hXO{)a*nQ8OwQB!TxCH4(0he;`qeM z4ucBH8O^tS^mu={hyK}55g#9cde`m6qU!0zP}cY$Z>Cha4j|WB3FGyp9QTBQ5n)@M zOj|4Aak`1}Sohn;P*L-~gmFJ5Jpj89;UjdqTBPGQH3adlGI=a7wC~;7k;3jpA4;U# zdgNgIG`WYIFRr7?hRq{!kvUV?|Tf=#*4VNfN?xyIquL z)zQ)6aPFe+G+k>(K(UEu1?aRC_=dTxCtIN<@L6Kf%{8PCm}jS5v1PQKUxR%?4eckV z$f5yr$yYM%M1-Moc^#|HO3KP&VX!2EfR3|k)qu@>jG7nDFxcK=-V9_zdeRoONElVC zM|mw62M^PR4}8yr9UYRd2rO^T?~4!2K#$kxS2TNNTtHIP1m4x0S&Xgx?z3 zU)tDu35)Y#pbJ+(VYHGB81X+e@8;kh9>u!H&pPibZx0Q-^`I3@wi2U)LQpz_SQ z)8Jye+Kt`w;E}Hj>hd@MGy2A@9ay@SMo|=aK}1vcJgZ%XKS}cMALyU^K21+a5p{ID z8{+){hhU%S) z^yxV_eU(pPV)42^-eNduIv?Y|+^VlFcGB1wT^QVhfb%okmK0Lt*WwiPJ;t6Q-dDVffqum{Ssdjc}wVx^cU#Sk}PYu6wDv z`kXTlTQV&u!}dUs8kC2xK7wz1@Kb^s!w$RXrJ~}Bnu?^3o1-PUg)?qA1yIAKKc^l1S4sjGsP*1e~!KS?RRl4go$(HSp1r(se9U&^mi z&s2F-COTd^p7|k6)&wzaLk$hZ+SScf@oXHaotlC^wB(Y2D2&LF6w^I2CISv{PVBtF`{g1Aj~GFQK9g;;oe$0ZZ!QkM{x2Fxk+`gT4fk~oHAU%9 zoH`;v|8hv;;N*D>-684%AYtYvW_qEYKQno{%%TGk zmg_ZyA35HKAo1{01*x*0u^)8|`t1i?Iy&B}@a)mrI3xuJ<17UNBil%eSO8uyzQPQ$er>R2Wpe|}ENR(f0KkKazSqr4n?GB>y?aFA8;Dt4Y z%a91g0gKlkh>P;AbtDjRfZjKuRj!xY+jO9oCvb9Gjrg<-7x965jD}k&iNM^?QepHs zm=!8FYAf`w`sP=2dFegdNWc)HQRc`A4x*SXbaE{9CW?7`lY@B^c2LBMxIk{hJuba> z2|+N-pT<1oi(WrlqO z|4U!fIl%9>e1^hKybxj==Muyx@AsU9Sx?pkfcm~{PVFjp2?$EHXgwAe&5pkfaVsdz zQ6(jDyAcVUe~<9dk5^YIJ%rljer)lI=aKUuj-j@D}0=KKG|V ze()n~kB)swvZ$^xoFz7!@q2*T%=F<;_vOUvZgP(pJlz5Ob}wN5aBHfsaLDR0BcthD ztHX~}cATt%CZEPr&bGFkFB)UVQvL$E6Gk6q7UR>AFqE{ElqSrSVr(oZ;o0kJ%6&;6 zNQ1aaBy#26!atpY#&;%Y%u8!^;Qq1QJ|qPD(WB1w zVM?uDm+o5Pf0>=2xgn$0Md!g8^W6N_@UiTc&m+Ld62HJv0Vq=Y{2SoXL*mK8yZk(L zNz_8i-X$W!eW@V)1m1h!qd{cY7(eQ)8_gJOrq%lMfevZ!>cK&Yoqqibf1pp4m3>II zJH8Lh_&o~0tz%-3+2gzf!A++2Fp3^nBRo_{;OJGq50F%y-`?>|dUy8$x?4ZE5IUM6 zfL!fy9Ehpe^3H}6tBWVzj@s(!GLC$f(EVVL6c@kd65sET!f$o4O(x}e_~qGYIzS_e zYtHVb9e3csh35eo0>DuafJR$jXL~y#K>ev_5~e%76D8N4TI^ldUmq(kcSPv10Y|a(v?xq~1czqZ1SiJ(5&q6|_ z-xkLwL^g$SBYJ@<>4OruJnL@QKZHJHV8~D^sF`^iaCZLPtp01?A*cto57fN9{uaOe zDb&yI&|^e$=!Xv<+D$8rDl}`sK$bS$1b4zb77-y;=s3}- z>-b_pz=p5g!yHl8TrKKH&Pt^3^$}n8Ok8@!9@S{r*34?TZjEnR(Vcwi7V0QVcn|fP=5_(NYLbG_U_qwj+r8Ki2tHG=sDP7kC^xe3Sda* zO$JK81nPIn5WCXdE@&|dLq`8{TN~JfNV-sh+Y!TJ#e6&vFH{L}}(qcYl z+9{D)-F1J&8x=8NZe;ND_FYWey~^F9LZ*&c^9PK)l#Ab{(1ujenq}{h;LhG7Ty!gJ z+xq-TCDVAWApa5F^30aMaP*X3+c)%j0D-)D^Zg|+Ap{o(hxR9F0IcrWgELG8B^_b+ zn#BASjUP*|HV(UPjocIY`iuk?D^Er$QvJb>$MmVYwr91@gh1kiZVY|j14hQckdSAG z+Y@8E@3{hT@An3ORpj90EcckNquhM?8!rCy2mDE9mW+zZ(D680^?Mb72^ zU7|fY^+cyw&4<}Z)_i_sf9O~myY2M4fZ+jxq&F_Ce{_v z&>(@xpPk=t+@W%Rf_t%7j5unRCr)YX=e|&p%ZpjJtErTpZJg#X+mfN7g%KJ8p}8L) zM2SOEVKJyS?Yrz#2;Fq&f9f-?2{*QDIOd|2kTqJ!mz;Fk_CW)MdB?gh(5Fj7$4rb` zcMM?{bhI? zJ{=T|hXI#bpW@a=Xzq+Q0qZ1Wzm8~2%} z3Ej_ol=Tdgp#-Xb9#>ds+2l24YLa~%ZWb=nVSZ3mBk0N$fwNCI(&J+a)OD43YY&8)`b0r-l~XUzK3`>Z@yhl{ z^?-S^QJG=2y5olVN?~BF#4V*rKaS5@st$^RSAae<{Yt~===JRyf@6v;u?&UC$b^p* zo2G~~8|s&Wi?7?r1;3`B)Qv|XlE;5qA^}&_Uu-r2IXL=q@t|~P4DfhQt+3*ZX|lkP zRcGps6}gK{@s}@Qh{~y$+9|eYPE3#ADHlMYuaSkUZ>w)CELznMwXA(cUcRN?@E@d$tSNmj1v!6XE zCH(~oU9C8T>+S+EaWtemT@~%L{9_Jz318&ndfoL!lcBmK`c6=zfpyb zgAzbBC2w_9RPNcAPMqSIwjUJ0CzyxUzX%_?iU`HryNo?}#_K0dGO>0#3d)(%uB z&R)uZgN^OYofhSZDYMtAuZ4H=+rla8->O~mI%Zdnt4X`F7|7VJlf)EMA`ku1KET&( zTv$mke))791Wy^r;#=SKf5t;y@x*Pc4R!cOM4!+5~M^PRZP zv3`n4w~A(AT)Wx^r8;?K_IaVUFb$4^hxZ$u$E4QQ-m1U!M8P7iun20D5TG@4j-NE+;3tEs{h&7yIy{2gPUAqv9`->4WgYuLa89sBMIwKfp6yEc=~(zbklQBH3>Y%Mj8*Y?g_6yz?4TCEN^m zs-Idg*~Y4ATxoTP#>AuL;)*K&*+kShz=rjl98X2fmHaMuB2B;f*I%PhZ|2~aJZWw< zEl90jLqh-;FB>-s{vi7~yQXx|Dd0%ZzFzlt_=Rd7qf1(sZ3#UiFOhN0)m0<>?z}2cL7V75bsw#MRpQ_XDoG$`VFmGT)^TYHsY{6I=obr*!ZSB`fsxTsxy*O6RhlX4cHUU2yZ!aHMnC&)E z`A%% z8U2A_y5Q)6?$20Rmy9NC_q5L(mtu}R%^Im~jJmv-jHzYru&yG(#tyIaVrF6ydv8|k+gLPEyAT0DuN4>M~%Dof}w-Eidtwl|NHDa3xEQ}J+P zY&jWtMtwFPp_Pk=ZTvE>{CZPBRll0Ws=nlGo}xMd*Yw-lTK=F&q(%djav%YRw4-;2Z z6ud+9L~)?(9&u&bdP2;mUuXy~YHVXd+6RTYE9K#VrOjOe(DOuKoZQH9N3XW64lVy_ z6cVxrQ1w-02jQH|j3d`O@lY)aab@EjOXy|+&;7a3@NhgHdQiO)w)l(DS0E9pRG{fT z{Tc*L+*;f)8*Hz9u{>eTCX+0PAAvbstSK%jX;Ar7;j0!!#WIs<33sU(itBJ2UoW5% z`peSp)KMLCNbcVl-_>HSl$`iLN}tRMnPcJpWUzTBbYX%8R!t&DiOp-+`HG&!BYIm+ zk!q0Bg~7h__H?bb^)!7%P|ysuV5L;pz6o7|ZvA0e;1o({qEH>EuN#wuqnYIbLJfzQ zXIqzBXbq|w!`_wQfPw(P3Q_?{S5Ec5^J^$kZ&9-u+vJ2>+LDIdNFI^`)q>Pg92^{M zmXNjqUzoM408vxfy2(gNT9gQyN?2N+m*my^o!3ViPr%i?yLfFm$0s%phhgn)LATf- zt<^kwQ>J<^zG3M@SC5WrBDY_s%1N7;toV=WQ~6=1s*P+>hTpK*K5eW<%x}6)oBeFv z1z=NHnQ=vD=c|`RYFUF8JeOxqBvEl)E+YsLv4CnvB^w(n1uFn%HIyG!Mn;V7kp@@} z`V^)WgCpLgD%RSvI}^Y3i?teVX3IA z|5TvT5GX%~rKCM|)z!u00kN^4D&j$q!xb{b9JrF;Ze&EzDU{Zok#cbilM5a!sI9#( zP((dh%=qL92u(4r6k~t-IAGr6Vkjdk6QEW0;LykVWZDna0+oC@wRyb3>xlaA_r87M zS^lh4aO63Kjg9jXb3;BysUVSO-TH?q&KM@D+-f;au5a^Icde~$-2ZeLvjdm$OyWX! zPWSP-4=QsIL^-<=QTd!Dmca5m=4XMUA7!ses> z-{2E%F!FXj=cAiJw}Nct$BCt+wDc$D=I#PZGE{I<_Ec)T0Uwi&Awv!7W0nhX`{vL{exB8-9~Z8L*~04J)pCASImPA{Q_vbe zF4V9AHB5l-3oPdY07Zbnwx}pY5XJV0*WvTJ7Z$gh6;4q{SGz!Wl}QCX1%4E<54W*7E7lN^k>L-*$M79qarQLr(+yUG8Uw;#pjbac zIDzoR06-_*t0!{)K%5I@wni9GOulq^)qb+#(RLaZ;(G> z>|)?zQHj$BIpY6_1&9I^jg1q2halO1Vl(&a!yPY$N3LFkEb%zTHTMHV25dt;VBdnp zvvR81!@CLjttT{*NEZO{(Yv_Q6G3IK`OkTE%aA+Qu(+D2ngig z(?##IXtb7PN$j{!0xak4ck&lLJ`~B^82AH76I%<(J2})^CvwSb2;xVSK+*f5IR7>r zn*YeShw(DfV=3POmt^Lg&q&1RZoH1GP3Q8(K#<+st-W*Jdqr~i!p2!yQ++)D_T65E zN}N>m=Ri+B0KnWa!lVL(TFIS%7l@YCovKD$REtT+3IRwLIif2Id<+o4F*NJv(R@#n z^^ZmDZ8VFbm`?YMUAHHj;$-!Y88wjH-Ek!cmFMKKiQoGCT(z4LfV;#VvAtyomQN<- zX&msXqD>QJFsqKw%^CSD7ZrhpK&vP?e~=H$MOLQsTZqJ`w{+O(V}88y zCVIzG=&}%}Gar|CM>yp=)K7WuNm}8o=cRk%rm~b)Zq}4#jg@U$UG?K~T8G?z@)DWo zesVaTJ9XIN=K)FXA$_{_O=wEO+8TETFV%LcZpzIXmF5FS8H*1HKoBqh;(HowZd?8}Z+ zcrD+!dh%4`iCEs@&|syLQ$(3vdNs|bZw52FjRN-+cog#ncUM~cOu!^u`9OfQL|gY8 zDcN3IlOhlI1ln3==DbLFXh^v6SyH7{V@77?U4U%W`yM+r zO{}3pS>IOQ)~#H7qUUYFR(*CPAu5`ndDeyFeKe4F1!bG&#YEk=m~@_Z5fvMQxC8&Q zqNXOYNFW_#tjJ%uii%6C--gT#YulOtfc%SAWn4&zR4=a;4bD;@9TOAoP9T+)WrL7t zF%)Wc8mrn7hYbzApguzoif{(B{TgH(nPR~w;A2A^?R67+R~}m7dJ3?c${hlG;#t_%GHoCLLjK;m7Q$L(0K%PDMKX8Y=k({xysy`AO zhydg+A|^&>T2U~CGEryJu8Kw=P*%>o6w9ezTs^Wq-g{%q8`G7<+Mi-E_Lm)7BD9`R zrH-qeh3ijuCtvymtgJjLu06pvGB!S1gSu=?_(i^d@7~MjhGxbJz+-?uEH~OUOs!s_ zh(dx#H|;J^gdmcDpgm%-hnuLvc@_JR>UrlVTUH{U8$F;EwC9cs`T9dmM2OgRKAPq( z|2L2Cr9PMQ@c6Lp3ywdg>1va(Z!rN6IdEH#puKTTmFwHNqX{AJ<0E(W0Wos`u95uy z@`LS~~kA{m9qS(s9O_D@!dXW01_A zc-23KL;^wu*y{@*`Qx`jxMinAwC!C`+ z@60v$YheY6{BPPgs(J+}jR&bw;=C{DM)da45k4T+p#>a+P1$cnq*L>DwbRAx0Otm7 z^|T``cpEp>#6pL6K>SKdoDV9l?b0Ll#k=TQ?}4@}Tf8@M5t=(RT)qf(KPY23-|{+1 zBzE7Tk~er35R=B0a&WqZ`xnMEA4KB4`knRMJ<%!HqJxj;!Y@Hn$u4LeW!o}TOBLBQGZ-NAH3 z8#Gk^p@7eIbWD0jz%ZS_`!vkT+IsGAVjEY>W~--qnodBV2Q?mXKc+2#O%py3&Ig?x zEH}>8nx!|H;(d8KN^zJ(N_n<#e0Bl%0s*%=-n++FZ?t(*QqrUObV|d%G#_8o@-p$x zytZ%edI?O%y(S9K{qcBY^`bq8*LalFxhZ^sh8e$heq@D>e=F9ed4!*KRi9H7Fw^;~SO zlPcob5%fHCv3q+)q!f4>G+Ct@*7+)oAX4NJ)AR9yW!q|XMGgCp?^{jiWs)RSU-PKO zEJF9S{xyQ!wf!^v?Qe~7CD9jg?MUWew?kU)nAiOjQMFZn`Qj?9DkLNnJ)A-?x_hee zf&4I?a8L>TE9DE58I)VqW2~uXcsu zR@qEQDkl#|00aj_BwbdxEzc?rEuVI5JDKXU$9zvKExGo#J~)Id#09EV6f0xJ^S&m9&)-(pYmQd+f`1S%SW%RtvRn& z7ypE^>#583RP87=km-%!;f2-Bb#1Rw$qPXP1Bd-;)1`7a+_p|n4naFv5kjjwDpmwvDpzq7b?U$&WXU}sbDENtzEv%s_3g#a9V1JUyU5g1le@98~7y5(w!88 zX1~(uGYtW^YmR2cw9U|vf)plYy3ZDd&*HBNPQMF@dfkcXw9`ZodMOs~t!)Pr(EcF0 zjYF{PY7!E@otO6>&{CWm|HD?G|) zN|X`uE|o(kCg1prbSsSVMs5a?si?-+NCZ_}ka${+zAd%^(pAey&wCLJza|^ZvZiDPRSXT^ zgoNV61~Yuk$W$WZR@)q?Js}NhDUOadT3lQNW{|8_y(`S9Y}7WjW!1UUw4xHL&V{pn z3e>%#AtYLY!i!(558I7esP|H67OBO?#dR+47dCjSCJP(7fr@+m{^d%bdVySQESVe3 zfKM=8osO<;@6=nX-WJBl$cU;5RZ&l$SV!i6{VJ*#A<+%jDbw!jI9y&S+O`|y;6v7$ zR*o+?*L`|L?^-WCbTN;w`lv)Yidq;#kWcot>N8&f?{B&F4*eHR)^MU#zl}aB^}AIKlvfmyS;JyEvw-rTja!T3v@A0fc|1iT2*jK+gp&&Y@)F_qQGb zj?55AMZF0tpG+B^AaSXozR zDMsr>Z4i9_P!QIj=|Nl85du2+v4pP{CG zon#tuVLhd%_o8m!%ALEO=$d&^Ezg%+`#R}j(Ad=M4@WWB$l+{bu6>Ij@x?#cu?|0R zPGEe^FPQ$a7b{J8^Laz>VEs1TB=p;nM@;2;g3UZ7#;>R#tI{Gd@H-nJ|nC`t7Mn1&>L^m`T~VNtuR864Cv@sLi|eVvMm$&k_}Aq7-N- zm6?dZYqf#`|Lq}o{-bk$|8%AL{m8%n4>mIO?+N+W zUk*gB|3^Aj2xKMTCgh)XufE!kbLSuW_Lv3wHbe zrbEMj4x}@D$g0|;9-M*r^V-1R{r|RS|G%56|2I1n3Aot8BC**Y3vxc0TZlKt^7qDs zjM_N=k4;hz_nrH|Cot1GqQ5UFU@) ztKxx#vU!(N8=?NCo}npMiqN*qbfAS}Uw3py#x8f49=$Hh)u$RT*Z4-BmpiqO85>{n zYie+7t%?_rc;C&MspxE#hlz_)S~#&hbdp0uQz);#L-CI!)RN;WL$vYee{Ca3-8~8j z+N)GnSEABvV3An3+7oVc(EdYN69Y=B3ycmasbUf`Sre~5Gx3< zrN7(ohY3S&`!f-R$_XCdqr2-Mfcl}oxW8P@(;lz<+3#XrJ~~@jo)4BM{m=FV_m-kt zRpAJ`w%z?;9q;cWtf!Z@)R&$|sL!J2^RnVvZ3b7z=%#HEBkKr25VGf@srOFLL9Ll? zk;=cHd-co1YyRhy#)t=!KovP@p>0%rc1PK8xARuS{^GqAM4td%{Z!FerlEiaHK1lo zu28zalI&mIJPLY*_UKMT*WzBcrBkO-rJH-o)U2A^=T{#@b-;@VhYH+wpoUhh9eoe4 zqg)5;>aO3Hzkrx0rvDeNAjh|Dsl3DMecMZxe|`4*U+2KY&1;dmT%iHG{}d&-`lKIc z0If9L>i)T!s($*S)YYF3xB~>m75-Wje;@7FFy;xmjeBUq22|X3Th`3lbsDqn_Wx#~ z;I2}9YRJuvdDC8Z#i&ne@^gL$4SG;PK`6l*DCQvZjS8ptP({aL@@ukS-P1i@ma^cWeQ{nt|f zUp}q%pGdub`Ol`ix@$$?f3j!I3f-%Z{L_e~AC~L>^FV*tA53{A$g8Y%zYMh8iKJ%iWbI#KPOdB~R|0z%ls~mdp2xw# zd0jEa=duN)yUqC50;qKF^V1C{P^>qXA>CU9#GL|O@K>LI{|m!GYw|6AeW1-0)#*q# zW%e_h*5v|&`1{Y^g!)$xGrMVDIDAR?bbycIPinERh{)mKXY!#Q8)uQvb_< z@!<${kes!j1LN50I!8c@u8PCy+;0BE$5FxH1l50Z_JHL&WWbEVeda~dv&DyW1Xxq- zo31^{d`~LuhPqfeF5hW-?tKVSd1hdpTsfkDiq~e;!zXZw@;j22<=uOJzP&GB*KoL* z6TSM>$dX&+!+*4W0yfV|MQ+*|A*f9(FPMv3>WLePX9ya60`18VrO7qVR+OEs6W~SV z56p9{cFqHbLYA9pBXvFdXlxE3J?DB28lZIi)8+;pXfUQdY(oF_YxH}eZ5&SR(%6AF zx)u-34z-J1dB`b`&oDNNSszgj%+@j!g%)2-qv#|f&M)-DjIqX2b+v(dDC`Es3Zj$b zA@Ys-XNEnWuuot>rVN|WFr}iWlex76+r}8rs;hf>PpwEf%u7xCJY_)yQS`)1)IS>L zRlfuxZuy_<=u?~%-2@3;S+kXz{+q$l5 z^QAwlu~Fj9Rd)Zn*q&w~qko$B zQN)QelO|o)v)JU ztZB#lXoH;Fm!2mMKF5nni`S*=PBTEO&cMA>1Q@{Pvwt3Or2%DLJtD4%!iJ^s%o5}6 z3xUJV^CY%&O}d!Xs1CgneWBWU!7vgYEn+?QvWuM{2{+GPWjP+%cbNDCA&b(;A42I0 zw$l&9FaKc^p#4rpUdW*nS7=UOn4dI#Okq(`+(Qf}CuHx&2Rt3X9IZLo3ns^y95QbuG2r0tP=ZAUg0TQ8*qA)MFIR-T$mSXgpHa8M3jg)eiqH z>!XW5{aor%1!A2}l08?b#K1Oja@t@i*hDU)t6QCsC={ePC@d{~MMy|CE--Q5EamYa z2lA}KZ=}v;T}6T8iv%UcKNA9e+rXuO3}D_LFZWPhs$W~HQv-thnQZ78j~KA(qaT)x zOl&0v-XhC&m_JmfiRypCDv$*pnH^q_@gFlFEKdyy7F>FOp}RZA@|PF`bu9EAfMzVFC*24? za7ahDZwh5h8H-0yGD{YYmdYVrI5#O{h_NN3hl{kCBUpdo#ez9-u14v*8*lk;(~d}Vk^5u zoIE}@bjJw-so2}ke{|H=1AbmV>YJQEueT4n&iRs@Da^v&S|XuqGV$a;D*?y)K&x>_ z@wr+%i?A1iNK0$ln(uDt#QA)Af0xxE04Y)?WR@kSrJd1=`PVVk4SChG$J&$w8W+*p z*3T{!PUm*YANk>FGYqun@6Lz(FWP@^&a;;7YFmSfmkq>?_ZE7v6bWs1)$NxvrloMs z!~n-asu-%VDX~W(_nbVE78)ViDc{J^uQLKp2KhxM{l7ge&r|;nPdhF%S&}Fn%1F$p zc>m6VUo@uZ&|yQ1_Mj|5IhI~dxzs`sn;1l@M`@)QkO#&t>cgHC>i(b3mv>q)rcIaP10-H%RXo>f-OLbNRp`#H1BEPJ?^9?KY4a<-b#K~eaj?JL?%V$(G zBy^SH4NH16wf^fce0;c{c-n9q{iin2+-jy58r?nqMJKFB==?XL<~=~I&jVrqqe}pl zY>)iW7J4cE!Smn$Z|q^LBBS5;{|7l;Ki>PFWq@Fir}HoWnLEY%`Vrwd-#u-t0*e<# z?F~av_HLS(B!R;2@(!K2cfX>q=OBG2yZa0*Ei62zYKzq!)$e_{ zZk!qT=upCo6UX8k+&85z+tuq`yEdU|#-8$k7mki9XfhX$msiuWe7=i)ji=qYapOj5 zQq{XJZz41Z-Z}k5t4k-QiPM29pfE{^em61J*vmHSNO7kxpiu!q@mlZq#Kc5DT7W6L zTNzzkBXx;o`*$sXOV9Eq)?+yl>#_CuT2GQl>3lN$?c=8hdZ}TQ8eJ&DRC`anPCGNF z0vEu|0vrj*DOH4X*-4Ag)poNoi{x?S`7y=NKFLxq^c9zDfnPsZ?Q063&8h-Q9F3xM zC&S;+9YPyGk|P9{9AK$9^g zSt#WgEAP!7_4f7_PDicxRVe!I1nQ5PLW5A**&kWcs-)%joyRi7@v+;8hO%<+4D6Bb zzgv%rtK3l{3D3KKN^P4$@>ySS30vw8sRviFv27lPCxFNIYYcq|L1{$C4?K)u&<&xNDb1lYKUqEu&asJV)hIcPDEhsCi+N6}3>; zP*n80kV8aG+%b`hl6!R?y)cZWWkb!x!@2GQmmPMVgPoi_8TDFve?MDo({+zQhI*1m zvPv}1hz0{!a<(-54XWxN3bnE73@`r#}M=&MC?p;Ld9-ou=nKUfLTtgJ|{r82hHoXb;xlR?@BCS4VFlcfCW)f9^i?OMf18WwMC24MArXh+Qz?S&Tm5O-}W~TwjKe=>;O?jmw5!S>hDwCjO zx+Gb~#^w>C7}o#}HZ0VoBP1pA-`4KiABx{pUW(UlvIXQio~2^<9sl#+!%%Mf*s!~W zw<)6mj@6qKEI9++RA}x4HcoC3qJyu_vST5j6NL$EqxVVj_}M8zGmrzoRhnK%$wGk5 zN17LqY)CXwT3twQMQk*W0`@FcCkjgw163BbNuI-RI>2RT`tPE1HivZtJiFFu0_OBf zg2vD=-Sc>LP6&t>TDGPspbQIO=L)noQ@8C3<5t)Fm1pbxz2tR|q$)x!Xr>?4U^Mo& zGg;+!hErG~m_!~r*nlOQLSu{$3qhu<8vN-^^QOZ^=abEXgXn0!fvOgMDlR!XL}y_&0^Jg0?@MhF~RLroE1VA3+Jvr z(%KWpKdWi-eQ8uj)xP-UeYL~r+;nTRL9gr060Z@!eT(bQ1s0w;v+UYH)A01Jn^N@s z5*S;v00n}ia6~8WzUTPTo`qAp+0mn$B7`0rnG#U^csx;9`3Al9s=XPBj;zXqp8d!1 zyb0%lBg%*U0;8#t5|UYZOZi?%AFvlRE4IQ4Qos}&7)>$ND1z;C!Bt*6q9c(PQY%iL z{>|AMosi$~lWH4cLcYAiC3TZrcgI}y#y1LaM zS!4Z`pq$;f-=;tP-_KLT^`U$HI(8dV@wMs>wNtqUpIlyaXP-z2otZ#XSKsDFNa25| zd+$0f+ZlkDYv_bib5z#;ZL||GX@50@8vre^kdhpGkTy0)drz5L93-!`PuQ0$?CSvA z_Vq{82Q6zeQJm1|rQ!RvQ@*S~j(V0K=pmDerA$;HG(gXx;-qZZ5;Muz^|ff$PN!;6 z^pitzePNMpg8RZ-q#r2Ga7cg600buUQ7oW>H*C#KIWNS?WfEdz(G2%~N`FcxIc;L` z&bgn>6-VEd1UjO8f`fH})bhZcWi54X6B$CEi9>h6cP-PGSuty+XSC;jIw^Q!V?pP; z_m+k`mtHT$cy`s>ENp$RFpHyB4`7eQBPX;vS0Y-=#6g%O5=N}YsVlqJYu8Ml1yBu? zXoDO@9gms|U79>BA6;7iDD?k(mIw}4(4ZZOm#Zxd`08dAO%VTHkV%G8PFFZ>^&c`1O92u4HNk96LNWM)L|bU62W*GWs* zoQv`{7zV_wi%jFeSueBxKbV`UKPD)!F!T_pt$Uh58Q_W!Y-jmhhGOG`iBF6Wv7%y|Q^h!=XcmPCUPDX=_`sNtu)srAI6v@1HvK z{db3+t%J%j?(9o~}WDB#fY5l~}%quPp z54zTkUX`7XX2nd2=14alAZuTfd;$fjn!7b16mmy56WWwF!XI{ zIXP#AqLM(HuxQ-9Y_II~h&I@0&&o>Vt44zJnCEsVWMibqbM@I2s@)TlMm1waF)3yr61?s zYlzZivAMytNc-e~@p|VyJ*ynlSl$KzMo7+-5?_;B|Ds8r%fh?Y;IZFzyJdOtld|`Q zCy@OzUMlxt|K;tlaRqBsso0e^Ep-!Oi|xDS*n#B)H|tTCDem zK6s&A2+KNjQYMFXD48X&g-;5eB*zK+!!RTOaj@r;H7dEW z?M;J`C>B%UvQ^@lHng}`*ZP)NMJgm9SDyHL-ox&!s%mL{u-=LJWbWODh6eSv$$k8y zfV|fEKY=kB%({yOb4r00^NVw+U4M zHys;4dP@F!DI8MLog|Fq>=PLnzAPg%euG~`Mn7ulvAU(DWidzspem!;)9&cKY%S+q zTX%aM7n?dlcEK|^XxEbMY|2h-B{afwpiEpH)i>INC&!NAoO5;5_njA)KPJff2d|8o zavkaIS5adP|4<7{dq48MH3bZgIJk2V*<@vFGc~;{5vxDh$_Rq2%#4?ZM8ZS~K<%a? zkWa247+WgI@gLzmj-SupUas)SFV-uvMWg6K3WJS~uOH#>*G+BUD-aX!?iK>ORPRd` zvTI#3f0px6N=kMD!cH9faO0_K!?bwu{zr7QvT12+z zK)k>yPSwrQ)~7LhtjKH)rj5Rt+pT9-)eeAix}W`GPHBh)=IuR@S9m?PRjij<1YivdnJfYY)E_S>X;GJ5wGn3aKAtk}%xs z(8yg=$8{Byf#G&7IHi6{()cqW$G5HuWf(!o+w$^6wFjdkLCp>#gt{_w^xLcLQ6=JD zj74L+nq9+Ng?CS$5cK-|s-V`c%6sfrKgxDzeDW}$xyt(b4xJPf^a8z<`Ua1Z%PXqW zz0Q$)vB^bHsXWNhOGY9vb!!Vt{)oOU{@2<49aZMobMFf zczU3ez8wbZ{g+eD+6&p1ot*5LftslK#4M2m)Qe)VFU7q${Pc>Nni@;p*4O8CC4c%6 zl=P9OJUHcmOsiDVMUkdXj@1Jw_6i)}iEPsnZk@HOw)0hIb4a~zYbi#g21jL4W6?f! zdyn~X?PyxFN4Awr0DfOMh@sb;#tMTpMG@dO7aemRQ1_0UD>3WC$PI5-qi(3Gs@gSf z90u~d{AjMSl~INblU2t2ZMm|gHw!en z9^Cb-ocXeNWT_MsPF5&u(@}f0 zJgr|`zwowZ)oATwDxq#|USetEYJ2(b=L$+WTbcRL#!ye%<9PV!hsQc666-k{h8M?N zyf7ezkj?2k%*%w19970wyCmh62M_JF7>$i@SGVgudv>8Ec$!XRAgOwdr5NjI5US3_ zi~W(_2}9|aYH;4C%h{LQ>G-PDBO0}I|BN=|$+_3=yc=#GYR1m#sSulmAVJqhP~(Qa zzD)=Y&)EbK`1l3j8)1rjMAAm7HUaS|tb;Db*}irW?rY!pn4-p%F1>W35Bsnu z?@fj?q-L<08iqQit|4+JnwF(4ou=S+3fICG0jGo&$)(GH*zo4#ncO@=hGPxRah-K& z18hOh4jLt^Eeux+@RgXA4Y2zkG=Q2!5m$S(zhh4H3BOXG)jVyq?epK&GL<18e`}e~ z5O8&ZqJDW^G%GBcY!9*wPr+TlK%?rkSb<66fMR&v!X{_~I?Q4}|FO|^qI07i7%mbr z5srA>Pn`UA3+_Gbh%9e($Ei@p&{6ra=x?lJoe$&B2E7yaqCsa3;;&VqgeL3lRsft2 zQqj!v6HKu5H@$9R&BouQqe)>P34xs_T644kWHka7KBK(S2nvarAFa3+v-6|o?pH@U zWLN_rN)Nq=^O%ILa!}dK<*_U}J$Eabs_cGqG1%SOjyAPFe73vX=KKp|NimNrOVP|0KFK%L?d_nFYoMVf)tl(uG8s~ zThAjv>EKb;gWj7bGpG_{Mo?GO%)Yk0Egu$(Icp|=YV=``7=nzbKlT+UXkn6uotfJ1 z!de*q-7=ux$TJAIoPGh0_IJQqEL`l>)A33;OTx;@vv-O6f!Mt{5iOn9syzqcp9NH~C1Hi@t=1jWTggP}9| zj{yJexRn_m(k}p<`Br!L?O5)jaCl4D=ixaXg9b{u)4Y8uh#^eZnlI|RD!_5D7K<}L z>P&NOM<;6SSt($i-H<5PQ;Q~aWPRvMUwLcOUFJSpzc4==__0VHr3u-q5GyN*N;qrZ z(}4>=b)!uggWZzlZiR<3kKt&0gQlB9m05jqXQvk0 zgB;{yV3jBfpBJ^d4aL5{-+68B(f&=c#9_OMy*%LI@cvj3%_4e4n{|OCnPfPF|F1>V zKlOSamrHx(6hV`8gb=x7H9aB-<=GfVzzbC+sV%(HA%>wqd0*G`ox9DOqzP$IUPxV4}0^?(FF@;6;Q}&!IWw?b$0O$eo5Y2u4=<)aW3oY*48NSFD z(W@+LdH;TaRh3-<&cE$;S?WSylv~4en%<`{wWuj_h?Jc6-dRAo1UJv1#3mJu>hdtc zE~W4rpdi7_et#YR*@#RjX>3JFqm{oYnD_g&<9LIYd9jkEUpnr1YS%QY&8y}MIHbK} zKzRL3U3OJrMX<~e-cH~@I&p9I25>A%_fOT@j6$cNOro{)Pe+z(bZOX^WQ=>u&yj7A zy@e#U;)4ZG$B4NuR;So>lFC58+$aVDDFqzW#2x2SRc@@IIXb8W=+3(mJX=C@cbINr zZ;vZXJ{sHK^pM@JXngJ3v(4@S>(m@=JrfU#|6NtsgOL&|eAkiAS7TX)pjnSt%SNqF z=*&Zjr7GpwJHd>`S3_SOvZa+zjK&@H0lCy)h>J&8YFm=EylX+ZOgf~-1|)jToXgpO)1I z&vymCiA)BmoCRqQkt7Mi7z5dwQE3(JUNN{hoFuoo)jhws=ywc>Js*!S~7i+Fm_%k1JnwrcDz-ZLklXQDh8F164nUx77Qf&g?Z3)@yqr@Mr`h_l1}u&%`Zvff4FN9|J&ggQIHec`0%|uYY~-$VPp00ntTULutPbF#&l@2 z1@l>_-LusET}t7Lo^yTDXQkp@?C+Ibc*mII4+hN9!e;2%dLL7%w9yKLR_S%x8>2+n zMmI%{M-h9~xZm_vzkOyK$RQyG8vA=d`|D#P%)Nbiikn9qBYM-+s4o$c$_PEs$PsJR zBP3V?CxK|ByX4=k?URTr0GIzHW7!qg0QkFmMEXx!x$igg_X5^RU-TIN5R{lXcwOspZy)0+ZQjOMhd}GT#!2P?%rw5Ksf(_9Y*7gABp-Zp(Qv$01)8gMIG#7|H z(3hQq42|Ak2e)jHFkAHE>w&nvA?dT_HZp{fTG@u({tGM&np<;i7fIE;SBFyA2T3U2 z^a;K$+Yw|NkB+6+9M{GEv1QTi_29&e)IoL>CSy&qGh};}a;Ew(v6l*V$D}Sqw05JsNN5LIE zm+mA>@zF}#I`=+`9Jw}I^LB`9wEfG{e>mR((M*p;+CD`o-2LPD*Ohuq^fM zNUU=1x2=UsqNepzge+Nyxj>ta;YYkOhM<;RgX#I&%qnF3O>&^Un_HJ?QjkfnJHyS} zhy29a(eZL=|EyUAN*cAy1SJokG7kiBpke*S%2nvZbVJ3)Q!#uQFFci&Ll=QfLIZ0M zDC^qf9cPJB>0z2`l~VkfGo$;O()}M_e$q_Fu#cXkEMO#;-d86@v^Hn2Eki>lRfWJv z7w`2eJ>H8xSH=A(oNd-XhHLl^uG08o3MlE%z*16XXCc&RZ#H9Maw3G>y!`{X0HAos z)V5Bm?`8?kOm`q2bgD6*-tya`8yF9!4`3nC>z0-|;XZr$YMb?AAQyA(!S8Azk*mMy zdhYHc$DWTXMT$fW|DKp5e-~6Xm;=8OQ)pP-wx?NVt0tO!p<_Su;wM+HDE)S51bV7vVygP@l^oUC9M?nd`RZb0Nkw56T)v3FMHv#m5 zy%x2>Q6ttP+-^6~RN8-8df74^^0lm~$v1g2I;J_BvmUI*SUC(5K%pB8ECAm+;uP`1i5M%96#c{ht8CsbtT_R^eHh*eb_jG45(hSn~6pLcn{kvlwZ| zFHQHqK?GCVg18dUjm!TCVs>ThM^p_ptxVBw=~)t z_l@Nx-trr<#AJ-+6@L8o8dl`0P~9Ep-Nq%L%Bu;L_vDNAdXljy`oPdx^g|c5S5yWY z+|V?=dhY2Q)U~s=4K;5kw$ia)IML)vb8u^_%9fVy?Z*!2XbSS>YA`d6GVNd&#jX}puk`ri8r=u8 zWe@ZDLowgkYdgQ4%cuWWX~`R(l@`mNhY!cr-h(VsKE8cS6*ae0vJo{^+d;Y;N4iJ* z`vVXXwXm#CZ+(4`s}I8+w*Wxmv>Q1HW$7>)ik}!pS4ug{>Yve!%GJnsjIRlEJymjK ztc)zDEuqh=ziW2z7r8>#(+5U&*WTY0o5Za`Ao^oO1_lG_W)+PcIaFy-lRxd~+`ew8 zKl*;I(6tUXI@l7ngYmBGcMoqA4)ggrp|~?%DH?m=Z1g7+QEU>}tMqX$Bm=cYLy9|w ztSKvqn5wIVN9P?hcERSMTb7yLp^jrxaBb)2$o&c(ZEvg2L+vZ=QEKMlH*WO&HVhlx z2Pzz*GV;xXgHu|y;7R!!w(+JKH92d z11rjKj=5Mz<-J#jZqCc1wyJ6WZH%7*V@!JZh4^seBj2FxKn}b5-0KaMzK3j6&+SYw z&%w|j`9sC5f9eC3vqLdd#t&D4X9lsO>SMnfxpCC*?tY*}Z0CWg>?Rq868Vau$wPB% z&o+RWHB&tE8bcZbtdE@*+|*gdw(@9Nn!?~vVt74{nsv8MeeBDZH!PN&{^*w)HgXEO zXzM)o`E{Y11D6vWoT?`d;CsmOX`zZYp1;R)nZbwDHB5DMo)(4l$d0X`wEKWVSF$QW z%_WMcw-0i7^%H^bA8cofuiEmfw2{+4Gd83t3|IscPM;*I5+iSX!EM3^(f%t>0)ICqsByL@ ztn+8dDvO|Dkv{BpqA0H1XORG0FuzDHqDQoT6PB!mv5hu5Gy~vN0 z3g74yyplz&yvU0)zbt6qVqaeLR6wh~bH2r{t0m~R{8|8>^g=4wh*?sFi8l?A8C6Prf$iS!3fj<}+dOGhw=o{Yyc;sb#A4l1|Ig{IIz7 zb^Gw4Gb*01K#k^E{n6vlNWDpF_a&uqtZR#YUNk`&6gb#bHQ30g(RU4b6kF9~NqHiE zOJx{oY2`m|4vjW~g?xK%9@>4{qw!$5O_de6!_}QhQ6*k?&)xT4d?|E69}Epw7kIT% zP5H#FM$z-xS_=9X`48%TcjI7X(DSvghe~^-4mU})ykA~kXV`py*Y@N?+kZd0G4jLD z3-Ukyd+wJT-yJ;o+d);mdwL4JXR};~Xj$de^V_-}YGYZ^C8a(s>`j&jP(Td~qpZ5H z6h+u%=ErVDyjdQDv-A!m{d7kS@UE5pVtZ@wg~WiUU|Hx+2dcBJ9Ev{75YB?v z(gv))qNg zm!Bu0MP9w18%=MP7+kc8ii%>q^w6Tbp;Cr47?~2Ic|(Vu-E3zLuF<#W;eiiD*l3J&d(u8U>s@LHFMwTG?4YWdHca!9S=Xfx^O<1DZzI}aH#!ex0?4ZDI z{$I5USK;BD%(N(W97CBNt2hHv5&GwSC!b2PVr(ks$C%A;;`og$(Lku-r zj@W{LUNf}TP^hWABSX}LGACQt2DuW_R+R(vJ%sY2A$P0GcdAyEv53J4>0dInzuvjFLnD$1yh15jr1`+W&*=frql65sdD^Zv}SnY^XP*KUe<}+Dj zS4D(^o$;T)eEITQ@>Th!OWch$fyG)e=#4(2K^S%Bb%4Wm!+?F@5)mOrmCVozJ-5Wt z(cayN`F5O}>RuQ5dHQBerU2w?p9ZlEqt{^9kJy{$e(p}(c3=B;flQ(Fw`~*hkepuO zb=o#WTz`~ibc}Cn^C-!jyZc(ku3lU&W(2cf4c!cF-X=t^=c&{5${fIep8nuTTaRL} zxOp-5(*5XaIQqXJW%yEOs5}Tmqo25|?TXRm~eZ{~T^v zVMQWAI46&1RPg^xii@K_G^?z9zOAdzu0bWzUsD?^v^WL3pOZC|_dnHPb~#5GEBUu7 zGvY{Yfu5Iejedjngk4tau7^`v-H;aj%|TBIpK=;P$cZ!Ru;qd=F1RzW%Vb=9@&d@* z0G&&qjCyNI?bwxpX_<(@33#&@q3nbQB(yjJ%qcjxSc9Z1*Pj=TkG!L| z76IB^XvlHP;QFwbwZrh<_S@3?b$e+70+^g1-HshQwg{8pUgr?U;A(TCCZ9fhxC3E_ zLju07H#l>nw6>coN;l5hBmD}U>{h}i{ccjiyv7lT2sVQA{}m#7|Jp zDVwCp{UOC$^h?VHIs^+RCgB45M^BQB`u!ekNm_fK&PFOixtwj+ZCYOQ?k(*c=3&9b z%DSQacT)fifyoW(r-duTwp6;zRM}gJ#Pl3=mW0E`LdTZ zTc}nK(DvO4;Ee`afbI?XFme#wr!qG0FZp2eU%S_3VW2eUb!$4S?!=3F;0qoZd}0^`JdPHGni>CeIJYd#X*jlNU4h#2N!W}o#jZDOSvxi?;G2YY&| zPF{hkTb2;}#Rg#D` z{0D?cv+X;G=9L~f%;(SfKzg~^1(ETPvsCPu`YYfPI++C?yPlJkwi!Uq(*BS$95O(= zBv|wvupATU)r7JM@2R$E55hJfyeJ@$d3PJv;Nzj>*CN-SfiQy2JY-k(#L`kMrP3~H zlHy2sEh6dN=8=WI?cH0j1=S2qZN}nYe`_Qoh`YBBzYIh*20N? z$tAQG$k^0xy@{o;w_L$*%d9GzS09=VOkW)u{P-+^@%1S#XnULf`LePj{B~jfEkjIh z#5~8MdFSonI?s`}G0c9fE4{rl{zGOna0oEGI-V&zcv`=$M^*oelRoQ2DAzYm zDEHx~So^`-jlL|CK4Q?26BH5`C%BNL?mv`76(|8Ro<)Jb;_gX6^TnBivk`u`w?%iG z@Xap4TPsn&#>Vd1LWiE&wuama^PkOU)6nWUG?aRtiFzj^-Q(WUYJWP7+kWy;S8n7a z(-uWrSpmv|oZYHgnO?hRRoyJ#dmiahStExNYYqPvR61r-H>IZ_+AVYT4l1zsv}D>v zxwV$?5D(GmFjJUo*Ye@y=;w2JI65XDFHi!#cVqFgP2>Q(0axYQ%uPCRsJG=R)?*EJ zvY9c2tM#Llr1nk7IMvFc!u$u9K5rd4c6n&H)$KUje>%c`n(A&<9l7!;6cw)d%28d( zgY$8MOc8^h`r>`9j@gbgE8BAKt*sMSp8K7SVAGl}=t~rvxt$BddM6g+MFm7oCJ<%p zf^JJq5Om=Ry*nWJ-9VpwDFz7JnVGRE+2l*cm8jh6yA^Wh->=h_)ZC(04FCJPVv3Rqk^vCcq5xXCsz z^pZo=B60S!nE?*r_!}LYI$jOk3N6vWkR`G5UV+Gi2M4z^g$iC)WxVQ%S$$0Rm?hwW!IpWd zlOW-T{oL;B%giM6drF#4>~O8V>1 zNed}WAW9ldIC6cR*L+pk#DQ8M2D+fBIDcb|Tq5gp5y=iF z;}kae8y&qjTepWe+F6{R(sbE8V6J=(Vj`{>eQpxr3>RCL*!Rk|!bZkz1Qr?@NZGD)W5hBC zO0_h+*spJjHRL}ADtu8r+_&%OY|}-a8PdlY61@dwwdPafxv+(0Ow74WmR`E7wgj>7 z?qrPX?K5YbvH@JsL^TqlXWP!tvS}j6aR$XfeQE6{f)@CO4m+)WOYKjK*)0^)E3i?o z4zz2Sgy*z}#_}M1+2)2==&V_D_ASFnVu9cGBA7>Hpdf0oEM}8A$LwDRzCBYsa;d;? zsyVplw@yc(ZpE)$G5P$ADq*yimwmIDp)2Y)rHV;Vx9@NxKFJQJ6JjQdN zi2fWO*7IdPOw?qHYZpjlOI%^Zdawf|7k+fPK#1NN1ugH>{N5CIjxyAG!u-; z69_ns-eU+=8WlvmBi){x>sitS2;?a5KYdt!e#a3xn}`4Y@OAF8W1|cvVlmm3P8i{N z^T7{aU${&M+zY(hzKut%#|N+mccEx@dZm51JA@QI`zjf-Ar{;}s4No7y*gx*k-oZ)ZRC1f+2#==2Wv!f(HOaCQa$irn#n64fSj&jYjs+S=-hu|kb{p(zmT=| zy|)#0CioW-mVzWottwR0qhiIY+|Q?Zn*wX{v?N-@pma>XPz&Z>mv2>nqGQ2~k!+XEmx)xv8XJR# z>F`fD`QXq|&lN+|wXgxieRD#`3B0q!+X>&7vpvNIQfc`v$C{JCuPdhXnn!~jI?&>_ z^$`!9wp*MrPkuPO-j0UoYH^tuH_r(275ePEWOv*ooybEcSkCtB;QGn=6gDWuD2Ulc zg%h2%_IiCIBbbZgWI7#l*lFi&Zs?+|ZHsRVY(7Z@$FQbH`Ecf?oii01)@sR8)z8eKeZ z`5`bQ8oMgmamNn#-V$=mmC%@bI}?r3Y!08-Z05GJN5^nE*DA0J50jxcc|<{MzcK@C zC(vLBiAJ98zgeSlAw{u2ZTf8HE87T_@sQn)5=qLv7c|82yHeKXYD0X^FkoQIERrtI zge+!xfEzo6p=qMTAR5|Q`}aR(valRYc+;|uZOiV=yjpm}WX7`u%x5YR4|8S~XOL_$ z5dVDcM|dCTvKzz;@s$IbAZC1l_X6cJoLJ+)*!$vJE^t|L)^t%>)NF9loN2jsPPQVr_@=gt=ZxPelpw|_Hb;8E=<7y7aA(O~+QwL2Wn zerTSD2BWsp7Nz7fS)ErO3jhNX3uTtZtnRliF^xz&?cNK!zxE1x z9d+*MQ$rIK2b5=Ti!U_LMJsyKlDRTrU0jOLreNBCP1HTwHq9Bs!Q&|sgXhwIwt$tm>~3H!#G4150;S+Fa)Y=T7^U%28PZ|~oJg&v8;jbUfu zgWCZEROD=`pMbA{DgDlYIKjNthZPO&GLAJ`h3D04J+O@{!Xkr%%8ohD60jwu;ht~( zLtMj^W5=utCjww_0P3{4X$Kk zzE`&NQA2ok26r4&WFaL|U*&`#VWHH9_!+vSX|tkS?38J-U99WPZvwj?1TN}pZH+(& zKw1>SFd?cdr7bS*Ue&U4uP^(FbOCg3BV$Y*Ym-5Tcb`d%qD? z=~t2mQ)HPPIyCl%hsIU8$lm@@e$)_4k8(3OwOv5xEjo~OMkZRITQg)S&4(AaLqn8I2qFSPq7;LOtJe#)^FpQ)`6 zK0(X`s8R-csjGP|j#3v)N-~d9SEFw2p!2pQH3j(OkuS%4v|Z&LmdQa9f1drra|PN{ zTZ*n6yGFd1pTN!M@tbY{Spo2R-q1QX2Lzl0!>z@De&MHX^DbOdQoREV_hRS>l+)#N`O(ZqF{ifl(7xly1}k?XqM6s!c{4|5uTjng%cBY&gB#B z1J3WICZ_Mv+Sw?;xy!|RAA0t&o}l#SC4sF=zw-qS3708fOo!$ei*o;!022rNiJ@d_ z)F@6lWPmMeTdSg9`*6N{LqJBwlMUjjamsu_@2vzukBEqfLuv>3GM)Asyn%%KBmY(n z(2C2wIFiw=6B!O6O+Nq0x!}&{mQatyl{##xgREHC?ByJ~DNM$pY2g*_@UsV#m70u4 z!Gk&Fjr;gYjGY_O+r6uBet#`cVs2IPQf7ys>?wgg>U4tyh?IFWcY2Q|Z4CexQ<&nJ zM8H+~MRK`p+{>3Qji$E&#P4$v3xAj&(JQdX5^fJ2u7U3q8PBS($^T9B1csZDC# z-7w|)a+VPU%^GfZwDMvVbRE4ejNUA1-6)pBjKMiCL05Lk1R=TJbz(noC_2nMEczmv z&4#9ngTbEL8?$+o>2bk&|G)gGRnD#_5@;~>Guc!qJ#r_i=TH;4*$;Zh{?h>>6LOJn=wV?Z>(hEbT`#b0L12`zKJ2gLzTCltND_FYBp0zrZqeVW!^bz)wN$I>-zdwTq@7@h zIdfw2nJe(mrn?J_pnfDe&rd)@z9x2Xx*>9oC}#rOrLqZGLB$@UoCdqgo2-tG&wv(R zu!ayDz${+os1WxWDm>Yp@Px@fv5zm822_4cE*nqX&!CkOFk^00xY}q zCJ3kl2<)Uv$MCQrHOfpYXA_-*iKQ*`Xj~6?o0e(ILNA~~nbX&t`$C<$-s#mU;iDXF z<_yVgj};s|W~{vUm|s+{*`iOCl%H`}F2>)TF9i2dJ8e)W@8-*tKCR9pe>|kOf2Wq7H9|zvPo^sRqb8lMLCDi z)qQGtfS^_bdB*&ZP+&NEw70gID0K6=wpbm&Zk4i1cq&?Vr^d{%#z9zsbJ7s+54!6- zYOcPcS74!EW|7rYKIUJH_btL#mTHEr9*W}26$SXDY0nTn*j@Z6o+O89tP)<&L37H1 z3@Qj|u9exggxqRJ&ke<}(J2sr&*mtAAcYQ+PLa0F-p1YCXPW1? za(IB*eYSlB=mKyfX=6d^)y(CLAX0dH-pK0_FI6$H#6WM}{gT#{w2U&^0ifn`z5&<2z@obg-~0cQ6B=F}J#tJ=b)g;1n4aYlM3|gy zT4qQr@E9M4za7EYhxM@_^%dHT=i`*~AfN)|bAy+<9PbJJaOl}{Wy3?apfA80?!~En z-Nu=qvaDPJ>=N7bOUI}~e2W^;P**EyK||ZtmCE{TmolvGsJ9Y;p+#oYJjIrsk+{Xn zhTIQNUM2#ZI%$6Cgjv;Au^Cmr;7)G0{i}^Ffl@Py@kr2h-q~DE9O_E-j+L}z8?kxk zvywc~FS&iB#6eiE;!3tvtRfI{oZr3y+wUF?94rpH5KD~gac~BQtR6Q>cpkmC|1b*w z9iRMR;MetGK_%OrNBQK1Qlk%;m2Y17d6#!YLFp6VO{oRNutF<)v0W2S`|+L$uXE}n zRnH=V9_&a)RLjgkz5&rx{p+icr7Ux-?T69{PHYu(I!KE z-=nNjKn2Vw=iaOtr&@tygT+GHCXJ_g2@ce6x7w z>KCdK?;YR8AAt#EXF!gF%Lnv8YfzPTasK1KOs@QMzF&DiI(wtpUJhC|FVM1Kw)J?8_#>^g`Z`a~oT6;E&*8y|&i?bpw3y!K(@g>{Kn9_w@&_KQ4xk zPqf&kx_Cx?{I7*1{dY`oiYMn}VcK8egD&qr*=`->yXU`*uA9uIrym5_S%DCM1fP8E;TqhkEQENc?4 z%pwjGzd$%X)%XKKrwZ?9xKbcS>4ZD%P!=uz9xunQYuX7Hi+M9@ZUc+?!ab%D``X-?fVfX&BdD~zL%x4R;c zb*0Aty)$QM@o+ZGu(7B*f+J+kS}qYs@|XVfJnKqr(JLIiStE0D^F+YoWElftq+E~lh~e{XM(D_-UW zLeIeE?)+<-8P`uG{P=V1A16VRxhjT~ja9spywhB3L+4?+Iz&bamw9^5A8fNs! zSK&wK7$IrtlyBd@@tD?2Gl)5MfJ7|4bM9EeRlvI08a#;KM8I_u^7#>Ib8}{Qty|sH z)D&X`o~D@NJ|tpCx||$lBET2aB)}5RJ0CyfZN|H&AU`7ReK_Ap8A9X2cYs{$4K1-x{wc0M1wC*^6trj)@El0~=qMT|s4nR$!q5 zI%*69s$XAE@8D+WAY z+Ag8r8{00sFtN=N817 zQ3W!U56Z_TfGm{OW@c|kiy;EX7RKwOz(E01@REopzf`B6-65x1)qn?wF`k~N%K8wq ziQCJg37~+aRpp!U@r(j{Aie(rYoY@H>u`{~trCv68bIj)fmJeQn$ z`LKA-b$Q6wS&En_bLjvIR5#CZmtqA%IuuAdOWN?gKDV-a*Nb)Ce7a6R81L`EBMRx1 z<_feAwHWM+T@}Ud0hd5Ch!p@#*EY2SpC73*S`7(oZ6i1aF5SBHsvuTbVt%2L;CKSa z!*zm@SWchluh4*1GN3B9msx`Z&n6FORP1F_S4|P}^PtL&JFl91UEEJYR8CxgK+AiG z6osTBbU;Nh7y^fF?TgYB%-8=B*(5l_&_11oZUb-=nRBbY74zubc4JbK-VBy|!b4@o zAz~o1Mi26JDiQK9YAS+3EZ3MfN1wU-MMS0H@a>(?$kV>JVyQRQ87n60OG_8VG3tbi z10>yBSHwfGb>`sm-Xl~5$o@Z9=T3LERH7c=&!xO zj;HmvahPD-mdAyYBKt}4g6`$RhBNCCsmD{??I)uUPBZq=~^p!@7n8uhi%7S z_|Oo0S#B<&ix6^25%QLyb`AH!Dk~PahZV_-!pZC(RdTXuhtg1MD)_|Qw#Pd%&0^*| zOOX;w?*ZMT+iKNnB7k>#O>}$FSLK@9|w^&O_l2d_qdKd z_?6;5p%YL;)@7N6Z9QX&71Gma2rcyiY?Wx*cC%!Ey1?N)Bti4n_K~n}2mimjM~*-O z`zAi>O!hs+I8Dg%&KNZW_(x5R%r7U!tub{a!e?$K?vL(Wc4}DVjLjSD{a}9ZT)46I z*2VS$8opnaZk{#}Bp{rJGj2d~ecj{pCh?~_Zg=b8PlK*aq4to`eTMjj2G*ht@W3Vn_to5a{*o`7Ui$&T-r z-bY$)n?e!-e%UVIb^$6F2;8X|ZfrJA2S$n=*Pp-gFyq=YVA*x5oBnDJl5pZxv!EgbWGZ_$(AQ+OSuE}n;xuj>crc_4S zk-%szpb&rerLjL>+ZX8m2*b^1+~dBV77u5knMel$@@b`)W;KtnDI(g@Rlnc)F+bOOpaspd6IWPLtK=G zzE+r@Fr&1W;FF_y)8Bs$;OBy(RZib`5QP$RtNXS{up4CBmDlpZ0l4=jW$IFb?t{<= zcvPEz9qzy_MVG$K#Q+9-gq>> z5hl`SBc~~*!Ifty{oZj?U&x%Q|BP;10izb|X6*M54KEk3!gIav5H!FMq733yb6W&+ zVv(?Rakk$-6GVh)ORwZx$M=TNIW{6fxTRP2t)oe0l6-|{hsWrAICL%J2OcHSznmM1 zUK^RI?1oQ>m-w5IqgqRVA4RzuJDxaFpo(8t#~li;hZ9`M5o-2WRI^r^H`Fr5OAlfZ z1R#&Vzzj@c7`AtzK|3TrDllLp-aqweLNRDZayI zE#LBrt*DUTOCZbzrJ@KpV==^frbX{m73-i#M6u({MLd)Ew&N{g70cvB?h=2hwGmGn z6S5k*3qFyN+Vw{tk6!z?i;xarlm7QX;Mjk{35wwE`xwYhMm6@b>OvAnb?QIo$#aicxOw`A;9Pxoly`g?y7 zWAzsKo$=nki|*`q9FpkP1uNx&u6|vT8LskGkFUvKI1Np6AG`vM;+688PII93z+4wU zliF5*43?fKyJ-O4+HkP6nYWnodmaS({(`s~UYRYJHn^OY&Nf_YZe1UM56W6v>-f97 z-Ar9w5-RJxhv{8%r!g{mxVmJz)eVhmAaBA~@us_N+7+GDTDR!d^5n=-Y^^wS-F2sf z_-@Z?R`EJ%hq>?44#QEla?AU+fnb1%8*cv&Ooa_>Apw>WPs7h5mbN?Uyheznw)Xw+ z1jVA|0`1jN{@sw6(B`p9Z@BDAI7426mdU1hcU$fL{+N4ri{I`D1D4Pgwpq&|bNzB^ zDSOT4QfE4nSWa*ZmRRbEKBzDAhA&;YlDcX(p7eD8Ir|w|(3RaiYHA40#(H*-eeSqD zqUPU(8b4k?!7v0Ks~lN0CKFZ)kjlZqWv(A~SqJ3;7Ev*wleClYrQPw{safDT@HOC= zZd~p*Mw{lQo96PN+Peca4few7iX*4Xq$i)bxy@Bud)8bM7l*u`eySxHyPPJ&y4@B> z72&m%_!XD-bI5N>EI@)~FC0G=VvPp-pF5ruUgrDEV7gjcyK=L;ojYI)D39OMlyVX{ zOciUD%YOXbwO?!5S}$}PCzF{+0)|F7(!5)ako`CFaZ7C8T`cvB*}lgUluZt{{>BnM z-sZj>>fPR5%c<_OHPfWJX|FOFSm2kc#xbg>P`>hEaeJ2+!?I!xavHU2r6m|vr+}{+ zxw*fp_kBIn*KdE*2qOEeHAPB@K?R3KN2h;jQ((b8giXP!?sD-ua8)emY>Z#Kk!gB~>ej7&?fWP8UOhWzYl)|LvQ5qtr`>xA zxzHs4s1!HX4T%Q1-W2vun_hMaDA^C}cT01b*qrf4bbFZiH+amxaJ|AF{ba?fWUUbF6 zYN1(;FAR5m?UHihp zS196L7HiL-*6gM{m6&0Hi;=iW`$@W&Sv_^K<4aaCbll)@df&4!Y7pUiGPky01b66b z!3G6Hdd|KO%#mcYBYD^iY+Qx*_Gcbt67ff!7V4e;`($Nx{Ud&~F*lO4AC3$jKsB-J z+B^wBulDxEJSi_g6&NHlfINkk>d^t-*%+!;>d0ec_j1Y{kdZFsmb~kg)L#w7QG9~quc=*`%ZlPg)j#9muMmt7( zQLD}$S~~2$Q7eDbBS2xv0rF0oL&_xuKUnmufYomjBOd{EAMg)ir$GXX#6+yOS}rr8 zOf@p%&bti$W%NY$+|36{>Mk~}kLw4Q^Oq|-$J$OOVyh;;9BfUb!(7q5T8wpk2V{n2 z;`rT@vUDow{_vR;6i<91-ow!}*wKIWN?n63{CnA}TE@MF?`~{RJ%UF`m52zfU8+Rv zbjY48IoLN?1|n{Kui8<3{^BKT%MEXT<6fDP+5)O^^3a2{%bZ`FdLRjetZMwQ2o!!mo|AI~}acF*Z{i5P`i7y19 zcD>oE1L=w7m3qHbmn1{&x3r>81DIu`imAl3IPAT%Ny#EwX2m9TvrumRz08F4qy=vx z$fT$|!SdHP8*QZ5zK+cHzM^j}?B=k+&iJshaA7(c4!RhyxBj<}FQG-YgoOw{GZfv9 z+(e#!(ImsyuCCq}s|a#a(I)dkv8%JJ{a==Pkg~fLC4>L8Jn>oUJ3}_+{=H_DU-Azi zXZMm4hlSV>k1VaNu|21b@Dbh_q)R!Lve}M*`pf?$q^9Md<-1E=L+QbtFJ<9IQwxKO zbDs;MgS6XqaEt{M+F^$-1~iP1zI!0T>v+i`7ye-?qz&pZ7q4fWZ&Y()94q+_nwmO( zk^z!pqR9re+oY-}c5x)utsI@ZtH=j4fBJQYm(k;kAtFjS;(e5WYb_7g)rMv-ZFHTEL3$?!z z0l&8AY~@cw3_Gp%W}ksW`W0NSnkRR*8`1_sxd#`#ao2Zj;IYzA?|k3w=zRhx>=u2< zYl8(q^zkF%7Dlcu`lkk8_b&$4Oj`iF{SY@38!~E6$ zC0Zb8B64Fda>>c4YK5NOp@uAV!p~$)UQRD!?wLe7&FGKx^n$f6Ne{Rib^dze8m*lD zmm`hBiZkTd`jgL7MUyEaH}JduRN1H{#&Bw5=OkeO@lJ)f&@p@F_y$o{M1|cl4?A_{ z_~v$fhpWT@ah`tFVJv>;Mdy=8K1$Y9co~m}1cub~d6!D^G2bx|DE@slZUMZ0&&R#J z>i%p=yUk08*h0P@*awrM9sfg(2QTl`fQKieAzz7$A~MgkYskYF)H&3W+3I}y&OAq( zYu>F#Oa6G6$majvJ2_zElaMPJ;W4eO?lSu$v}-Wsuj!ptF5FxyDS7JelLLd_^mMdB z+uX`U>M9-{?0HSU9ZY^?81r7WiRqoV`OaaekX~tEx-7B@8G6$%DHNay9*VIkLzuDB) zx;msker4PI66Jo=6zqPcLZfPrF)mD$+*XlXM9t-B78#lLhTy&1kDBPV;M++q`T=Qz{Iy+fcQk$cvi%ilt-<duq~u45=fG97to%CV50WKNbZcBK{0v43xk9I?3cHmTg{@0&l%k!t;bxH`8m+d z(Piq{EpN9tOaBuQu(lp8?D^zDWDhP_9j(G>9bBU-CjC>tWRK<+U;l}}Y5U%2aR7a< z9Cf2KVQ^q@PL3rYb4JdjQaxP<$0Dt2-JP6uCFem|Qs=8rPk<`UCRKX)tnNjE1PYEA zefJ-=!;=18*HNF_-#jKRaL;de%vOrbuW$9zlBtn1+1T~bLjKr(3B$e7O}X6ROF5FB zAB;QEoLX`1Tu9Drk`&Qn#;wGr2_nLH+aszg!S|osiTZS^6 zt{zS*EuSQ$(X&T`sU4|yT8{7`+X1c1R)DR}>4wC!6{FEiAUZjJ>ZSYIq&msBj^peX z0#K9braoz9TCgN71GFUrW__rIZEij|kL6(pMhBTy|tq_}&g+d4wxoaxv!Hiaa&eu_ra6fgoBnEe_3|&s^PH> zU4MA;vp4@NNa0Lpa`HfZDFeQErSft%XaP-dfb;%bl9e#D!5T;|2je>cJRK zKr?hnKHy;KEuVb+*h=BX#jOEf7Nr;NT1*?C>S5H;1vpD9^X_FA3EP6Yh-hF$3D*eG z4=S?j1*>uPIp`U477mY1x`sZsu>zTs;^^Q?kDmq{jJ5k3H}LDR)I8Kb05K_lZ<WK2YYBy?hjoaH;v^R5BcWm`V?$)K;& zYsA8TvR-lB796LFq(ldQU1kd)8UK-+LdV~`@3E)KTE{KWg@S6bHr^Oe;r778QB3f9 zanu42;E`xHnR34eC3iIA*(3Fq9mX=vtr@fB5sv&GL0f9+zW>}>bDMr=ctP$vi?MFz za!Td>sC5#V8R{;<-Q5Xww##k9w!=Hm8fCzX_O8OG~S%j)5f z+aJ~ax1j0Y8kP{t2>j)ELawPXq8@bT)>)eQmf*B6ibje7{iKK0GqGa9mCv*J>9zfh zYF-HnX;+Ne{N#fXx}z2N#K_Uha%73E>zsdKY-M z<*)l28s&j}IhEu+d6VT=S(j1LVv5`-6lrB}F)I5+G`C3cdkszN%Y%J0%u)0YYOz>d zr2nErj^qN?`I|H}m9?8Cz}Eniw8?nZ*L%RQc;ZnB*UN1~X@^&Aws7-k6Ih*ERR4I- zT9pbQ4Bq&Z_*1VPY;Agb&m>Q8Y*(1M=2+>)wAzWz?>5b#24?#9ocNe}_nf)B-(b?U(5#l0QpHBtYH z93{Z-hT@i)r-g)K=G=*TdM4Q=V{2v&=@$Tt1h@=uuLggln0zC~6WP5fJgM%VsfT&# z63@t+%8-sz4C=^(7tY^{u3+7Jo^_GCmhq;h{zmD8gIsc~ur+qw*{~)nZs6#6c9~>u zia9LyWZWKjjCas8N!aq6_c0xPpJh_srYwS7J)R@Mm}FpBl*}(_G=bdu>p`#pofj}y z0uU?J6rtTbX;|eFDmzr6BM4n%SNrl!i@oh}C2=M`wFLC{tsSBGx$Li9F%0x>u;_GM_|`UcdX3r%x3ShYyQK&=XExR-z> z?cPqzULCUs*5(Uf*q9An`Yyx}luLJst&2s%L-PrlV$Z+4RCsgo>H$N9LZ#zz>}t`7 zNft1-;vNgmQ4EeIC;mP~Bh*R8bm=G>F8+a-Oh4cqasykA&TZx&WjD;Dcp6YR8%9zQ-v+a)KD>rP=W z5K5waKMI62T4JBm!O@0TK5uOb2$%@ZOM5MTu!fW=jMqi0 zrW~v(m&}*{=LpR3C5*Cy+?JUqLK;iuE`lwUt_@XU7&f$+3Om7Npg9TlDEC>IJHcnp zd*`F+{!Zn#HEcW9`@Ang~XkExd zuFp1Hc-&PfBDKDg(E%}HyQkb+Gq&F9 zB{B;a(A5W<&4n@3uEd|Mu{-I}5tNCO%qI^5GDPw>Tw4j)!(BF+UorOen+wLS=D)=L z*vg{ZKB(N?XMNzj{5IlG@p%LC&)qAW$Hg^|G)8DV1ipj_rtBV|M2aTmDpJ3WIa=BGRb<*Yv@OpzStAUwkk+RHXZ!VYBs*@33Qjv_ZF##sa8 zhH7qu#6ak~t*xv=VBYDtI}F{AwavQRgVX%Fize)#I?uH z#`(64$)6u3?01C9d_-!_?0K(E9`yK|)*H@oaZz09f(IuI8?x%VeFC=o-M}qT6$SNo zodU3Tab4mMqkvOYK#SdTGhgkRsqNpK`2q|a7&2gvWD-AKZF7YJCG6UY7=saz98`7ID&~NOC)h zKNf${)}b>(hWX#aIUtHK1Uzc8g~$BohzMWLJ*&>*qAz!wUn+SFO`ka~l9PYOmPT=g z#7Yn87$5FY0ap3P!jW&x#_zc3$3-Gs0QSQqbpr=PUHAoFB+n zpP!vM*!{5RSm2&6r~0ED{kB3LOKjM{SE(H;+-5jGuL)o0*VDA7YSHmT$*7j7ahj*!3Jr7S~pR6AhphAb$WU8Fc`$k@69CpGTeA^sWqtE#6tLi(ispRByufH< zby8tYH|KtGT_96K6wGh?8}@nP2*u%@A$_n6EZ@A{{Q3C3t&ipI6lZ|6kt8Fl2yiGB z_mnYh{97WOXZooBJMTij4{wbTH2|(kGBGTQl{&ca;SNB2V#MqGlnudnXz zer~`3--$WEH<9w~stHRn(9Hzcg8Rp!IoILEB<qPd~$Xf>{HXX_~tkwFtkbhjn7r%5*pQ1yFXYlTkM)|V2pN+vcx2Y#4AIX-^pUs_kN>6_Mn<^I}< z=ONDIG)b3;?4^=#yy2>Qj(P+AQKxtTKw~MM8p7wlcbg%o3@hVQB}~mLFj7~A9jr1T ztYJrczr=v;b2&L1)vEqRz74pa?tcpeVMe4&ugvo3({wGPt4Z$82CadlWwd~sp2kX{vf39HsT!pv^!)p%nB*TsxBqcG zWKwb2AfnN6hxWjsk9ZeB95EVACZL9guUjv5eVwRHMItLaYL2oF9kKUaLw89Nq+-rI z&=YIeT^F9t&9VECt<-$84&zcj4x1RRa|VKmN!u9Ew5D+{F+lSE8H`nlx>FIXWHjCT zQT*-?e#6ST^1&-P&A{EgvOxk!0g!`H*+}G1m-KIPw%tb>mm-xP>9)w?DZsPH61Cmf z-fHrQ2L2j!=Q|WkRwlNu6y>*M{`w9aWFhhHm`aB3X)?!0BP2 z(#!bBw&9$k%UzT6s9`A}Zc2&`Fu0%TY|X)3=b1v6y~E&T0AD_z2RGVjFunKYVI%~R z%bhdfP?Ige7((Oq;o<#GdFoI^NwHPnNOszX?;VaXr5Xl1Gi-Ys%Fci0DXtQY(A#WW z(2l22I6l?2cHd?1U{*{I7PZweFE~WjB^n?Vb z0);G(UFF;r>m?juYik~t^NH^YbSCRxPi~IdTJf1X6>$)ojmrIT-!rR;U5A4A2Kj}B zdz=AKsjGf*(j&tn@90|<=qfb;GLJ~^0%X#CYf9-QYibrVMntsr!YS%a)nQikYi|M0 zp?BcBeIiN{$K*(m_q-7)2cV>|`#5m8^Yg>_&fe`fA&s9IWUtTl+9D#{e64J@tqadd zZ76lB%6+pJS&#PC(+_$~>wjJWQW(ICQdmS5w-jrmyFchee=>!vO@h1 zF{hM(@2@u|j7Sct1YsuKLZz~D1xr;Z%4yNqQ&TQ=6u>cf#s;rQoHtOFQQ0baTJd~_ z0$;1PYdkJ6Mo=W)_h-_)OIe`g9PCK+VpHd6gVz4cd&*1BXZAXX>g$ANg)1- zty&z9!i*fNxs-gY@A;7C{=rgsP228M)A>61=)moF!oK(&|HLngLuAQY0oRNel1ZCl z;{#`CrO}}9sTM|dy9nip;6n^M02j6PQxz|PnD8!Gt>(h2CroZ=r$!Djnv_K9ZL9R( z_uh{l0IH6F`~!tDrJzuux7vMSq9Y(%@Q%gk#(lBU!blif!CLSlQ!%SlfPU2e^0e5% z676S!#Pym&{+`z0j)hAI?yk1}0UTei9QuHTH$|`%e;a$xe~rTfQRQ1=H1jcsLA2eT zKIH6Z8!Et%_ssJebhYt>jBf}qm`Lx>00i^zJeB?#b#Wz4>n|W@>*^isy<;b?%whM} zqk-Xevv8QF$$}_!mOet^!sPkxG|zkr6l%NyBP`MIardO+jb-!iCIf5k%=WX??vR5z zkZ@TDsTLWS)hr;4>^;6mYS)85+5e&#wLjCOz78S_Y#xX!(zb(P*ICT-v5^7$AeQ2; z;gX?gU-fCPdgh<$af9kLmlR-c@u#{MofbrRq_zR9k3#m)6WajbI>tP+t*(3XBRXAT z=am0^ShTOZkT5g}7+j-rZf^h-@~~ttcoG=TeWqK>#XBu*+HPhp`o+&r!0sjx|8*LmJMO)wow&Nj65>4#?p8uYUj7WTo65LC=mdP&%QI!&aaVM?snW!N6YPr z{kvfS;kTnqaA29P4FF$GALsgRJ6Z;HCYmO63w?jD6cy+&g0ix(7f ze@)xnY$<8)SNHlxaU3#Pe~{iUJQa&4K21&SU@IUj<2xheau~WLR4I$oOR^|1+8|VGk!lEhi`{rmrOxvA;IwF90; zWY%M+ymUk=9}*eiQX1CzAKot(%!mMC0)|2{cq;(nQ@JGLsW3)CLFQt0(uqJ!+3I>1 z?E5Xo%Ak=yvSP8|ksyBp)wn+D0!3^l&x^K}+wP+FK-f`q&Fq3z*`U zsKb?e0cp@;gMe?|vqGgF%|>w$0MrvYK2cGL6SZa*HJa&4XDwJ0s_?MJH|k5H<8_OA zniad^+5DGNv`E`>d#aALI-~%^1GnhP*_LM zs`~8if0{$((iImL_W>Wrb=YC&gSYi;5EZksJ1&+juQL~fUAbNML6nS&P`nym$*`W2 z8cB$fx3(Q_;q~z#VNELc7NXohsNH(z8^v7->H73PN^RkwC=N0IihG4dQpeO=Pak*; z@8RY=#i$*3OPZ{ro9q@>@+)T+0fav4H}Jt!Ot=05F!yfy62R?h3)SKCQybeG^o+(0Stb+MgGUZCL|JjI-6+8xLo5 z*d$Y;LY!#yot8v0RqP7+~#6_!d~E#KdJb>Splbzd>;ZKM6H-bd3hanr%!fs0^p+x>Uu*Z zZS#Hd$yMj~86MZ0y~F)O0MJQLz4P}TN<m@~2yL#g>UnL_lOSGkkqHp>z}&`zD_! zS(3u0O0@^Z9vyFXS|3=?uU7}pf?)7EsZXt+f}1DjtR1|TUh7ekA@{W1#sBQuQ4QH- zh|Xp)^{T3O8$8b>;_ylhgt!luYx_vCS`o_j2UBDg($K+@-gv*Fk<@`qR5Y;{hBwaT zPxA`s3Dm^rw$*3elANOkv zpZ9+nGIZCA`C3J;HEdb@WEzjEO9SX?sN9y-_uVKXq|hvl9l?L5=%%DY7Y{V`+ZYfd zi=Lw(0`;uRNI)-YeLm0h3uQOKXWVwTX9G$&SU$?Vjn|X&{U{l48A^-4tR{}d2h1Go z(8~M3#t_XXWLh?rdN-^v=-Ra<=J-^<&ng73CEH^WEJ$C1!ro7ogR8EMd>~Xp2_=C& zB72S(;@y`Eo#yt%#uq(O+Z`#Er=Xc$FNi`p5f1c${|ut^KI=ONZ`ddvYV-2)5~$OS z+%op}X#ERR>6|dhm1|h{`HlsRVYf5OW7E?Hmv^Gphk9w(XD*xSSzrV_Ed$U2o}`=* zTn&HalCJ-BTCk6YnDqOi`0I6kUvnd0pqdE8#yghL$ra9lt9sHcP9Go&>UGxk>O2<51q6-* z@S<{Q@Ep?#sb1-)frHw3_R1izyP!B+b!22nmnng zZ;k1>tXrfjaK7iJV%PGee!vJmR@+K@d*Pm&sG77>A@> z3-+YU?uKAp9eP1{c^+b6FmooJ$TKCRwtPmNr0jqE7+Cs}CXh9ZCJ++1 zVzn9JN9!QC1S_t65>bU~&6w1kg#XYa* zThtHde6VB9fr$z1NMX|4Q%hETnRrFXQxc#J1@)D6dYd@^H`A^K*H~4pnlx0E3k{_t zH){Ln?@-;5gdA;rm~rgd;V`nEgWhk5xl_(pOe)3V^Hv>Uoo%qLbALhN4r2u+_z`-2 z#XzB1TK1L4i(lC9P;rtL3{pfk9UFxL*e)j0Aym_eq!Av7V zLti)aLC|AP=16YF5Kg+#Rtv$_C#4Ui_@miEn{SjqUKo=DRhO@aHfIiX*`DZ%xd@J1 zbe+u@KxxN=RCC5bkE1%RqFXI)T%(*1GHWC@7#FNwGd6d zF!`L~Gn(-no@L%4>H25gxBkUyfyWf2nd5PjZ*cR`4O#M_stv@6=O36^ z-DxerfI+F3sHqh%%kp6hdUi_-3r=1U9Zt7mwng)0V;TbQr2w()Wh~Kj!=dbCi^cXf)C_sP+a@Y zHO>-z79vuQiHYe|^OIIS_}D82bK+0(z_-o9=0#m4rB}vkd1dA07L|sUqRG*)8{o;n zV<0CG_v3L;!q02Ljgo6k_$U1p?|>>o-80}z%S|~{Qwyf#k#mcmUvI_B zm_3?n_$Fm6Ly>=sWvKf_)8lF*qk-|IHxtWx!dF!hP^uR;!l3jOq7viVKh&Sy(LtS) zlfyMIedE+2dEfsd+1C&);As!{t%2{3Z$R-P&WlRm@gnq6=$SL&cD63uH=8q3QW$fv z#%20j-ZbFljX%FJ{L)U858`w*!2?Sx`2__A0S$7)(`I6zJ`pozP6BeW#baUMQ5{L|z9JN*O}gB8X!Z8+xW;qK0PHJrVMjrvVDJ|lvrfjB>}qoMJ(BMhutl|?+| zaJ?DhAwB+jt$><)_zr2?@AyGWHJ~LMVKkEzv43PFH)Vk*Coiw>9Od9=hknwJ ziODYC={0U%hlfrXAwjPImI5sKDtXVf+9)fB`XK zRBE$5xpjs^ADLUvH^iK*q4GQU zhi|6*V5Ml<>S_ZL=?qwoRz40}Mw%LX(PSRFLh2^AXcZu`=|Ud>k!=-f(DU#zjYTqEnX}e7JK5usJ9+ z{qo**Z)xVlL&Z}%w6z?yxnh{^*kBEdY`@Wyu(U%yT|7LLneGSA_`wpzANmp<0w(3R z%KtSTNZ$G?5)zuJ?|Jd%lUdXM+$u`%Ya ztA^=_F#8{1x3OQ>p{_al(Hb|w%L9Av{g0f@j=v`qqtFFcJdc#`(+6Eo9=KK0gpP^n zS_%*?)Bzewn@7h@nwyQe9CGv}DhzB>$ojCe|O-EAv zgR}9boI%#6tRu5?4Jp}(w3uF(!#g^<9uB9`vBLVt+@dg(z{np&N1X-KN>Gr3h^WZo z^!F}(jrM0BO`+JnRZvBIM%@Xe4I5*JW-$ocoTF~4` zdQ9&+wCIXWQBqgddez5OXnC*?1@=mgIAc^(2I$Ajdyh{%zYCVS5`*Dpgzo2mjT_8g z!Xl%k>p#EUT%o#wCBGRM>G|3R!!Q=sF2tNGqKMNwf(sK9gOqn4UJ6jQ^F37#I;&oF zt$daxL-wLTxwL)${JMQQ#!`-U@60Ew@;0k-u)dY$Qoy_fYQ7R{bSV^fDYRLkk~v)t zoqk|jS2eH|RO=Khmx)Uo&TpY>2ymIa!4zQg;gmK-!(B6=8FTu5v<7@^`n0?WHyS{k zI0^)Ypaos1fyA(c5(r_wqF68~3sEf>lRMdyJ9EJpFHOx978k=77Z*VXfw9V3AHc(2 zx2{%h;*WWp9g)%(A>oenOLq>QRn;SVBW2?O!3VS8O4Lln^du}Mj{ zqFZCYOHP2&wJ9m~(^D4hGiwDo&AgHLLT7R5C-6Zr-1_815p$e*@#xfG4qm3D2I>7Q z!c<$52X`oOeFmyg?DSxw*Nv*48+Jl`;Z4si~(gC?cW* zcn4T=s;ZrK4sehu;p!kdFfHPJfIIHzivz6v@Ho1#emgT@`+#olyHM_Dfm29|%$)pF z($;+?ZEIKh`@J}je2%njYwL(<`u6%UeJh`BgBg7gb(6-UM;T>hg43j({x3uMU?4nq z8)wFCda1aLf--v3P@Y~M+j^!NJXi74Gt9yZIEpY9@cEP6-%v*4pmSOg$VAIKz)@RNxeC2HC@?fi>tch92 zX#6AXrrS>rvk>h}ZjyB>>wG#Q_Cyj@DEtH3Pw9%Wh<9rQaLg6D&{v_aViMmJ#KqBx zU@EAIQgHDbGOOz}yr$F4FO_nsf?`L)&l+f z?BRiav!c_%O{jtbrs!{SfI%qa`(x^}y(mWw<2oxZuPPT8mmS%oY2o}m zAOm<$AJ57%F}+4VfDc#?GUn1vt+Du?UqTs&+490(2^{mulYtyNNg9vPyS36Ek&}U-zPlQtid|cqQ%b53=OK$U#!Qq$88F__+No2H zf6pc{nDlZlYjYGI8m01wo*Sg`y~6KlqjVo#preQzI(;y_h`2;IRalX&54eN<0;>@& zIws~~Y)njkQIR%Kzi;x_``f`8C~xyJ<>(sTe7K{R0Snp&Xe3I9Pl6+Q;8&na=%Ggz z_~v40v$j@^JaZ(+a1L973VTj&E-E`)zq-1*%&@qX?=Rn0d-_xYghM-@b@t2h(&*cV z7WRJK1Z*Aba==`}h)Hs-utE~5YPF_x{ zz*eF)@~aB8=X+D$?BFtEMqAmsMSS!-OWzvw{)RFTzRJIQ+bAYaX?&9ASDp!0U`OtHz+f3ymG9e??(%pRMv_BU)mn4>uPwGaq8*ujRIB8y28$G$687CEe9 zX&Dy&c1HfdBrknp`)TIw`bf(1o1dFFPhs3JhQn+_kT79jcmW;w;Kmz^_#4o+)-GLd z??m9ms^pgTT%uv+=59ip?wOSa>@2=)>xMomW7&AfmTR=Md#Ag;jJNtFrI)i8e)sa| z?_TnrrA8qXQ=fe>D^mup=B-;i+Ac0{>_v^r+COkAdl-^lw$lzeImsGoaai4~VceGd zh}|*bw==2)D@$o`=*+JM&6)pg@M<_JBjXXp<;nT{M6|G|;{J&f+k(lRz>I}Hsic=& z?r+^$jEo!{d%hMmexz)e>B|ftCf?#!+Ruj`+{<4}emnfvlJ|V+{T?^EsJ7#Iwx%=p z)vME%R#xnlG+}2%3p1i4`1%N#)VF<+C9j85#?F4_c5=e=HX!8+L=Ff0D+yfSZSG;Y zTFOj{3wTMJ0I!2>@Bgs%7I0B+-5V(Cu?6)gDs6z2fOLm}IF!;20@5WdHJ~Ue2q>v^ zH;gn4r6M351B|ptcMdfSbJw8X{rv9zzrP*0a_YeT|vvesP>qR!&aA zy;Sfm9k9lQdDqqlqJul@%oN`nGHycsQV)sVv36T|%YAUe<&WBtm)$sRM|wTQDcDAw zaX2ts5xKRXcakdQVbLRU4;f>>tvV5AkIKwE$6ROTzf2uahx0Yy?CB3&Oz9y#`sm_s zm!_T;3R1y!PflThV%xJirT1N2T$=wX56E3g@3VXq%SfiEt%$5axuv@DoMvfXE(5_m z)01vAWnZQH{2400KSR|8{!K|q$^KjNx|* zex~MMzeP{dJB)us!uZJV8BAt^<&amc-)YWg!SCcp^fxKg3ROQ;&m7&;p@3z`o0IUk zuROOkNg|EM6DbSWn{_-qx_VtjR8&(LazS?OUG@1nv(msWoImm+vMk@$(6Q zpK;xU0E&^4lCo*^38RVEd`$t*{LWBo!}N5mTu8xQeXh;ULRGxE2S>6GNSsgSU)B%p z8Bd9LZ58S%0Myq-KB1Qn}aLQ7e}oX?aJvm!!8T z9{+X>X+K;7wjPv4d-!$qlcl94B^dKwHh|haf9{!@cAfdd%R>!sS^IVd=$NxuM)+r~ zJiH7E6JOM{H|z-+D3S!ze*Zm5Ld)M$g^o+X|M}^2Hn?HJ)<%tmmL6B!YFc>W#A^7* zkF24Me6w?7pN)7B%$%H<_8N~DEt8$z)!;i}mX`2$pZ%OZYD4PXArnp`{29JKt=S|8}R}hjC&mZCb{_Ai*NE;GWk)DnrjqIkqHl z2Mw?I{Oq+|Y_j$0cw-|cbZP(cIdmH&*wHcIc49|Hp4BD4)inn=(D$CR-XmAuG}F0@ zf}CBE)x<0pzO8%C3j=#ax>GSc_NrJ?lPK=)!_B{6gl7tFNQMQeWFROiD%aQ7mt4)+ z5g8iHiHVftmCIC|%gDnouF|T)??!pAO0*Ku-LNpJb1NfBj$Qb}~7 zGeGeoy@qtnyOJOq8#=Wxwmi8)+XI`|jPDJ`dj$NzYFmC@pag6TufQ+T`|TSwtx2+>a>}=1H zimnNTJtQNI-u`9Cbmmyb6OF{%R~$`6tU{uqk~D)Gy5$q9>I3C_CZ+-(8dWwIwV-!= z^q=zT^yxG!H17{Q|9P_iOrVtJiu;`E(%Q!;s&nUByK1JpVkoi|KX%Hbx6iXjw;E|L zx?1_;HX3vknn_|v@js9D=@sZ8YetI1z^DrwKMx)zhUXdKeaxjy_BIB?S>?|?#pLcQ zxz-amPhN(HA00d41Apvam#tOR)G`YSnu^3=VSan@Px%mcn#sYVMn68^)pHp>CM{%> zW|F6EkmPz{JSu`@_0!6-{HM4Rna`&)r;ey8X=OfSd8}=E_wI{-|NUi>|DiO6?aAdF z^#G*XtQ4KMH5Z1*_scub58;*0ldUZzDWPTi`z1fE%pbbBz05rPIcyvbTjs>9`uJX9 z>&g?&6Tf}-tP6%m&@Q{f%wUO+gQWe1RR0?JA$@?E5QsOs$TibTjupm$8p}5yqDbqk z4Z&q&jz&doceBqawC<1D;lGBvbZTu|RYk>EI}S`zquWXIE^DR_4^fni==0pmw@tTj zWAMt?(^+NvGu;3CD9&9?XO5qPOQ1KotV|QLN_K61i7tK3TjE<$Wk`XDIDY3y5B8}1 z{v>~;J1hl_-oH8)D3>_7IUtC_&dS|cB=-3}q)KG`J9bT>8UGVw)6~czxZlHLu79^w zT}>?&B8QmOq@<+tR2KS%CvJAV+dGb)&bd<1cOz{)x0$u)Yn`YUp$OSOaa2Ni3*${Z>7Udrf@!|=ch(f^87 z!T`7#>X$F^ad2^Rs;jdzpe|Sbu)Yv0k&W^rm*-K|hs8Oyy zP7!h9N&FtN5v*Fy)js<8M}@Oq2VmG>^LQftU%lic3OjXiu|9mbw(!P<0Ob&s$E5@0 z?FU5$%FRxNAhOA}B{CTiiVT6wRJNz2HH)Y|G#F$g^fKM0!0dq{y{+zm>E8%lhY?SMI2w}sE?%|7*x~E zZm(_=6eBItV`hI#(7&)q^;C>yBS6+2971lG=Ds=MbO007*6lNFpZ2(FyYqsI!~d^? z?1}GGr*KgrFa__2Yz5(CY)5bk9o#Y-d`wmYL9%L4G{tT)6^Q&x1@@ju&u5ny9ugCO3i_TzrH9V&*> zZt$OSQmZ}6%+kBSCzf9JEt@>L=~O#uCcmEjOI~fdd)yRQC(4bD&Qs0sh#j473i)-- zc{g7xt>s0zkzW1^sasN)lKyJlOMuVN?(w%1-;HWF=g!}y{7f}(TqxH)dxLm# z_j|?_grC_zzE^U!YX+8S;WL*9|I+t*Bz;d>I>LG1@7Fr|EHY-N>mXJ*YaP{dQujy8 z>HJ^gJhAO5QENsFWrXmitNhzhVJX)T*cO%Ugp#*sX05P#$d!)@lZIO8Z$S|AzMSyr zrukDvd8eX-&wNNv{d;brV>DS=p;5aq|6AC8vvmKz%>vvc5x^m7msfh~*{vP42^IDt zHc>(Xt;@6l(%O+KmQN|*Q)d+a5>`%B8oGb^Eri!IzTeln;U{xos4b-yL*9PuWy*gg z=lEYeN(F_}gTI0tZWC=sk12p{$~!Z8__HSIQFplA0or8d6t+nkSSmpScN= z76i)b2rf`ijM>#A)swuwW*DT?=gF-DpJ?(mZ%|7jbAFADiFmNIiqQvmb-A-}a+Y|7 z9*}~0*slvv`06?5W$r7tEG)#qrzmdsI=zkz3JzA$);{gFCBO+CgzL-(1Vm=NuD6hx z7dP3Kf`mZ<>~~Jzrs@5rG;=T5^f%q`f!m}!l*s1q<(2R7h_7`U?<^Cr6AtAf9zr20 z?5M3k3BBb!q<3>*toV7S16UQoy;x-@L4_y85JIOuQ}mw`9~2P zKK$8sd=Jmiz4+^2uTqEb6DI?p(>EKvHit8jgq_)8Jbj1vlmw=))&f(ulFWpF!xdEY z^av80OIe$1ho{;*x!Sj1UO<-IkJNQ{Hakt~6I?z}5S+A_?tR+j`ef&II)Gm+xu7Y1 z)!)mzjr9A3v)+v^*A7>laBlY^PR|>XRK)qd=sgZ^)w zs9?^`fOv3chxt-mVMVvxags@I&TL9He-{9|sThJ|;3aPPJFiYD=VG(x=M}Vz%=3ql zQv~sic%ji_v5swAMUH0Gi+gh;(WPdO*SnW&(TX8XJw1YKyu5eP;~bvX2ht=L(PuWb zwqnvxN@7oPRVO|AgtIdRU@+FH>qe|+mo=`b<)KZk#$2ymhc`VQRbt)PBYiP0yE9p4 zb_`ONXzZ#niF33t3T+bjDe8_Il+hqJ+xL;w_L?nOuF9=~re<~#r#uE4L6@R7v9(j= z(<2Y)gLP;GC(T>?op*lL9_}x)aExxCbJ2`wlbAE37I#lkRtZr9gAJmMGsS|#y#%-Q19Zu=)J}-`2U(+raf2Fm|S-o{I@REc)gXh+J zIQQgGto!Vns3+s2)Z&&eK!bD{aY#~ zggXIOTKqHgWk?FEN>C?NdVCTGiHvoWzANV=hTo)#n_AQ~EW*1~S#WPdJ@(00`PL|5 zy_X;lQ+k^v+k?8h-cwfJUXSifMl-oj_FWtpTuT4<+_~=bcEc0@9MrD%G^q%(m_ync z74|v(I?n4no5{?Ut&s+8E4CdvBEC0Hs$n;lp=wf-~cxrgQLm>FJiy7Kx-WTo%9&b=k6vZO;-cpG@QiJ z5if(K%C%?I)YKG{7?N2Gm(y{H_?0COVOoj^vLhQ`WLkINmI0ySmJ#ko)#81 zKH0#_<8IlNay&}F#-DQsH{lUR#&IEFaeFS_>FfNMjy0S2j06?Z9;^w3j;?e=24*!;&MlZ*I!WtqQvWi=u)o*UmDqUG%~uq=4e{V zU;U+{qa)#1x{68~Z8GqZ1Wx)Cnkw2=m!z%6Gb+S+78w~O;l2iN&CO<4`g z5S+T+6gn+#*L1p$EV$W%gM4(6n4R`OGOuo3nTDz3Rtr zvIHwD*7FmRYg47g_zjvV&o;>shx@DS|ac zn93)*OjkO_d)}ofbaWb^bG7Kn;+K_|@8~ll0L(*hR1jKyLYOy8pG}R_x3X^`tLq)c}b}J>F~YPGX*2{IL7_$m#DB{vAou0l0ddCG*CR37D2{ZW)HulWp&eyDk>eRS$a!8*a!mF*DC{xe^ruYWCDkOeU!L9iFbuKQASWUXOj!)vjtV zvZdP+;{_#jRzS;YX;rOnom*R9Ww*N@(xk(xu(24MDoI#T_o{r9c)_#ap|EiDgx#`S zNN?^yLQG8SEUYzCdPxOhEWU-lfq{SJ7yuz`T&Rw(?H8P<`|E=lI1r$xf8HR9PDPsW zM-ugSN7#3s-WtQvN+5F-B?*s*a8m=Snwm}z3!-*6(j>o6IL!DrbM=y>ymW*UlUvFk z!CIwnw}wR3YzL7B7nDJ-P3Z_z%}7l{IqBOW{V^PCXsf&q(%6z3-)9yOX7EW)MnUYh zS?o41Ih}~+>Af|H*p)S558W|xtU)TQSrrqLRC>2{1jmj;eoFo73}qzo9wuF(lk{tk zC6Av8V$8o4pp?d=e9iNxsEDc9cZ|`2s|=q6JC!KPuf8QdFVk7U~ZBvNO1U0 zhA z>aK8Af7KovZ;;T;S(E2R)zQ@jm2TQ<*a-N(6-5zy^?-vv-(B&IGE4FJX+Z2X4sNwU z&JS%$bRT6v<}}a~B7;O`zf%NWV`9?su36&L%2gjC1|P-!7+Z^C7yz5hzzY|szcZpj z&1;&%x!o$ggY^wAnya)BS9Tt$a&59Ko_%@Ipp${<{GoMwS5gY`?Y<1K^ z2mg|syL%L8`MRZ7{&e=F4Fi{EhTcnQ_lZ=qu=kxR$@c;~1V?U!r%W}vFSFdj1 z`679Nfgzolh%Z{i4@l~G?FI^tbOs9Q=6>W&FV!ZCaocr51lDW@ab6p6lH}5I|9SXx zEk$!zYmJp|*G@VwPc@+pzw>18p!nweIcf>(=>uj2O(ms##>}iN?GV*DT*;0nm+sa} zHgx8fc5Kx&mLvVxyc0Kp8g6^^NxgORApiv4+hr6zL_Dpk-%B`Q)6d$jSGhpl-nRS z{+1vz^alWN!@uF5~i0eoz@=Y{W`#cb=kI*+!;kuf1@DdX#t z@jC28gtEO-gV`6Wz=ko4y$gv|;ezKT+YJ)dIJW{JqOm|Hv59G~?67p3tJ<8B3!!M9 z?J>fC=uBn=NIqISj2QLL!2^1(wXJme%1-MU@BRJ#yV6>9NWTCNWbVC8To_{@jVPKh zMJKKdrsd(o73+}|#NJtn(!Ehd@!h3{;@t{L2O(;rki5LSIj8FI@_>$xS5Tb$jvI$T zwK8~YWA%X+n;-hwMVZs3w^5Bz{BvQYUauHg=a_5agTS8M*}N89y1g~9REd(hoN>1H z6`Od~1YrRznZfS*33E~OuAOy`%%LOeDmO267o?6X;C;LT9x?r`r7^2?3((}uX)U&Yg@Hse!Fd(I# z>5X^gKTaygHzzcP&6W173by9#aHG4B|7}0kPmKDr>!8sOS-LCx-@Mn&J66l<^W@CA ziLh4F`LBbSZ^V8PnU=-hv8o3Lb+%Etsn10%2TCd@Q^gtZ?KMtt z81X|-&%s;5o3l`+OIzdNCpl%~vx^OWrx~sywBbOt=&78HjP72rLZ}-)8Tv9I;Otf_ z$9Qs@LMDXo(bHjdUDcB3qfNbZirp2W3%eKCZgl&e7SDP`kIZq4AFZWE6{Zxain`2O zukEsH1!-1AP9OX|ghAO7_XSFc@j{$VJ2{&w_YV~PG)NYM%& z+ud=+cT>Rgx7a7>tl$X+qHp7mw*Yc`o(E~ln@}OQbarU5-FYLDy(?{SA>7ZDbnob| zcRB|(cMQu%;x7=i+4m4fOLwv3A#$kBL83%bSlDC2N|26I!-Aj{CXIvS2)NHJY!<~ok5Qw={miTt;>_%FFnqpg8Rh(#zDi;RX8U;D*r9LN^qiUmP^Y7p{lli>aR`t;`9Vn6u8#c>RN8I8a6@ zh;tj7N6IX=M+8NL@bQd+L}bY~COHbvZG+7GGi(d^xR$ozl;bk=$cH?lmf-a^wGO3$ zj0U_!&0z@v%c2#cHamS!GX4LqbFOo-SVoAAr4LDDT#xqxVA= ztLG>PGeNy(Qr7MYkwCw~X{zF7Z@$|MS9Ef5vv3K&K;|l{`ClC@V)| zxm^(k)922YD_Ue>{hSB(!p=@eBD8A^lhYWy3rt(15m+4KcChgpy-Dycn zIa1F)7koAf_l;o63zQaM!h$i?KZj&xZKM;i)77Df$42Gof9#Ja)qBsWQPD<2 zNyUm-?d@?k7vtvU4oT_nFERTb+AZcAH?XkSv0V{x_@soIv$Mh)&*$y!!vzBiBDS;n z;Agwf<(8P`S~YL2j9es(q>nlHNM62(alu)jc0pt4n4brM2RF zTC(5jN?}@wDQYS&Gm`|w8YR)h2LSLReOHJH5w50Y6JdgJUw?=|WX_6g?fe!#GBi)c z5NA9JM`=ir_U<^-oy)X$WvC>tnIR1WV-%zRpjSeVPx^FK%lX_3Cq_X)XAUeqj2u_h z^+@*H#`l7|KAOelS*QeKK5$>d#mnqv^0rHieDXw)EX$xcKBYTHPFp%M0Q#ADryp6# zKZms=xikE(!-eRnVQ<>$o6)ea6z{yE=>2?vAnK%xdFxNu!41tJ3HVKmeBuMGTpMpZ zW^{UoD;2@hF`-V%|eBFu4G^-WMm23@-gu6XTjkgczJ*LU=LV~ zI$k%fe$8xYkw-{|nL#P0BI5?&n6Gy$)KnX^b)L2{&UdM{AM-T^i9K$ zhL>r>!l;N$>rwqjQq%AK0X`2|nVn83T;Oceuvhv*KM=@CB&h1?RaI;62If^yUMGx} zh%zCr$xvu0D<>tE0~Qks+l^patI3^q@cCgkn(c7I=2(a=bzC{>%G#B-BEX?HNFCjp z_4aLCQ_DPSbneOpgTfNv+s4iK?;42>!T;N#wFYd;-2IO%98^*TF}X{tJ`n&Oi950v5T)f4?MKgItcqm zSIMCDoo4TIL1Ma*dOKExUl-F$ceX-Oo8c&{hxc8g^9!52innNTb!wE(o>e5^6Y)Cd z=YZ_0C}y7qZtFduZc@aSW@ZSwuOADf;w|X$+5uVxja`|xhJmw1MYBydHYdDWlR^}{ zTJ51J!HWhN!BaJ<%naU|iAx&R-&YJ=U(lxgopDdRN7*M6&l(< zup!*nayQSPSn$ex*H>s-q+M35c>}%C&(4U@DVZ$MY;wiT)_V}URTNc?Xr#Nx(rEYl zX%>TQl4u~o!EiY-3-}J7-pzmXj>+fQ#uFJh?mp$P4dQjcLw#g;A_(lE^af>R zXJb+$^^(7Sy$YPRX&g2VJ9SdBqq01Bb^s;WGqP9(p8f6{iLIZ>6tS+jsA3X~1R%}& z_uA9b00fk>d=I4Kl?@i#J+0?7S`LoopqXJ-BkVZtJ0CAHB3uVu0@5BtUroobA{@%E z@>xwf=^^{-LQ>owh^IgLv@&1_GU2+nO%IM_tm~q%$fkxF`}H*Y*{2}cO3C-84NecT zzp71ammn&il*A`VFZMeJ7NST#xoLY;=dXMO6!41}(HmK`n$DmTrEbm$4T?%QaA=2a zc^eGTVb3`|MAxgO8crZC1WW9x78e(jW^-RFBV9j_Sr%AtpJ2-`^uOy%coaklU9{jAR=g|J#lSyg7SVxV_@dH=FV$b2GPgV1MN1zz}Fe&#U zztw|vwRSiGcm8~6GQaL%-s4Z1y}oyp!J@Zi2DnIqv#ZT}51J!T?=UkR9f`i-AKoQ^ z(=|l=T$}bb{nMxW#LZ}S+$$ZsF7WQdLPB!D1nKGNnagjOoE-_4$de?_lu*QP_6{tn z!gh3BAu7SmkwMMICKpgQR*u|P$|@?12zHIUUh&Q0k;Jt9CrtY(ZYlqU?~v8aaBV6l)2Zt7#SrBR5>j z%rAS|S}eH0JvQpG)QZhakI4Y628AagOY5Q zjUL^}raU{^U3;3KH!(q}z1(=4u-7ZOkZ%V=BN0<01@Lnc;|y4kY+QDD3Esu6u_5#x znjKejF&@InAAy)^v7B(A)#N9hxbjYd_^bH>oacj`{w0^!6~NVk`DA!!eNhyZ0anxM zNtet`!>XvI(Wy9Z1b~)bo=NO;_h8XS8WwA-Ev->SK^&CPn3?a;SD@VZ8irowV`a%w z0!m58DUgiIx;GC!VlIarbf#BwFwX{Y7p8 zBp=ur$1j*!jcgZuLGNu8x463|-e2vN4xW+UX&N?IvuLzP)#@zGPAiiJWbiH8$Fxsj zCNy-@0jRtWgWvRhIuk+-ESv(0MCAB!0%7l{s1rHeN}DLdG-`7Y1v?+<=qm*UB`2ru z1F?>v-eJ#snNojn8f(Bcvn+fskd_k+(#i!>8?jrtaMXSl2I)0 z)NQZzm305$V9dKOhkz!bs;-__GeS&=d%Bvb9?X8@M%T-WdRf5|J9nQ+J#1`5kWgF* ztC28m^qgI9{1Up<_#$Z%;c~J^dMDJK;Jue0{qDdEUmMZvQw9fr*p_D5sptIJ1U{|L z^AG+&O+ShUFOM!FJhiK!z*j#-L{r~mLYSP2=RS7iNx-nzQY{68UFiUDH?n^G(43gM zn6Ym>G($KS*0dOXDa1hlpVq4gD%89oD=VuC)DSgwwakP^k)Cv0M`jFP@wcs)fRt~?6#J{T34dq(u*r|iESD{0Mlumn^#qray0~9 z2xz01lbYAT`(@;BOZkESbOTaZ%*~LuqJN-{I+T(b!Nx8s zM2xTG0+TS3QG6N2EZ=A)mo@N%DVgkN!wvO{n8j~x^hd}ZNp5*cOxQN_?uvf`*q(`* ziAvx4Ai9DmR&ftYbbD`U8HkV0(|AxS;kj|1e3r&e^9UqDzI+K$lowUCTw%gkhTUkIOq%uwe|17cq3Fw!pA3$U#F z&TX(8 z&vZ=yRN;Z#qC57F8sJe_W3HNYA|nD-y)miZ>}`{ooo$815yBu<0}vDuPf{Eku8twi z8|r;I^<3uN9iK0%`fR)o2z-aNvYxrxWul>0oG<510(VBAAN+YG4>lD8@4~yxEfV_P z)oZ7z#mp1b^R#opL}g>;R%)Pi41-A66maI?z=1H`0zg(^3f741^xi)br(H(^$}Czq5ed4eR{$dRAbkwNS)i&Q>~=VeLZ|w zYPwBwI5f$Mza8vsHTd#i$!PWxm9(ii*N zmjsb-N~JD8dV1sxMM0_hr8p&}8I^c_5`hJ-QJ;gCRrU1~=j_U)VP?|m1L=~HULNfH z{L(rlP zlP}JLUl%#lCc`YHV_AjlTTri!Bnt`%e5gi#SPDLxAigE?{}x-E?xIzEHA?kN%E!d# znb&LoqHOchd=p(nR?aHxl{S;#qza0^Nfph&bur~ds!PP9Ze8&;<3EJ1kh+}0Rox1t z2ez&&8ZUs60bjXH`!|Cls?~D0feJ*-&x~wH4=iu7>o=N3O*IQf|6_rZlF{}rG+#i^ z)quLLzFIO0x6}#ekS|=)5FASRC-V6%({U1yso(eD<=^)Lk*>=cYLg3$MIOpUZBoS@ za57soPj|VXN)t8eq-j#9{kT|phXjoL?=$l*6*<>$9GcI~<`p|M-4>C{scaKF((%^a zK&r~a?T={x4>3fTRxw$FE}YS=s`z>e*$}qLxx$3^si{PCPf~uZ^8finEQQvMdJQrw zt142b)f8-eo3dvqkNKTyof#2T)+p*5ROr-<%Q7dsdh4S_WejbVV!33 zc6;d`<3TQeP~ej%eE!qhqP7nFbQ0di$F&*EzAO?`y0OaAI3`M z>(|Fr9Dpt^-*^BW4U?uJA2zfcgLsur6GtK%yZ~C+f8XvXT_)d{nVAW>?mWOy<9z<* z9S|*4l_q%k8jRlWY^<`J`N>b3xT1^ulC}S2$3(gAWDA+5j@*GWTddhVN&GZ&P=lAb*HfG zt3lGRef_<%e)pfF?5b{oRv^(lIWJF9f}xr0P)JclclKd}#hYTxmrhx%zBu)NF}yf6 zUch;9qr!k->)XYWXi=ZsbW+)}1G&DXrQWrg_W9@kdP+T84UXmZn}RJ*O+$mk1v(1E z+OUeMuH~4$sYx?b5R|4j)5Qep8Eq&8fz}+JNI6 zoAy{u{ez04Pi%c4}dWRj~tWvyJ@3OgvR~f@-by+p|yeS1N=C4 z_lY6e9{fSSsmEyzEc}fzSW-668QZ^rmnLzdn# zZl>(&YJGlweqcQ6)vfYN?>Mbcs1zvwd##5V6NBab|2@Wh{d#?v78z4!PUT=2Z3277 z=Hd0l=ej-agtYNkuO_K-$=83i)FmnDD&^U;hO+9;&c)!%vua716%ORO8}D7% zCfuqm@@!V9MIlk zZRg8YqHeCRln*Vo(aT0YVHu*)!@0)C#3aEBx;hMN;U;)5TzVw#cuqs*uZPmosh|*n zcrJ3s!Yx+cU9_R7vQLFVC8r_gqZlcq3e4e8=lbSdKu4GBDivtkfH@@UasO43$^%h7 z$H|!N?r!?l0hl!iHuAK_2_}?d;#*#1p0Hz^nzDm~ z+38d{p|Hikyq$_AOnUHSi?9Z-Y0Lb4;_ucuo&3$bO?%wqUX_)VCjjd4hNx?gd1KRU zl>(z7#aL$tZSw=YcfGyi@%IGbhj+bPRpDNj!Icycgi&= zRkXt9adQZAaw=ld+TSr&t**+YP5iMyZfZcxEH%{xG=uN0@bGZ<>mu5U>6m4)&(_X3 zBw->km5psBD#UgEJ(a)nnl|Yv3gC8z*3~gLEd)jKUcK#7kz8kdHt&92dK}{`cD+L~ zB1Qao6PuA;edfUP3INF1;-=rH(TSG0ZanN~;!Tc(DqUF$(GKXl2cB##pQYwDN`dke znTMrH2Xa|e(qu#Qy(UZmrot4E78P6{8pd3*D=Tk*dDO9-)8DTR%r16r?k~$XK3mIa zP|h?nZKqApc|3l=#Pmsoq>r8?u#iQ4oA3`CpiAHS)-4cu?X}Zs^)Qcjw0V4pE9944 z@_zl|4UgYUmGy67S4@P^|AqOZr@-EKsvW$}em&(RQhq@M{gIZ{ zUKyR@!j3KMdq!N_`t-bt=H7l5$|d+9qr??yZf=f|Gsh15!ea&f)>){{rkO0Io0`n5 zjEz^**%esD&F)8J_-d2Q_pr+$8XL1v*_e$5x2&9;Fh(XOW^fHNbBa{KUc$}24%TpY ze*moXY)B>@D4oiLY#_aIabBLVkeH-*DM?>%PfRThPH}@;7l&Ylwl*4g8)5M^0LeNp zRQL9-&xWUtkCTM1Ki{|_tGZ^dChWIuDP2yLL^hpN^$G4U`^zINq` z5=Hu*vuDqaFwkJc;+p(VxK(*@UU^j5*A40F$B(~(LNNV$x;e3;uJim;=}>Ix*SUYg zK78n|VQuMcb9`V)WAY zq%+Z3Sv`W>p&^i*J22q6K>vL!DLFa({d-mrw~&y3CnjyhfA*a}ckWzx#IOov0)WE~ z5xqfyrSdd`n;c_4;`p!YW7!~$_+<-VTKV(`g*XZyS&?O+U{{a-{O=L6KnAl zqngIJIllM7xShE{Umib5mDAq#MOJa~DmNVnoqv59KOKlQz^G~HC4c+INLYJ@2SP%A zU4Cb0r^sgINg&+a)QUR7oSB$-%K%w^A62L^VGcXuQoO>WAhdF$47hNX=6mJQlXX5ZvLa{(F zej>(^|LO9Xs^#56?V{;`$%O_wK{YsFC6%jY_jbSquf%4q8f9*7TSOP{gLVvHOt!wyz)g(}y#4VDR(+{jSR*~;r7w25ze zlG6#uFIC}#hP^fy1lpMq7j>V!-&tQ6*j?jpkne?`2u5-IJVtxBCz4}B^4IHY&P|!= z>;eKMbsM|8p5nwo-hQ-mv;JDt`V0n64{}xru<A^o3*DiGcrE)7;kJ2?`48!*K;KV_E&k7+SV*=dWa!AQC#XZNCFOr4ZyWv z*0jY;O9!0i7#82vj&^Ve5=*2HEKAj!+UmWdn}M4eO7`4`rCtQiMja8~nYZleDczG^@NJ#>WHC8@Lt1*3n+X=ylbb)p z@-tnXHZFhFyJu?9=dHS)k(c+daZwMdfT`)lY9PIRsi{3z@m_4~`pNzw;r?$CN{>~e zptf9aNb909VpN%bD{Is0RDQlada{2mEGFhEWYm+>^jZz|^E=!V;y3zszYZ2Q)Ynl` zQrelEt7Bu`Hrx<_cnXNA?4hINz~z4EvT-k0zgSivTVZ8oWp=2dG|AWqSO;;1=dUv| zPS0B9X*f6(u(3528`Zh8v9P=w*spiyM^2N*Bo{HyZPnNAZ69IUE};alFlhxa$yFdKv0Gw`t=*H9eL2J}wUT=z8&1uzq61Z_L|i>)BTrE7Wg8s*#@HTcZc zYnzpOwZTHlkW`~x=pMehx*An_npWsOM3gnuOv0}}5LSfO0O=qLIMn8tG}?t>y&DK> z5vLEpk*xy>U}O1?U7cu#?7iF{KZHo7#l*$+nj<-ej9cEkL7*q2=764m6+qseY;{Yk zMfJM+dR74eb>sS=P}CQ!?l%YNGF1(YbRWrtt*xg(UNE2OVrpt`#!R+GM@4c61qF4E zH>#XJbp-bXzl5;7AzN2pm+87Bq0Ex9RIO9p@D$X%6P$M(2KY;1yF_vOM}}nMBsB;Q zfB0}o`rbVY{DxTW-k$Janf;xBkBj$$sB=$p?iNGQ16f%YtL;@2Hpqyxw$1@+HNQi* zd9HSGlAhet9}5(aokxOfWrFLmz=||r;o^EQ;81EgR!`oFSBw?V6~fl=r~VwEn1rgTYiFf4M`XbM5Aw45 z)Ci>P7>7Yg(NN(W|DOIldcA-hs2*o}uz-)Fi<{coBG|9qMj!y*b_fG(dy)IluWxT; zSS2KGQHF;{@#Fsi(mKYUl6`zrkOelXDv!cTMnIFU@sVIsoKvfVXrixw_hAO-xK?F{LQ5J#e^RsD8rkK{9mBR$2XX{IfQfA^kUR-oWw3g^B`9C=TwkEj}kd zi$UqAlGhm|aQX9PNceEZIn%kf&q{3(kP!VS*}Bc$p|`+^!YH_Ur-F7+Sv|7(prh71 z&Kg|S1V=uvJQ^x0w~qFOwe9gD#EF&Rt7L24Th{pD%yTO})V_5M%%vaM}dady%?OgPDSM&Lc7g3% zqOC{vKR@3>@A_wJ-*~WVtiW5oFkGdxIlLBmfhk8{OAEb-rg5In4^`7v?n?3*cPMw7 zG0^~+exCbKEJ(FUq+a5eJAShva-0|fl#kx^6pB47GMj=8%OvBD|%BJ^eF^}bu){w2MbIqci-aww!t-Jnt&kLTH`F}ofUyT)U`G7Lw z<1qdsrkQ{rdwiYuBQHO%qq2T`gYT=x^5!X#&2qDr7`OPjko5&SZ#i-tuC`&DaKLNt zq=72N4NYp< zMOIkFq3vXbplv4$6O(X>^-&!t_69^z$)0!_rz&7P>~yC~ruSrHNeYmz=Vix)!`!*} zT^hDY)fFCNj@i8fclS5SpKX zJGhX@rLg#h0Iuo;IZn3#_1J1{khjM1X@+%dj@C862O&~H0^qyW#JBHm=x=?Ok<5dj zeAV8Lm2gE8hi=(@!J&1-kMh^Ww|;Wr)>XVO4V&_OTu(ebl!G&i$*kG?HZlv{oz1{< zMgo(X@M~%_3yszW4=XeUA^KU*sgntfUlc92xx3uCv^iH8k0*tt+l1ES38Rh7exEuIc!rpH}}=H0!@342RZ78}1H9esdjQ&(z83Z1BH zi?$b-`gY!UQCxt*pkUUaILO=>A=XM}rlqOFh>z{`3f82lvhj~P(yR_|dP&Jea;jKa z1?-LKj9kLqn;*z~T0t5*ukmXPSZvLPov@6t!ILj9cUHt*E#_W-nxBX?NQCMg_cZjJ z1EEkvHLevEOl{{$sIcu|ima5L>y1ww+1v1T?8ODS>Sne^8}xb;$KyslzCGrdsdufB zAsIln=owQlf|UUszli%-y`$6iga#DZo0BAtMc0mML+-)6s@Jbj?`*5QDn%$!=st$S z`jv9%q2;kPbN3KkcTS57&Bj5R>P~dcwnx=OL8;=5`)@b(5npIy%GXDU=!%BwQa%k4 z5m6ZhuLD6E@jJx5l-`X-Ngqj?7SqtZ)g4TjyvgIjs40{EvIut@YI3GNK#5c*p{L!L zp*+nSJcgH9K3-CN(7;K)zDS2`S!7W*Y-AIT!7#8sgt%c;lr~c+VrZpypx%kHuh6WN z-hKK@Ov8mOPwhgN*shr(22j+pQ*L{#eg@*as3J>dG%DI8%*B3RvpE z{DN_IAB>@Z3tUiaXM4E>{8rdnq?6w(jY_f(ur3(Xta9zFM%HBb`E?G|L#dLKiDnI! z(8lRD2Er40pZQ{J$=qg*x3%n46Vru&nOCJF5spRQ+@=gJ1L!gp?`^BP#f8`1amL2F z-VbRLo~l$Dh(Kv30`CB~?li|NS?$qHFuLRy=eEOIwKK~;yR?Lv$;P&nZM=_)j)K~f zkc*iZ&aM&IS8Yq63Q38C(&_5GGzIn;VVD4Sleq{|JMp^S8-?*%$;o=4Q?>JrCUWw` z$6sFD<73-pHZh2wiu1S^qN<|;2lg*WqqAIS?j#m`UE@T|u$xKC?@q=d`p`liZ7 zB0^jOkCCq3DP+!~BN z+hxm3en{NULzWq+$Yw}TP}d9@cIYz+Nx?4?W-{OyrG=pinHrBRL7tED{YCbe3>zB3 z*lSRB*9KM1L+V&V=7=+vF7$}*Z~Wn=L~sK~I!4%T?q%&++{Q-hfct0Nr(17)-De*J zhAs)oS+bp6?>%XCj7Yk_@U^#I`;~MI6V!7KW%c+-UfUr>?3VBn66(lki;!dw7o#n6 z6k>mzFJEI}Y_o71p=@kiTNXPIbgK6hg9pnNlo}Pun)`7dWj%DY_NJ7a~L@?@~Ds$ zfq~`Tuf4WYKfdZ8_HS{$Oib)>~bx5U+gFFa0Yy(}f2T0Sj z9C7zBVf%r1jQxU)`%E2>i{?(hB>0u-+Qz!{JHYCwT9sY&FiG=U%;y*z^nG(z7gZBc zg;XJrQNTVU7|RsPD(hHfGiDZKS$2={R+TarIGVY<*m#&=_kER;y{ES~>!QI{VMt?& zdX5lnTao4s?aHTbeywa}*cTQmjXX6tH#9UW1h@}&(Uj@1Ep0_j`EId;a%A%+i>u8 zHBL*~mWo2G?@H}WhamCDl%a~k_SBu%R-#UEpvc|A8OV4$^WRIdX32OS`^?j@jbKotBr)ZK&Rv^a~2r*I>?lSdIT#rj=#Si8L+UYHwQj;=F$->QH4B{M^fi1NZ$>tiOB%h8N4j~wa7VzZ?# z3(c-1epZu{Yc6Z3H{u2f%Yg7MMCkgxSU&TdH}YuK85Ut16zIyrXvj4kG0_)0FLCl! z?GAw`o>r>2;-ZJ#rbKW3k}EcAw_Wg9Q>a?0p94-%Y!ilFy(+=IYpSEKFB9sS4xAl} zN;hKhaf0&QNiR=cM1%~xZx0lWzP5dI$4}zDwu(w}T%0Z9)t%_Emz+~gldW8HQC27h z-Xl+Ovpu9xGAIS^p@AU39!ok3Y%zUjl}$<_Hm}5VG$&VFSw=>ttsyyo-cg+AsVK(7 z<7!n^71ZQala_wzDG`6<$Pr*=fU$g)vrSzSGWIOoj; zB@lb5M6A9>{b!Zew4>VE^6Vvx#0Rc+X1Ke%gEw)b@MGLbA!Ld&)eydeUVP8GwlcRo z;cIqH*&g4=)-*Sr{Yp7hXUJmixK!M^mds4?%Ia%pjf_LtiE#P##zmGkiAM#jJU=8B zMBd7moG7&T#gHK{TypVZhTuAWeUrmyMij*NsPyh7tX)@hzzEd0M41fPM6qSry0#939j;UXH)yuz7f*NTYZ%fU&B@-J`f*+_FxD?%F4f z+b*p=W22ZA3uJ4QkgLGT&rN1y=T{dB4I^XT}=&+I(o2g8UknwX5&P8J}Q;# z7v4e3?}T!f&pa7}3^*Vcu1e?#a_Y$2X?I(8ziCghiTxaUdk384RuuZjzI%gZmIdL` zt@A4iCNy<&^le7rU3|4lltYoo4tIEQL)$CF6qQVdV!KgqlMgbruV{4T&7)g3Y1W)E zk+0FMCZbd~gCBjG`~C6uu%>9900l+Sp=ubHhGO`Ucl{BjFy*4gd8cfOYwm5vw{80c zJ{K!{c*GJC5jjnIiN-p9v(CR~P*!{J2KO6KJ~B3)&yhKDLlCi-*iJwAr`}o>O*{U)$~tH+bU|1Oo97+3w53-Gq@)R$k~ z7DFQf-U}uBjwQQ0uFk7t$&cB*I&2ZP&2J)s-#Ah)Du{7j)KRN5XwF1Tb?;3LXCr}? zM1C%mvi&aqVs3JiF#(*#&9Rjn4&|I-e<=SffjiPLe+r#z2CIKyheAZIClWR2)F z>FZ7FC^1E@P1`X58_e9s0%G(W2$D)&H!ndm_RJiMZMBWzOdB(9hc2r?ot&WWZ^D!& z-+7HQG2JRKt&=D|mz5p2=myobJT#cP(f*&AvWzKW*RRKRiYz%?BP4<7WxBAPbOJ@H z<$~K$2!w1%$K1z)Bt4y>bN;6XCMQJ;EbzI|t+dOILu}4w37@di;rTU|@4GaF?TY_2 z6XOy`*pj3v-g!j#QYI}toIYYWSM19}odTP$Ut)$WKaNsAbsG@4_C47)wC!{L4mB5r zdiUU9`bz?mR;UI{p*^hd6q(FiwHV498W_?7UoRlQ9s0+@+Rf9dWLglps_odeAwYK` zO#DXKfW=_zY@6_b9;{V?^&=vv0T4d=3B?9ZgTs_15an?kN~T=28r^wA52yV-6AxDL z8#TB)X*juec}>_a87m45ITD{LdY)>0s4;kMsf#~%hj=B*T zahT0Sk-T-!UEX*f%&C+zj+k0#89pgc2O{aI-!<>mTrb(BXtCnmwW~o*<1|BVdD>&c=7ZpOB7J5&@ zW!J;7g%UugK~OAjU2-&64b6WG?heD%dWHpIP0i}3!B^SdJMw7>#(bZCXBr9Tox_@< za;extyia3=F4%akxB92c>%Nbh^@jt z)FA7)`+Ymnr7qjA@mo#alHIUl)2RHjhK1;I9@x#k5ohrl_(7cD!|SjWe6vW=rw~Jc zo6F6pXIQ58i)AAxHCJNO>}7A8PMYFN3MyAc;zQb)XT$;ei=l$vNo#AYINE9s7DMc{ z+?O~&Ai8(scvQ7MUDJC1HBjr+ogCj6;*gq7z!l~-t(EGk=@My|)c8!BYc%|BT?E}5G$2dBi+vMbSH&4adfs3(4+eJiN z$iYWe&2&`0Pt?jzlT9nsI4;56A^~y&bY6riKVFuPYOqiK_`XT8IxTkZR;ga&V)yjt z=3w+t;$G^+;lwWUg>#_}A1kNPWQ+5$Hq=+%?zq<;OcB^9*x40AhOp(8F0I=y7ihsh zq`k`;4?8zy4ba0(P3z-K+{;mrZ>PL6;(f4`0sVeUz|M`^eyi0{P{@X#FzeF0{%4sY z(xD}D+d|?nk{h!9(u6_-nK>t;TKmMYF!zTGpq6s&t>-(~1?jM8nRJ+t_O z3)!0?y2X!1qq9oW)QPUL0LU8-G}w;A($xV~3F;_WMyJEo$stj%WiF^&zkGZ+RF^e4 zr~+#5*`JFP{KRbcenPr$dKU6!=~Y!PH7ac1iyX%wflBoZkhkCa$2iOcItkWRx)i|A zh|DcuJFu0ySLPx$YK(&Z{AhW(>Z+9$?w>$h0JP%1w(Inxlo!s$$;HLu<=83SW8Bhb zt^1__mc&21pddn@9N4ts9djzMD1}`n`OPm|2*eM@iykCnrfEgfva?SewAW)|H8eCX z2fZqV8Gssa94O+0MM^qpe@F!cjrmeg>#8$q9fP4A7#>c}(=1z@4)o!gt2$5h6TE2X zp=mU_i7bJ_#@fvT6fQb}_FUUGy2qb1KECRgm?pTEv8Cv;3tiSEzgAEhFz94ey zs$9T@bdX+vLhI|&%Zp}1=WXhrfIr!el1RC@I$1CO_+#8>=7JgxI5dJND3;MLN9*p* zE^r#9@9rqAjO_=cQqJuX^ut!FtDAT>y1PD^0V2KiqDe|jX<(FpxO-(O$%q~<$vgH1 zS`VJOs+9`W2#}!8F5&hNEh#TYwd{`ZNCSDX7kc z2$&p}sRAg0O`){*3=?tf3q-H&*2p_K5zN_nD5)zmKwtuJqVPro_N_pEUY@cjW^?>t z5x~hUWWCrzoI^ed)larWWC65?2gDV14}177zZw&;UxT9t!gY%t%-_ss0~|nMalODt zPi##mOy;r4Zmo$Puh70{%37VzN?`kfLic*NsYsd5{d$Mr@i-st#~HBdAKOv~`o?br z4}XS(T_x7aRa5_2%nSdtH_bQg`Lx=>a|Yy$dYLg&TC#r>^A-TYk=R{YCl;v0I2bIi z144xX1TnYCLO_@03E&FhMx3VA7bz&HmpRUfrwz0)PW-t*GmCP>y60+;4>FU((cCt;_UW~r(;pH4o$3W*DUA= z3nd$XPY9C1%4loHyZ>%$LHmRW3*>D)gTOy*?I_v0VtO3+_yB!{U*J2tPx)bc60zHo zxDBExGU?bqK;6G8x>uK9vuw_yQ}Ym(*3CPVzelT#i=mZ+3%FvG4qA7~`m83g3Hh}< z0(qJ~0WdBGX@EQqcc`JH`iRq%psca+9quVt?Np(F&z}+=-g_;i!D}h)D!R)>Ck>o2 zz!*Lq`P!|(*-*c?U+a#VQ-uissWK5+tJgQRkz~DzNLB4TMLG3s_|0_3gUxbuCmXXn zRNp%_HB~Z%X$xELsh)6p3HV;tix>Dn*y!AIqk7H=D;`#CPIa{=pmT;*Sm|L8H)O)N zMy-3u4y^l!H+Q20Qu1s%K6c8a^+C1)1v!_jrm%I_Sz_EeJLfYQ&D6xcJtu$>o^Lvt|j(wxfl z$0iq2D9=$KuVcc!5{fVbC3i`jo_N92a0vBq1AKS84~r?BaGM)|#HRBS_c?Jmb+dJk zm;Ijo>9h?cRf~N8iSV3Uzy%4=&#bN0rYV1%KsP~f>i3;UnVhUr@ke-|)HZK39)eZ>7uBH>amh-)csXd@48kzk<>jUt_rIn<--pX*PG14xoW614xi8?yE9yUcZ$!Sl zxEO8U2{8|-F!h)@jx=VMYwf6Ld#s`%bPKdT#JFTQt++xCkcyTi``Zp`A6UyZEovaw5SN z#k60RR#)SVki&(J&v_j&AkkoGb2X6B7} zJc2kzcAn!fT|t^*#?Jpi?edbyL6|-~N3W&FSb2I&8gIZg&c0x{(Mg%=H7@2*VwsL!DK7E+zOtS$8;Pag$`{{I4B=W9aEfKPe4$f!e z-s+QcX&{#zmwO+xMbHcHf1B+S@fONbGViscd@p4rhp+E&jWZTJD&5esIt-@n4#8;p zO|bCQ)sMIK8c}zGBKfF3@I%}jl>(sgM$M|-$J~h@zi8!L8R)T#m7UZ7UcQNl*2_zwzmt*9amAg z1I7-{-nd(-pF}LE>)J#exL033_px;rjZ@?^DeidctYv%iqAE8hD2AkN)8Eg^lF8_E z$Alr5Ml1@T4VZRbb~Y0=pR1Vg_&Cm=z`;Mj_{06s@_G3m?VtEWz<6iomdIY!aV-S2 z4rg|SJ)9S+|7?UKVST6~O~_EmC_AQyLt7LvcM*NTn=%$^WJXP!3dwX=Zc|E9uCC= z&@s?^r!VnWjos1^T+FBA-5unW*HOR zmjU{2SAnBK4NBs`IWxDgdZwrtK|x7rk3qbS==jJI3vy2bBfZ%}I-|T9h7SM1KoEL$ zCtu=$nYn!_qzhHmrX&**@CttCv{ajGrRNL{uMUfU~oI+&wl zsXDInk}Sm#uM0iOxNESDGtlh1KlWL1@A>D_%is4r^?RQXl+xzCRwwGbL9_^Yc*Y>k z6QpZwbQ5u+j9&Gp2xY7GzcU>#=9n(`H=p9tz^;@UAAAF7N5A~XqATuBeUksx_KDj7 zYY0cjFI&EOFRLc@{)vg?x;l)TF6FJLr)Ez!bgtbp0jnEkbWZ$9XD0;}Rorf= zo&D>FDdyHOZhJPV%Y@Y;PNsTQodH;dgc)t0y^y~Ty^`|mxc zQuR1vfRv&2#JXlRB({}bQwXU+;kITpP_tx|L zudZB!bVf-k;61l&P%Q==V6pnnUf}vDMPGt#xKI4*!B$biIAb1Pa~6TkXi|NJbu#_) z{oV&&TSN<89e?^~*mubLc>FtuzCw_9(|D?!2B(S=V?^6y;vO|w0+PY!Z8MMT`Ka8o z@LDp!jHl0&5tEQ~9gg^W7mIBAQPghDFg?1&%96i{^!QVFMv`*k`oH(&y8{gcm6bj$ zlmMi zwgR4qh8(q(Hua|o&f*yuK&$|ojc)a-IQ_iGkAG{NfEW7S{d+;+>P?lEp+CgObp@r# z?j#Hb;~C{=sKiY%Q0H~X6TM*l9ta4=X=zY>=az?iy%^cwi?n!j6(%EcofDEGIO(Ld zHJY@(CC{jrhEnvGo_Tq_G}v_2K>_~B#LS|6-|t?56YfLvy+vHd{f)c$mS9(cU)t$% zO(uiO+}v8lLo!eyOR27-ks}GBL&%sRJ@(|o@xAL`G>YL4b=cSVe~qCRU?e7%JMWRI z@75KJ$O8lftNVLLvLD`jzi$8T7Pw>}-t`2wA-P0d$1}g7oZr7WLF&~r3b#A-PX2c? z5bdG&w4W+71U9|@b02q)Lr64#mg4@jZqJT{U}zad**`epE&KLm+2|^8@4##7aJhpU zPpH^`4Z_p~C=@=WtlaXj8{!roikMpG_1YQ)EDyE{yJKQb)z zjH0_kiOIRm7B#u>&v?G;ce?yzykT@LpY+(10M#2TEAs>a9ncE|H%|#}C~a3*qhnL| z`0HJeHN&Zb=}s2*plzh|^`C-6w$F-t+zltsApSMY2&zW7O+|%Nn~{R{`1n4nq=GZO ztq<1s>-1|NzbR=wWJkG1frTELEC8)hhD$-7QCu>>9aJ_p{^!A+{p%z0L&IiR^~{lS zIRyo5lXK@Drzrq!U4@V8*>mYaEml<+*|~299FWA!$|#oyh--50?TmA^vih@xbxz#8 z%i{fa9r)VeZm05rIYQb(@A`*zdkJt7mFX|3z^8ok3GGotQ`lU?5xmtKK4R_OM{J+LX`ek$#;06VOaqv#!;HE(>q_9SN^!RdTKHtP? z9LlD9M)_003BpaG?BWu3KydnlOxkblUUG1ocm@XkXc+mWKn8Fv0zJxFR?FFd!SB*0>;SK zbpi2DxGhrFSFc|%MZrpi31xnH!qpf~&ycu(qi zM>1x0AZ%Fb0&hYHx+%Y^5p)=PE;9t&v9n>&!tBJyhU@1?17*Cp0c4Q zK0@M*n~z+Dn*tYhJaVgq34-$=TZ4P+w7%!?YhYjqWc1qBckfK?c3AQ*RF{y-a7HS)+CJ4D7lyO* zhYPxv+_RNoW9ZUV6{Y$fR z3RG`9S_UH0#8dp5^dEhG1_1%Ig@y6rM4%1yg*F_wx3@D33UsHX9xgcwOwP&1fWZBW zQ$)Y)s<-|#2kL(tn%l782L}5y)6$fMYisveO=UP^-oh`9(UJb~ah9mjJgBp%)RF@^ zB+n=pS;!lKt{&*&g7}{Tlhe^FOu%Ib%!)q4(_#K+=`;Mb3_`;pE`bk~%Ntu&UHw7M z6c+UdhHz;Hk`MytO0D1SV>rQE+T{zToH4((^f9Tu&znDk^5;w3jN#UyG}rvrmCWoS z84?1+L|A3Mq=3LjyaPWWQdK7}n6>U9U?_W;RuH|LTUtJ~u*gx!>W?-Iek@Zmy%G|U zzuC^L2}-;IH4|4O#B>omPgM5F2=kHA_Qz6T_Y-J6# zYN>*{gEtx)pE8vGUGZ_PKyzVYZlC)yIxskq5B}zQcsh74uwy_Q)ydJh4Yk?&Ckfn+ zLQ4s_ef0%{dg8QP+%fAqp@hJGJysM>!MaKtx zU#?0MNl-I$->sfxuAgKpZvMRPy)a6e02>Vj$bQNeTZQdjA;6T7uZefsISq*G@zKKW z@?4Y-mBZNR+L?!!7eXr7(9bCetB3=d zaLaXZoaGCbY$pH>W0736La! z`u16IHmHH>I>I&l@L;H3;K;PPGv7EPAsd*QIJ#rvLBA>5AL+wrdaD5}#5z#ES94uQMg*1sAoJ6>U_F%qx4vthA z=5<6`H5)pL{*Ee`6Ix#zuioCU@!>jhfgQ+`Gi0_p;)Fx;V4KxpYuA4r{h9#oAq{$a z`4zf#Tzt$Hu3B2z6)M8F$I8pK_`F?TjVUPdu*aF7?~5lqAPfC<4c zi4@$S7uy-03OHP4oE*Ql9FP;ha>jJd8;V>o`=jA05U;`+1OA^f-zAW@R=oMXbzkuP zY$TX!VC&;Nu*ZK6j6fj7ag}F?F)&=Q_aN*a?#a&Y`gmtuSGQdCy{*}x`C0!5z+j_A z{{)i9GL8y|-OfU00@tz zTze!7hB=UqQ1UA%>b-gR`PMfS2Tev_^768|+t}JaerjmUmUcs1y7M$=rSPfn)bL)y zD^W_J)i!q0bBo81ndZ~JL(rjJ?JN_{#MDw?!)i5FA${sUPzZsy8@A$b92{e(0>O0sC+9ypQVxK)@*(UGt;r<~XH$4Z}o$R(Mar zK`{ce-Le4MI3>^fDjgK={qxzyAToduAgibsB0xB3xN;<%`zYZEaFGxD6suWcu}cF7 zGpeCcU{%ysY;~1-d1*=6#wPJ|&*Dbw_^;R29+m0aZ_6j7AX5|YnBmM)=!!jZaNCE1UKIVagjTt9~zb%LFc=zm7LS4)x5CXytuuUys4hKj8sYu@KlzsGo;-OH7^=>`>O{uI|0ukF zVvu*$aG?V>3v7ro>*2f7BSrhhxRqsU^OKtqp$3#h0Hqrn8>f4SW+B$+Z=u1347kfA zao8vvsd^pMY(hf;E<-=bLX8I*WGW_oAYK8lciM`s>4hYO(zgbjKH+K^Pbo**_n~no zDBlwB(M;dlO2t#>8RC1>VMTQI)>~QqBy*CI#1gSzMbBf$mmJ&I&)<%aMqzZvGOp@+ z>W>-93tLr+pqG$yV*q=hYu7PD(JfZIv8+{l;c+eJws%pHs%0cY`o+WGp7#&(x-Ax# zmOhG+l>qcvCCBM&sGm5Hd7X9wLIjSt2O#G~T;P>@e$um}B9Yt^a7HuKAWK9(j}hY# zRE(+N(s*7rbwEQEk?u_puD(L(?>HZ0x|FOd%)Y!&cG;*YjfJICF`xM=@b-|NJ6oh{ zifU@EN)~@62hOH89Eqaw1u(beAiTK~lWH;k@C^1zJ}A*bscMnNekm>ds4eHrEk7Z0 z!rxCW<5N9n{pus0t1`Ng7$Un9Xa@ADj>#S8{UdK&dY9j)!dW1m3EtGL%ZxjG%MNJP zP;cPUWkqnFikxH`gf&;(ZeBFzjFC5@{F&sjR`)pQq0mAl5mE5>yhff*`JT>SpR9g)VO`#!o9XgKkqdzAmgZr%As>h%f*xj@D9!rN2P zhUGRM$}W>$3nhcW5_Gs?fQ2#Mq5?4I zpUp(*L05iyWhGfp-6tltwoem}e~3P*Kvqv~>1f+FK9VdY`RDP*{ivY{lT$BJv$C>U zURuQ+qAt>WB;c=KIsFo7a_`!V+Ffum5s2S!5qdOF$nfJjHYQzR%uw@CcQ|f?ik&(IpB*fnOXOxI& zPOuq|g2}RLYGg?Q=_co<$PFO{rlXSWU&`~3Ztw%d201(DN%FISO1kCu3ZNiBkh459 zQwlac979`mnE5E(aC#j77>El!6^FQDmM9(f82aZO^HCX|m_S-g2=Mt?Yc@VlvwE~# z0{h9;#U~EwQ{96FB&w0Xn}5FE=MalYq<`KN5Rwu)UgZ=_zjVBgeLTE6TQBW6TRoW* zYqS4aM&|LtTF}2kPyb=bnFWAkDGv|ix&FATXWejhp&%HpT`Pv${==340l?2UaDc)% z$LE~lN7c@j%3k9-kG>|?49++Tpx0dLq3%-*jg$!S7g6#K*;@Ji%v89XJu7IN?;Revr%Og{G*~vbLJ6(++xg zb3ufKg~j~&a}^->M@G@o&>bIQJ!Byc&d$v2CJ@=U3dem)C|7J})y(R8_a`0;z*BSb zGq6#u=^PUJg*WCcK19c(9f%v;?<0&}Trv!=pX&7eK$G>2He89Ec zKhrGWI@J*Eg_&W)g2N%SunBpkDwjA^M2BPk@Ke=#mWWqdWtJ1UIr;g$K!!!fP9AB5 zUk;IQ8q#)IG^9Ozg-h+^=@hGY?5^}+jt`a8lv2|&?kcOhRf4;Rp7mH$5r|LtjT1Nf zbNx6EhvXmPKoTUMfZ%Y4EO@T^?vE2-4ZnVUaOKKraKFGX|JKI!8}>CMhahmvr|vL(bMkx8L*q#{UMQ5|PK?=+tp#fPJGVUg z6O^n$iA);Y4=A@B)BNR@Zt8y$SrcFG*B`H9p_)Lt*YEfcooD0y1XpIIQlOp_nWI8n zKM3_OqvbYzP`p;~Ao<8S_Fsel*5>w}vWf;%Ju;)N&fCe^36P?5^|WtEA2+P4g5Kts z_0>jE+#D$yWM}ioCtk4oQLK^2#LTApO#eL?Lr6qI-O-ZHy;I=Iw##(Fq<`YYW108w6xE9KEWWq71YM0Iq_t`tlQu9t;h+9|xn+cxEgwPu%KMP=+ zHhOHj$i?VR6A*Tb{CK%z6>^2p%PUmF!=su$3rLiMNNPg=U!~VLIkVJ7?;+l12pe^{ zoF)By;(90%xT&2_o&Ye=?sBIkzPrH}xEcR}N^zfroe07_==cCw-iV;Um7s?Zss7d` zGiiY47)cE|fS-Z(v1b&{O`76+^cQN(XTTW)MU+a4wPJ;8TD4xakRJzOa#>$~lAj<_ z?^+8@mmzBo(c3?!!R{{%y}_>4k{3Qk+p2RGbU7r5!cdwB?oZ#v4RYvc0okG}8;5iD{Qq5` zq<>?Xq^|}H0Idyr;pYqGPy*Fe@UDM8@`!X3F1=gYK8wD6;Y_>g6vH+yDA)TNxa4d6 zX~_#^Wxx-(eJSWRRS>WQB;lz41AfK71Ed3zpM*7#v-7g&kN@-0aqwEh+0efRfA+_! zGko+M=nMxee87$&?)Za)$<}oUt^p{COZr{egQ|O|(OBC1Gl+@5&{Mv%a4f?@z>yT- zFab-43&w~^m~gwaW;S5J;QjbCRI`7aT!;RyHm-?{uB{((TqDS%hS7;%Tv zl6eC*8h|J0^XG1p1v698C^HOSm%QVu!T4rnt1K@vm&CdHj@EV$vZ)Bb(? z@0Prywn<$Mx5=aBG9bV8K`x`%Ppk=iE?g4j=KFW&ATQHQIxP1>yal)mz>fs6H}$(F z*J4&ghI_s_$8?glvBQguIb#99GcF!AE>$xsj1Fws*T_{Fw&Dd>x<(tC8hJU`rNAg!v_s@5x_#XbpLT%t` zwx8KexQuKRco3dA!F5iY?ep2EQDP4s)OKWBzo))6@w1S+xyxi0&A2dZnb4WAwN~x1 z!;f66W-yL;VsOh&dTfSFvnba@{UZo!Q~TY1@L*d&_9b3G%x;)pY-J1{F?;WsrGvPL zh|0tD{6#9=g+m5tHu>-Mng2DO*uVey@8AFb{kGJ_MZ62+MD`92g+^@(2;TwoW{>sb zr7~IvEat@PH*fF}TGh_P3tjQGt1YR+5UTyGcwWt?t>|!S)hcgyjN`<8+H3yC9roXr zf=?~z6%(JdefW@Db7`xX-A0EH(ZFlg)J$}wDf#g4>sKhup=fJcTccr^FbQIDdAW)X z58%(8>&(nV2;1d;>C=dXGcmHE#Mb&Xbs|kAO|CM=7q}@{`j?-cc>%JEHa5*08{Jld z^IAzmlG0tpxw)_L8W2*SqVVzZ7kc#;{hAF(R$RjszU_YN9wG`JzTCa}<6*Q!@R|4t zRFOyuo=LPLPkJbbJh!dcJupDF zc%#RQl}X?c`7l9`3GUf^APr|2Ph6cO7=XQ9a>UL#I^#MH0NrV2+6(WKd!pyuEx!-W%vwXA}`Zr0-SnI{Q* z{lC{5**V0e7cU2-q&prM7*H75t4e_@9*NiB(cLHSLkb!)rw}D&Wizyx=@vYip8hgR zF9Z=8D*)^dF_moi!g0QW8&ihSQE?QD`eVH2PPY@hcLZm)gA4=h^6D6U>24zSMk0_8 zu1;r*xTJl)Y+5gLW$I#&R`~nMr1_Pl$Y!UBefDEh8fcE z8)x#(pU~0Ky$cIKw7CHOy}0gDO0l|L&(#C6?-60GqM!${F&7gt<5(T0eE6V=JA6a;@zxV1?K^?v zYgJ*4hKZA5ZW(7euWcXPwiCF0+e~A0cgOK@S08V~PCe#Ae(;6$U;*yC4JnnP;}tq# zDUu?WGhEiaq;kz&%ZUgTq$f~?&OhqR%`%&&y00Vj%(~}?3jh1?abJxSkt1rtz!#yX zufl(%9iLY*@igSahr8dtBZ)Rz=M#Vz1U)JydkkrW50gr%%>ngN9u^wYB5B&2GKN8O6oa@$suO+xg=J^Rfur zviy7f)9&KhNrCtO-YgFthYS!KB102{uPBKJzNpFi(X>-DoWVCRF!=U7qU{wP+rU@& znnNWQ^i3PgOW$;SPDz19CscOr+O_*GF1su(Nl$No(QCwqmRUEsxi2$DoD~)x2QC8a zp)W&dcw)6{&@rvijN4tCjFgm4MN1(^d~7G+Z%x9{7GUWW#WTUrVU2#$7744&3ow%Zq%dQDMix7i(lx*pZmGil@B*!{9A zG*pwur)u)L&jy-*2ufw4|-=84b-?y~Wka zIlG|$F$eg5cnycq<05a{e+T=~NQeQ^_Xt&wVV;?V%HF{9J}(lnM+@Oj(8y-vaI&6B z4m&G~p<~tJW0QmLV?$n_d4AzE0y;r&gxDN4e`uL3HU*yS^7Ds}9=YA6q@eh!X;T|? zZ_-ndQ&dERrl97xX2GGL(=t6~brREwDw;f+H-7c%mFo|ADX9ijLH&)GU3u)bd@EA) z-rUdiS3DN?9gG8++)^_1*>2Q4qmcCly1lv=C7 z7Am@kwnDot=iJFJ19Xc5LPBrb-xyE{|9)?T3DrIRpjnx*f@ z?m|-P-c30w!I_J{g5{;Y^&vea<1oj}^$q#L1n)k4xY>nTUT#R7@Fw>13Xl$4%|TO^ z8LS?3!dCsd@1U#KQAU8MSZhQTUm-!_}b9WC-Gs7ZqtNNN|IgdRuDy`CQ9z@pc&D;KBi%eVZF)gsFAeAxx$ zC`CN6PYRUBP3+|nVi~~=r1B!ct*vHuI;N(An7xCJh)|0%BhG7Ot3QJybAHpWW2622 zygj!YM|F@6>61yr(Q6J<)>V@)y$I@F{K$Qzvx^=}UYAa1yPD9li4=MN!(*p=_rh}8 zcuAYlHy`Xa)?Kvm88|2#Q%zwWmNuN%Ha8{Lr%Yy@!mMcAx6h`g86yz+DypBWvZ>As z|5k3D%lBavjFjm0&DJzh6OMRkvA%?Fsm=GL|>c`1Q1cw|4; z8GCQ`a1!e`v_XqFdFs>+R@Mo&mQTT8JKn*9Ks;5^SbP=(w9Lj>8m<9T1=5L&BQa;sKAY7<*7Gen;NBle zbHIG^iGsH6k1}cxdPrWq4h@ax?&nh^^uH8azIHhyQidVHZLQj1@4T(B3$yB+blKx4 z@nJT?*v~`VR}puSI{xBpH76sPeiqD9N0i#09sFhWO>Ga!)1@c0w=ru_Vg5sQJxC_) z>%GLod>kEzgTv1CC@7z)C8=%3;LV~B3EtKq#{ z)7;uL!9#3ro_!q_CaF2)JL1~GEGZ;^YZg4RoVDFss(xzHA;8YtMK(HSS}MXfB`yFk6mR; zx3sEqROdw`RaRcK%3~qFR!GOlNRpKjnfkq?v~+507>QRgl9R7l-yHSW@8f*zjPu2d z?swHcv9L0;GKu+MUBC307w*kPBi@x;lg`YLHa|}(JRdpN%>L=%LROf>!O>l_l4+gt z)up8e>PyCsPR>aM1y`5fJvCxcdt2iai$DYgwY9cty*{YQNm=+wAIf!Gibvy4*POW% zLshllEn&$9Cm#9PEs}>1-k)15;=&oN!G3=6SZ{jDr0vI_)BN`LZ-bID?i&`326wee zE<@PxwaMvci7|m3jVOM@z?$bu0wUkVex+t)RO6|xF5R`*@{e;fXzBPc3p7uK+t%qK z2m59V8nX1pqqlea2bF?QUE73>$M^r`0wm#rN;ty&B`8tg%KRZQik&98kTDY1>T#%R-$Jc{?S= zuuyOMlHG9g3y1KswLF#t9~aguaipUsGtx}2b8HUkOM%OfH|k=zLPL3Y?lu#XFSt$C zYZ|Yfms~iB2gixH)sul#tFYM_(w>1~zwjB-R*f%ezjuxH-)O}NdH+N?|Boa2(C;ha z`gl1c7xmep!`as>pEWD(uY^+B9S3?Y%a?#bh(u^d+m<9e4AuaeuuXY!$yBL?Ze!x2Ub>B5)S5x5L!3hz5U^znUj~`SVIzcB9UevF_+f6{Ejro zvb2;pC2v5v^l8?)-~4Zf`W;U^d2$a?kxc;_p+s!)SCPZ9F*IC!d?zV+t*>MV3XW_9 z4*8sjwW{G+T*we<;$$1>5ILB#ax5vAnMWrP!HeJViYn%+M7?`Qe;N@ROW89vb_Q{V zxK9e-cR+bAGe0}pz9!#EtDcMV>cM41e*o$WlZ#M|vg;k%TcMQ`$1|UU$teV0Um31M z_|}wCK6B;p>HX3j+0MzqJ}@!y=4F`A318+f8N@^TEWr1hGkyf0O2R>rj+66h)ps3N znpG%Qz;dg!)fe1zV`-aFZ-{75c?66@VLpI}s= z#pNwzNIT)WI+T)Uc}i$!z~(w^n#2|qvzJjxDus@|zR1X^7P79{05>{9Hth@IGloaU z#J`(m6Hn;PPrht_qp-OBNQ5IKdoXFYL4#gGadH&nqf zg-OIkUzFhHkxSiqSZGsIdby)tPG!h>3M|!4VEbshM@K_C{1@yN{iD9w4E?OX`acH! z^%~hkjPtNJNcH=w}e z`9leb=`Ex@R6yuxWfUMiHdb}YZ+Z-v5vkuI?DFAXavvX$UtC(dB+jz56k|ZnI-Yk^ zPtzip9D(QiD%H(Eu>1Y{i=Y$rHo)~&4?0%AF!~}{I^I;a7LW2?dR6uq-O;_W#7ZUs zMwQ&lrxChwBCKZ*5x#v(Vs0@DZZ0L|55S3+7<^#HGkvDdtl2rQ(K_!@sRq&)6@QsF z5ugoLIr&^}x6QBW9G2-%Z(pRO3_}f}raL>oQ_igC=aaM*ePJj5KA+p#_DC&yaDl_Q zr2Nf|HV#8&DeY-qDev6 zxXpQUi+sJFnK>GioKb0XbM|LM_rUOt(};0R0q94c8!ut3jL6K%dSGgLSWgHU;M~N8i6U&q|77qV9xc4IPRieh!Y@jB&1) zcwu>T@MAmSRe-_{YIW2+^|FKQRvm8 zv%TYt^BEW(T@~(Xnw-3@`(vIzdVhCHj+7qRt#+vI0@OwWM7P&?(8vg*P_gyu8{@C8 z1Co_mek>`C(z@3|PM=2nk2Bl4Zd9)0zc?{RvqnTr+zfk11*shFMUxkhj$c@MX&*p-bI3hAO_0#dJ_`W5_vqt9GElpl`vX)?)oa05$v27uNO?znM-L(h$Rs6JFjSv(-<~?pqk$D!=bA>LW0r)k<@5^- zm#vNNjZTM6!qFJn;#n&~2xh-2`KrzXdznv0G4=KL>!Ldy*!$KSllzJaBK7doxOGc&@KsP&Bthg)=_)Fc78MmC-j<%N zn;J5NIJ)LwIcIO9>3pHxtb~#2!gWDGN{u{b1l<|@I&_}+?c2A-fL5#<=5PHRB`MPd`CTO3-2LM- z(S8=%!hIgSHjyH+H_S^N1s)2l<`<_B4=7&|2`j9hd z+4!HFYdlR5sE74?xi`RuC6&uCbR5I%pXR5UU4O?e{m$x#Wx~rC@AGTiv7G_X^Stm> zSx#ilheM&@=9Pz&Z`9Hl&}@2cH}5vr(3C=cH>Ce6m;iOJiP?`dW!O>JkT6qERkS-5*tG4y3U zzm{30z&nRSPQQ*ZRg72Ib*6A??3p=1q1g2X%7s@R9P0l0!^=({Bud$Oi|A+JZh*^# z8&o@^K}SIG#z(3FTdIIW&%a`IH= z$WM2o>dIJH)e-BB4-KbVILcAiIJb9R?+S|CXfv!l6!NL*b3SB;D7#aAJ@9|dRo4$ChDF`5Je8lpaaN&zE^=icEL}O}qHmxcjlI zd>-!Kncp!mGTwx0^!1kLAb<;?&v2E%Q&o?Fh1D_5qx1~ZH&^BnQ`u1nJ&VVradN8B z(yXelTjHhiNSf0-1uxL#Z@Jywebd$DEFFtv8FhBk3WQ+Ea->E)j)sQj^jP)*F)@kE zpuCKXpNi^kHgg={4uWFMPFjea@TZ5D9*<^K`fE4hY?;R1Ydn z+fUyU1pMtzgcdS$k=$~!(xvw}nk9Ync+6?{TM#U8yW!t+%*|qP*Uz+SR&SQQRlRUB zHN9&$S`^TiuaEb`-I&Vtit6j`n{4d~xBbxKo0|+C79!x_4R>+QdWO}{?Rlg!;FoyB|94qy3f|T*t=R<=ffKNfBb@pvNF(VV$iWlmz3=F z%lEIa5Z027E8Gz~c>=Vy1_mD(FJ820Xk>Z5rQ9T5h;lDhTU}g}vhSAt@?94X8LDum zyw}TTmzvA~+%(SMA~7{}1RN?g)(e?AiF%&$w$n4O^Mq|H1;z3Y)Ll9(?l7eTYWAFy z^4v-sjQ!jD6-G8xxoe2rl99PwwSAK-+F@`O|%4gkJ?yE>@@J-a=@FoBPiP2BW~Zh z(_HcMf&IIqf((#kdeNMYrGNR&t1+7+tz<<97Ui|7Hy#+hGtTMhSR{`3WdOfm<({9M z_;~sBc*aOU^wZO$Ga=~x_(IigPgGaWC~L?KiNoK__yh#)7GDZVSsEKLhft^Nh#!0; zj4q|`>wmy}(LV99h%ex-iC#;@aB}Q`cLB4{{q_Jh(X&~0jc3b334~6r5va}WL4k#X zBH_y{G#> zL1XsWYA`L$lA4y@rJQQ#Lz{dP9;Bf$!goYks?TlVWv;@G@6yk^njEG-lf)us*&Rrr z86<=UwxY+PIS<}QU43o1_>~SPU|9snbTzxFFN67{e{At~S$t%C-pJ^6o|SB(pxD5{ zP2sC(A`F789b8bBtHAgPeuwp<%}6o#y-6+F`$bIoLl+R&!hF)z#6Vo1UI-ScLR57p(^Rf)^GR zGVyeiXW|eL$m)&n9ZUG09MKaYIgnN$2E5evX+{UxSC%b4=ZkvAJoaf1+9_D;crPB} z-ty_`Gke|KpFjC|Zaa#Y)z{}cX?1*TC42qqWnA=i6}$ke0koQ7hJum>Qpm@Qd_uB} zH0#M@DaAPrSEhfM4EVUsI*HplMo7s;@gYC|t`){&hYjisT-a;&J@SS^8KdUa?>2-ffIZFl2%cmz39oOSd)TNED$PH9Azba`0|q%EQihh`wocvTXqdnIwO68$eP6^!Q(1joe8hn zuFCwvT5DN-I&0Ri29u9Wk4|FrZ$D}#`{NLg;RQAPH1StF9mQU$cPwzeJmy0aft8=1 z4`}NLwQt>HV-X;P&8J^Ko~#LsGIZZz1JGfn+V>!riXqXPJbw|FpqGi47ne<)`#J^R zbyKpoUGoiFUPD6~;Ka}akk|P{Skgq$pmxxi92XN9TeEs+NWBAUyBtI1MZ5!;0>ybr zg%cQns)JQVBWN1u3}9l?p+p16;Frbwu4Ra&IHL01S$bq%2p&^b-ZN`3@5kzg{t)TZ z^P$507hKBe;laU&thh|nrMe!_@{i0L2m_9cOGqdQoEe=8HXwF9g5P|jy0foE*P@B} zcswUW47jP*zHRdI@u49S`@`(6KiytG>mNY;kww3j}2)SQ>vF#aRy2d=f>0%paXwN6#o{*Ma?;NV>Bs%QG+yp^p|A(vD9sPacP z&#*3JAzs>$=Z|;5ij<>Ww3Bi>c_FF@3&b&h{_xX-vSVNJ(Ic#11J>wBoKjQyRU{J#WKPc7W!`tzh^{WZ ztDB4rU%@37%FWF?h~M{Lui!0I>D`y4GIq_v#sN~KDz+6cXhJY(vAOfEy1JhEQW@&HUIm>9 zyF6tivd!z z_p9xWeOaaV!K&~2ImxT9D_A5YCDG^z{#=sovA{D`639G4mkFHx8A3u&eApG9b3N;Y zVs}2|w&Oi>d&3W*lj^`q0ter?s9R3d_6hlLCiBow#Qn|vud`wn0tW(}DYlg)=|#}S z22SRKT3C(HVJjJJOFTKb6+Kk9Mg7HZj~TY;39;L*&U|dfB^pFaRUgMXIEz_vii9ti zFH!>xA_c;i-@Do@W8#8>RL|~Q!@=vFoNHeOk;1J{52Wa6uI3o?(o8uCdx?1`ox=`g zx_XoF;2Ue4@>M5i=bFbWTgyBZ=Lra;ot&-%#Sd2w0^9QFkxkuH+|g0A!j+WN8De@e zJjfd&Ba82>KU2CIC`ZewqRl}uv|2yyRKh8BB<51x1hsenl|St2J6rb*mX@U*x0GAN z5^rY_$oEt{07(LTY6v`5DXBhS?m=h$5<<9i^Y@ju{6FkK9wV9BodS6}#NqdS@J!i2 z{zY8$WBIGU4?Cza(ns|G)RmeRWsOnLvCRx^zd5GtFunI9Vw5QgUk&;b=Sb?K}C4FY6dN{TTt8CfVmA5N~$DJYcZ_jQVY?Ls9u2D_Ey zLZw3$CY1a%op~?EY~)W$d%sB>mNtKVLgY=9Y?EBhbM-aJ>2dF=$l~V7FHc{*VKcjp zy(f&)l*!HU6$FTmKN%n_L=(Qfma?_7VX;%m@>RH{UPt}eIiGJ?E0Z(${623#u6nwq zZ&38;s>Gr>Ky*Wu^M==T6KC?j{G)VO+-c1p4F)MqXO(;&FjY||8e!D>i9*4zro+hI zK=OOpzNieRP~+;Rpt;_uxCQ$ulQk_+mVYvyh%S*p*rCJtuSMH6#>@4r2Z zqo4M!R~^$VE$4X9&p3gM&uS!}@{GoAniFq=-jO55q9h(-dV8&mZeveO+|P@jY?bT9 zHnLovUVKu;ta1v$lEGji#%%=!l6k0&n^d)}4gvETl#RJER7&Z-e6zIOak?R&`Dys` zy6@_iXbAZ5y=~C5TzDcT=HY$eY?&KaF1uf6=i;b)HWSLT&^$1$7;9n->si4m@~h?W z4A@&NUKX&aAFwXx-l>F^8+$9gQO7rLx(*9v(Wxm&;VA}r6YdC zp^b<7ZCIY`1TzC#`J}-^=Q^ODA(EOtx}x~dZN+$VdUo0tNZ%04A|L7z(9yj>xuk;D zV)8RS70n#=$L&~ak)7Khf*_`+U%sI^M}2~Upq0C<%X^f~Z_N>X`n0u~J+J@!?8aw@ zv+RI>`fv}^Q`d(jTeq588zqM9uE#Ka%X>0W|LvP5af!e3WaqrMj~qoYObn$s!O)TH z_STFkcd7e(b5+LBr=Dhf+Fd1{`*n^@Vj?G3#Eil>hq}_h~0tEuQDkaSeEPBq@{S zrKCt5#>ORGF^-P~=QZ5$l6LA&y|N3|%GxfV=4JK~vH{S-&3e|MbWcY~mh&NyH*SJGi%uUtmJowh z>Z_v$vw5QDw;l<~%(T)wbWhY?SQOs-+}gjS0FuDxy&A1z`0vV3Mds;GjTrah#^U^*#Ddbh#wSGtCVCJdz5Y9#pcX9qxd z{^e1u&OAy{=7Q#?tGWrbjZQTdlBe0WU}h_8;{I&#W;Jq_%x zMP|o~Anro9({qZLo7;(M=2l&ZB=a3L6Ag=#v%#3BEgpg5$$xmev$esSmLB zFCcAa8V(Lo=jr=8WpPAE$s=8!A7wvOTfW@|xYEqV=G^4xgGC19?07k=H+~#BSaxTm zrmkh2aHIAP(L*2|sM|^KL_?;ggkf1ffF>1C%wqbPi4P#BahuP6*tiI@Y`so>k1?XZ zGqJ`<0tkLSLuHSp>&~CfVOQXcnKjLiYuM;c=O`ymKi?elos{R}IYcAN`#j! zR94FnmVxT{BFk>x{Rf4Gb^6}A5qss;6VKngxeEHJLuae=cea?qHAv||jw~zNViwnW zBNrYrMVJ=d69`JdyaDH%KM;EBWqDaVo0Cg120}_U|7>g3MMPY}xi9rA6b>olZ-FKc z1#zu?8N?Ahpe1|A_B{_cQ2Q@uqPQ!_P@kLh(HM}aaq*fRC=oe;D~@ zI0FsHhkqFP0J2hn(9gd}o_MtMH96)#`p)2ji<-)=B)NZ?M3V678*!O#0Nwriu3DX0RUYpX`ih#gw zX3Fu;#42Uj00FlHY;?Zyyf|`8O^x{1fQ`)fj|d2;Q;O4Z(;9=#tSg=I2Hrv&&X-C= zL=h+-^2am%g>^;3o4enh(r4S$aw29`?)B?vw<>)^H<)8vH+yzZ$1}D;^IaSs^2W=A zpQfQE%CjpIg&N7Qa9cCR^y}!}DKmbrf?Xy&(ujP}V-(8X+&3~a!-3(Z(}kY2`pAox zBW?P2UBv?1PBX1L$$Re~Kj!pPAjgNKpzX`1OXjRe50jxs6Z)A*a7z<#?HRONS(w|- z4`044B}PEv|G!yq(2{$PpE?y4MO3q|ty3aAleox_jZN1tMQPN8&2D~9D+%uexcYOA z9er(#XQnq(8Bbd|25rr&o_)()Ft0WyH<2yCMJ$SDriwu}5;b35P+d9L*^LEC<_zm-HMw+=w^a(92ZP|+3c7mkDX7_!O%{Wp7_UH84V&Tjz< zY3P%mf4il9ZOb(lIokBh%>MK%E*ExQeUr7|?>a@jK;x6?W$*JE5!J@y<1Asrr|WTY zv~jLhplI)(wtY8J&fi~gYpZ!nytuMl66JpJV$O0(!dxXj-el#UxKD~F9yAdFWs;fzt=k#mP{x~oaa5y(ATeC-!(#(XCJTRJ-rT^)&(b$g=M~{Tcoe= zdHsm;WY^tYdV&&8Z#R|JTAaN$xW2e{4grP1gNN#S{0y6#-ZRZKmIQc6JoiL^2O0af zPtwwcH{XfQMKBuwdhWP3DEsNbfz#2gts6gKO7mTY#AQ||48roOB2 z-grXZ^`b?md(BGq-<#%Ak#L`J;^BUjZtSy(53i;bsp8e_dlEc@@BAOf6eovR{?4Xs z^acGOCLGN?yYp4QhF&A*zCCuhobeI!CSn$iW%Oz;O#$6+>y@{qvPDsNXhGl7Cw8^% z-!5U*F$$O}Ny50HGXrQG<=#|`Rj28yGo}6Z+b>^2iGXN_@1?+zn+P$$5s^EaH)|lc z0zIzYV3L~(;32P$M{UTYZNF*9LG8{9nFEr*w@gx_1 zTJWrLh|cAl(cr05x&SxaXNlZ%3NJ36)2cM)n_|f9mt9D{_vtc6u<;COg^j?-dM#Ck zvFUn?Q_}9U>6x?%zdY`Uj{yrqd_BtpC$tD#t72E5Q+)={pNteqJC-)m>&+n~L;%wd zc%dQnG)PqOL-gzuJw3Z_mDnHCgoHL{-N~NFBL|S|oMZ^7ThG{Na|zQex0ugyLz+=` zVda3^=No;{$*DOY(5}qM&X&e$XE_W$?*)<< zA}aEX!7sy4KQP4zRkIaKX>&zw{}bYTiZpUN7&}aGRyi&-i%q?-?pslublU zohd4;t--qlFg+a{uqXm=ovj}Q)jjv_&wI8pGBC(ZrFpf8s@vu1M~Ue=7xlkdq!-zh z1l;EneqCh3q1SlS;c;7=&eN{0mcU{VeKk&i=H~XDO`rAD6k|AldP&W8B2Lc5VbuV= z1F1=t@p>-psbtfL2_)dm%roj+uUJYo$l7<@RqrUv8%?{(ek)oQQ2ZR^;_QsrsUuF+ zyR-tfyEONrTgf$Fz7E@`#`B_)_*aCPorlgeHdwqi6!G-w?FX=1QY#6d%1JFt`lYx8 za1Ae~JrZoDD3PHuZ`4p388SUh+BgABv*_<{53ejI3AlK{*obl3D~tq9&J6- ztxqSo2z)g(qW2z5*$cxiWJwYZ0^y&|CstWkR~DsoaquWc`_I*{0x z;wkf$D?x?pL`6X*ro#BBHPY4xTz06&=VZkjGZ8m z%^DUE7%YB$uNAed0W=o)Zis-fke~mXu6G}Ex!GCHgtPZUU-S$F0&MekfG0dnvkH4% zx`~#V(9MNf7BmDh2DhnliCb`gZC9D03{++z^~IY+|Faqik%RfSI#_>N(@R8Wl2I;x zetgS8>qIAaZEZfAn|iTrt-yGiUt3oB^uXhsQAfhDmj>D`M9_2YG9<7s#3d}9B9Sy+ z9MCGTa$LJm?~fp;=PqlI4%k;F6P{%)6(2utF6n{{jS4yE$CnWW4&<|2PD_iqQOTl< zu=6yI(abbNd1!V;bh@Q%w%@I7MoU6cS}~0bc%W?bZa2>>XQivmDs&Pn`PTM#(V&or zOC?Ho2EMswiP_?pj#&+0(Ad5!_~|8_h}pbpZ0}>0h8PhIsYw)TxF{-xmuGDNX=>SnQV? z5c-;WbH45l2~~Bs{);c?*V|Mfe#}~?b5=9vI4|B@b*xXV9dJdl03>L_1&8* zP?p<2s7G%-weWVqUQiAs4FM9BTUdakyZYFXL5<=xFuV2nsf-|rq=QU}wIVu7qUr<} zsuRWroIu`mbJ1tqeffshe&hMVq8r9`c6Q&5e^}i-TANKe!(t2y+$S<1FN1=FKocqU zkzww);d`sLJ|Sm{AcLW}$eo)HqCK(PBI%F$PL8HT@*Z)#+K1y0nsB$-K?zw~RaCP} zEFPYkp2p?3gFk)*sS;I77`9(~rC+cy+#O{%J;Y*WZ646_IH;b-VL8Io(9Vu{aH)AD zsTft{@u2iKHn4u|F=^cI!u4WDtT4{PMwTewrCsAr888TX$75XfJ8gIPb+Q__m$wC7 zcN~v4iE?jOp%vHq-`NG_%Eqr;p8!a6p_;m67L{6*cE0+c(f30|q1h|v1o-5-;3Gah zF^=kM9Gnf^%#3w5jEwV8u_k`9Kwns1G+Cv)e#c#lXWVm_0Kn})s3e>+?6eIOC~zOo z73iDUXkIrqGdt220{#GSWm-`6iw>LuWV<W_&0EdaNOCYpxruyk1)Mm;IM&fnI_}a}ViA{b$f6?sJr4NUF zkCR3m-UC7gAsZlb^+r6Pb+27%o=g&e%p1U;$B+3#u&}$I@IPI(&q(PGVTOuOjVw&C zm*T;KMN`5uvW*`K3dVB%o5~}UuGYKiA0-bp9qc_xnsk`jAMsEE-6f5(U|(`FG*`}x zQ|6}fxNP{fJO#h(`oe3tOY#6`X!<1&E#srKIXoxQq zcn1gg;?{~X{>f@s*uVD{ujSla#tNK@q~qf2RVO)Mk?@?2q_gGCrlaV=L`gQ@Q zM+VD->ObkmZbf7yA>yZ(yL(vGZpv2|ts+S8dg}Y+atd@V*P>pysPv4(@7d(%@BG|d zj0=WJ*MJ*Rd}Eqg_>nk7@1gTG0MtOg_3BO4INRucSie!CGyBYC7;nA|Ttx$S-^KDl+v1S*pRBkab`GLSXyWQ;FPWPX1 z=~J&}gsGd3+1XWDpD6nw#d3m?Sy$9`$9d^}78U6mD91XOr>>36vSe4Y`4@ z58F~y#9cqwSWY0#=`~(1#?G_c^?^Zjn%NW}Mz}@%cv|?(x^tFM)!co>wO8@yM(sWh z09sV&b{ei62zi>1ARGbh8JQnR_ZTPOR$H&`U)jR16a$Cx*iX($fQ*=iCInniiw-2M zGtJ_qGwR&t2Y+Am_;h8=)lIv940|Ity~wKNm3&3QRD(U~*Y|gBUi4SP4MyiE;P5v0 zrw|_R(Z$tu>O$w>;z&yimQwW3lfohXx@))NG)-=6srBY@%YfUdokO;z^19%@Ph#kN zcfZ*DDD$Gir9u5;!v7}})8z!hk>=tT4ZdQl1FBMYOzw{~$r_f#IOn=7P_?E72B+h? zQ1#8QX5J(FeSNonehUo|UA2L3(FQXi&UN=t=iXnFKr2#+SQ!=lczHSbp5^3rVZ9A1 zIW3Ju#MP?w`kSX!7k1RAC$pD2P{MdgZ{|wEZ z;?OY==sHBuvI)~E5CjP4x)*d@@ohgl48_DrboDOZ6N+w0pGw5~`@3{s$^G={JYv94 zgYC6aTzqrkg5)`jDm2D-Pg&#BZ#LSgUc9m7 zd-n-mD5PcP+SUv|XN!(ak~LAkK|}j)YSS&mbLoFvk<74z3 z-BJKE7uDFv!MfuDqmyBW{Jhdo|W&pD{eJfLEuyEOJ%C^zb{tVh)iCQ%IGz^ z*CKOWy9~#1{*Bb7mkq0_57=J5d>I)Y?iBr|qvm-`>qZmpx>4u&u{5{wpNH-2)e;fh z5?V`3i)M)dr-n`?zH!rqkX2ht$2y}TDbCl-9PKzU3giQFS6>@>bqkK#A98TNy_au& zXamKf1dYG{RM(%KolGL=cX94|i36dAZaMn?erd{KR#xX!*HkJ@%#~3LqlWo0d2!iY zOZ-%PWyDv=!g!KPaNuoSnf?*8k2tyXv1mtQ1&?e93Tu z>2!Qd>&t|ME2Hx+DC4a+t3!qEQ29XvO4gu>b;=zPT~5vGH{rQ7#u=yPyLHE~awHHI zDPWfBgd82|d@1puhPJgkvGhTm^R$tna{qgcdAJclh_raUb_$Z@BqbSOgaKF})XcWP zcx`%w_LPmSJQMNLp~3mBTC4mztNiJ`&DSLdOKByWAc6;ze>#JY!Y=Xw_g&chD zw-f3hthf62gI#c_M<#J@SUkX*Yr7V#G(djhh(Z~ko&@gg%|v)JIQBMWe`{^8EgHOz zjli4~opJ{u82HP}8#$kKFPsr&Y<|o2r8SZxMlI5ra#5XV9|mhec@f40UuV z;mrgU>}(BeWaIFd`<=E&zrHQ^txsxoj2rb9`S?v2u;1T{39)}&ect-}P=oO8%iJH^ zgU0!xq0kYY^1L|J==p!aHzZJ>jaEbQ`NIcd%;4ZU7iDFRo3_J*8NL1UJY%bW?G%Np zD!1UFB23K8^p2*nMk71A$BA3F`3jtFrYn`A``1SL0W++GYgA=)kOU6 zI72>KO;67-6`u{Z?D_ykC(}F^y~@v zX_SYm47hQ!`h`C@wzaf3R=7XJ9kCp!z*F@+^kbMozyB!SPUPi$O2)x~@I~mVW<^3s zFU)P=NNa|h#xRram8CjWt(JZlZ_<7+waUV|&KnvP&2_wsI#2ezerNU~Juk%pC2Vyqb@5o@lhnc10B_XZQj~_38yv)KZ)*eK$^-Z&^sQR}D1_kFM zbR=)sO3I8aF=cZ`cB=Y5i)xKgK7y0dJ0A!}pv&FVG+avIIRi4e?SaK{l%d8NG=q5K zAvgK^n5pp3%+g9pm;l21@-~l4PrVu|0S2#L$Ab2xQ#5p=Bt>P98`OL?dB_YyM=fZh znwdW*nsHN+;+~>S54M}}Ug?_;80Xwq`uD?=4up;ReWn%bNEel5>F;=>AA^*8>+smj z9MY7cOG2et=<#x?{(4Cc!{-o6sErGj0>NOFw_;suBE?Tvt`;4A{m|7B6yf(HP8-H5V(>2^((p!3U85`nw2dcQH&ZKeyl)d%_!l6@9!ru z%@hAFK4^r1U^{Qbs?Np31MBP8g5cHqP@?A=oHkY#;X=Oub~iK(V8d>)IkU-`WOlh# zvBtKp21~s?SAu1FG&e`_P5Se5YJ88q<7dH>a%K55&tJIsl#ak2yKDBD1?FlOJt9EB zMcnTEM!W+zCz+v0Q7o3YlZmDbSx|U5e&z!<=qm}W51m|Gf{LKSnA)elI+sV^zE;4P z2&W3z(Xp-1Gz%YbgkL2qq~RE~5m<2%p^F^Ib4hMJJvjCmTD=LD>*JHhH6K)i`%V2z zulNKDW)vvnaL_2Hhw&nDZwnl1njcs?zIY`}O*qn>X>Hp1mIe2e9?lPpbduyAimA)` z@};JQjOB%pMRcaV8Pe4|9;qvWV&Ts)mTx3KKd)bU3kNAK63Vk(PYi1MZ~bc0LkYqE zY61ScWGPeN-f=#5o1~1*1aADo95Ga)jnWt?MWdcDD!#shI{ zGJ?X+P)Q^nlSp>EG}rc)a?_3M>ILJvAR|K{lBTlzbLFkHMf1<`J$ZBK+8y%Z+|ttX z?*wdR-lcj9Eq1+lJ7yzoI>)M094k3zg( zye#LnK-9AOlQYdK@^l|Q46F2X4J~pMd{mDfpThRy80SGqRg+j2{{OPzjbU&wSntFH z?6?s5V9tb%tmE&bzT(!w7(29F%?-`6zAWx0QQ zkBuQqy~1j(aFLJO`#`C?r;PIQl`B)<*(o8anHtJp>(cC;)iY+`lA=;d(=hI?Yy8&U z8uf#VnVGDXL6ISpL4XS1XuqEwR7|qg3JO=Jem$T2BP-nX4}5` zd={Cphxd5T!+fuyHRWxwyLP#dJv@^^Pt6zE@Z`}j{gdkgz4SLQ)&5@N6mB|2FRoG} zh-Bs@(PhaTwfezfh74CLaF51vl+V|)a%~p|67k7Hq=N&Z-y%Fs+Tw;j6=(V>Xra%K85mTa~rwFVZIF)x4RGc8HR_U(^ijG!CCDV zs@&3gK0RGdFu@w}`|`!=v1ue}lZ40bJTn`D?Ww6o*|0ZE0s^W-#Us{&t~pqd0~#L} z2w1PP21$Ji>K(3h$^%VjtpRayZ%@x%buIt7H>OH)YWS5^p86IR7H!Z=JVNfZT6uEx z#}2x}eDd!XZkw>3J4(#+4o;QFLuo&XCnKD^!jkdyGxyxw+%vr>wRbmt0&X$=;vL5d zMEm;UN;L1%u z%_qUQd^w!-HZ1@Al@v8$&jQj)@KwCLeDL+qkd!O_v7D6(CD!?IsSN7@b#>h-8xxE7 zS@Ip{UG|QBrmEm#YMQKszUed(DN9c3>M=ukhGIy~ti!W85@C(YG|sLIT>QiUXS5+q zNM;|kok-(+3~;y(4$t#+wMULm=p}s6Kk~lK^oCIsYRX@qU@E-6#$gn5JENES#*u5X ze&)&bEC1VFoSh1V9(Sy&j!#G*g6JxcI9(I66J8?0X&^Lez}XCyI+n8Gz{4c&oT!uh&-R#SW-ulBEaWV5?F`lQsc+BwQC?h`z!v^?!+fYMqkFA*$6P5v zC9E+lN5;p;^+x&k?-ma<)QK9Rxh$wJN`5&gE7RNVUnY1F{Jjj&?%2=jnY}-ACSGIeV#kIu3a!tCOJNbQ*qC@bTLl#kDpr(6ayiZR)nJ zL0G}{0zswkv%dd?(wV*iwM@byB2a}J>dE$Z6cCFEsSIoBrSk;+v@bvEUl|>o>a6e6 zay1^D%Q)bl>wm~4Yrg1|sm_M@O)%E1jU9FkQ8DP0^_dlo^)LQ-Z(X@G!uQ3bNQUUH zY}Nv$^2ZN4ooV{Un1syqd@rB-k2Np(SSc$?l`oX z4nk~nAJw5_wjzbXF`ue~L{xnkhRI>F8Y{Q^cX9-YYR1SYD0eVgfI)itQNMomddF+0 z^t1o-jY95umSaP-lwwx8j zZ!*o$c3n#Q9rN5!d;64RY1d@z#Co8ZN-!!B?G{QTf5{V$!>6XTF1=1W%>~gm`vBuo z_x-xno1rr)`0+y8hZG+atyb=ntgkOD5L<)OH7t5$U}NrInue*RH7td2{}$>s<5vsS z`5BICv*mBOb}dDJs>zf7pEbf#gf$XzS!)bsw5^LTVys_$?vtRA(QnZB>xyQn(Rm8a zIJ^W6vLX(G2uAUPb9z3r1l``Srt7|W3}^qH9*yv6mbsm9xBuNYbD^gRR?L*=;l)yW zu5hhX;%KMf3NIfarlf$BJ8UJ|tzCU~ScHc{PEJpy^+AHz(jxrWB%O16R=btEt`{Pxhj4IRMl`jwNOp(nYgfO7^!ktr zOK7^e!cm|Kk{mY#}z0c`p*x4Asms- zy0FuxT%RqaI`8+K0vgo?6j>8mc!=AcrG68J{yuu2n8xUb zk%r2Dg-CVnt z*F>s(UYAzh*Dv8t7?iVrV69{!EwAZT8~bJM0h3rQ(jJ8*HoF5AW;#{GjJsSiUrw zM;}qr34*xdu;)!-Z&Fnh6)9~(6Sd7DV)7}`QDMFC{OM_UOrU#JN`^LF~qDP>6o>W zn<*uD(c*QRhXd;c?k)5reJDM>oPEA@Cf(42joUf}dl3uo0xqMH9P_K!^%$n)N9ulbW10z;f%Zyj2W`9_{=kV^eV@Eaj|5-0F|7a z%;55l{E;s2?`zk-b+iP_T&nF(4P_=GeKr5RqodY2>A>ls9XnM}`B+4yXG3m6qg6=# z)Gffr{BmAssi<(m=xh>vECb#&!@kVxR%2i9^l=p)ysw`k4knPsFoRszMf~~hE!|6o`kq?8kc3V$u z1N$xfbvQ%2hv*CO3A946xJ`Je*D99r?ndR$Rl0VKj$W`&x>mcv_FuTX`_>5Rl-QL^gpjc2mAUZD7S zk%cAe;S9`G)wjn&K3iJwcncey^Ej0 zsH>?#GQ0WPqtfi!7+#wxAK)7eJWCdqvN2P$dCi3{4RDm`B$BygNlgJwCryu7m35UiS&PA2wKr=EvM;!3cmg44dm zKZ%dO)2}}2(c`pSqVGfcdr7vF*{3J;d{1UF{boUe+yV!>uZP1f@ zVJW%aNh)>ifIR5|?(NHdoR?{#Diff?hT(!3x1CbTjbH4!hQ7nKt(-^LPqVVFEWaXK zqon!ZP(B7V{87W>^IKCOajwfZmS+x`L-z-va_7{f|3WKQY|LtXmA9usejEV7GSz+I z6w@$Erlx$oBKXalxjb*5YQ}jB3z?Yx%P_3{Kt~gS;h_|%OHgH1$+)QUF=x;Uh{ZvIWtp`b|-5DOj5y<@0%SXwz#{{ zTkWEdP`+cI4XSp2OLi3O%Lm*~F6Q|%M7aNCR|L`UC!y8H#)7(muGt$oTs{P=tBI1d zzTEu-Hwc&Zl-n^*r6+sd-Y2sVFb)dg{o9jqx_m+0o^2kA*spYzcV)bhe0T5Z&uGze zmrGd_xpD8apx@|+La%JQ@-e%@qN#;$=+N+l5um?{@yMyfle|xYo>&E@?Py5&cLgu^ zK*#`%*T=^>Vpq03@;wI$S4PTd0fg?llEFlUQ?u$)zi36qQAB$O_V<)Dw*6jLtsecL z5zko>b%;V*fS&EGd-q5ogMXyGYS@gA73j8~MwuG9J+LG&&CqGaYuNMi8se9p-lW&* zDk!9_Ix{rBZaDhWR_YyZ@k8%GNr{exeaiR_?-zEAfV?TwO4JT;y!#+P^`YNl%F3~B z$}D(doyhWVw_0o>OGp+5^kP4z`)7lWgZxN9<^A<_bw=p86V@1S=b6zOaay&{xmLP0 zFs@>&>FnaNvt+*`8|FUgi{mv`)Vet#FkU~GEs|QiKdj0q`T3&PjsIM4NdoY9Nd{F~ zQ34jf5VAUN`5lBYeZi2IhUxX4?jK83(Y^~&4>)6?HfH@pn1l>nXjb!Qj9{HW})4ASoR+yV?!l|-hCzkTpIKYd@9jm&+qOhNy&BK zvc3+_7daQ0r~O?`zlesjd03pj7g#)t{F?6;UjKE%PR|aitB?4ST~K4c%tfII&m{>i zYzUOL36zKQU2uFo)*6G*gH(?PZ6cUQh9c_^;Y+rCigwT^++m=kL{Ag3jM24Y1tx-NK{2C1wdi_ah-M1sLYBiAic% znMFwkzmcweBR`e$)pO`*R-+p&Pc;t&UK!MchI~eKYaTP)>wO|=8&4P`Om=5U>Dx~l zH!+TlVu7>pqtuYBVs%RK`aiDmE+sVk2Gv`W^=@l(b(Dy0wU(2w}-moIO!Hve71nqmW0xCsyKckmy@L#sQ(G0_J?Xv0qsfQxW}^ zM#U{OF)zC`U+x|GSdCX;F#3MQRKHP_`Q-~m@H{A((i+IE2IPxPAB1TCZ8(+2(=3G-b2RG%R!MWh#pi!%Y9+xSWE5 zLxVTweko9A9u3}%J{9K)<$p5<>GPzWBWsF+ILfNnXl8Ep?x9|R(Y05vo$HDrnR;Vg zzH#tweX4J7zRxj{Nt!-QRI)zy>gN7i%d;oWKv2bqLf zoE{PI^7g3R)e4+#r7+xA$4h?Ee9AZarN^B0`ZwAa`ydF#ys2&3;0?!RP`8|pP5oZo zjI6M#bYr|{#h~-zH2cdprWcAa{1NdzJB*ze`liKS1%f^)I+?#d^;&SdSY3ogF&-bi zH|lnLqtc`Lul=FBbXjQsen7q0GsU;U#|+)Y6pRGDN`I|AD~+RKeIA3al0O;(<84BI zxB)S8Hbi&VRZBC@xZfd3S=6R0% zxEOy|uweN4;J6z$SH<3Xi6VYzkNJ(g(QJX~#Bv*1Ngtch9o5rCOws+mq(i=b?%c{> zlx^?$?hjS1M&=sKuN`A}g!js$->voor~A?1rJ_M<2Ru;Mg3kP^Rv9 zA4X6Hr@bG{IXoA2eAE)eP7T_RqXkc*nYm7#ShYhlmDq=q%@W7keiBK@M&IkGnRHqW zf^V9G6HWqz^x_Q8r=5(4oNHAxZ-Sb`ToXIq@sYue#6CTouFOe}@|-x4-fNkuZtON@ zA&ZYy$*T3%uflU3^WjsvYJ3DuWch!_$Hyax+)RzH3aY3`G6Uxl)ds=dkc><>f6=uN zPh1}R^9KJl^YAZ?lQHhrOtHC{Rnu$LV`~3f1~{gdi>(hCu9q#z9UZuK?ywzUJ8`HV z)P?05O?{=^Ji%VZHV?_)_db!7kmDBoed7uZt@h;B;bzvv35ovk4_D8k@cc%jMuF-r zR-f&6PbPPFPu{~6B)8d#to)-N+Spf)1p2%ZFleI}es6nMq{^#aBF33yi8{s-7;~|$ zo09mje7tj*aT*ZZYSZ8^Eq^GAeRjJkikSaT`UDo7f8qB*bkJvKvEvNNjV_c=(11oW zaocD1pWE}*RY4=`?ubfk`NYf^^w6GqQhkKsb&Ml_7X`E1MGy9DH%IkPhUa+_Jx{KP z?rcqLmrWG-`jAYVZgL%Z={(O_sUbN!dZ;?Z$aRY9gb2cB)NYFsYD8Hu1o{5DmzSY` zXeVe$doxs2GRMj-#p|Nqwr&h@`9yvH950#B%a!OxQ+>3}hao(te|mz;aN4+z?bO!V zzkaeo2T5>*Pt;aa>}go#A>q|gAE-IlYkz$@xIT05u?cq68LB}4BERaOXnlI@1|w{d zzZ@4c$)D?RxoRu>(6j%6DK!580&4E zeUvk!HC=Q*7YoMSn9YE7uhY#SHa-tgm|HC9EoEYw{;W9nQ8BS`GsW{Y&%*?wX{-?=dTGws#ubqZS5?`XVym4*6rLyr zYoy94TZ=(_)okl~sw0&8RRl~l9jI5v{8X$1iRDQSkTL57f;q51Fe zdEf7U-dW4F1kTJkbD#U{eeG*sd+(jYw(CoB>XR*!2jV@-dhK@i!N9}Dj|0s?9{{QX z4_HtCdgT5{V_;MT%%hib6}=)%VmH!qK~&O@PaWPIxZml0(!II}YHtnA6j+j0&Jdb8 zwPRt97kf&1NC|@gO+v;(j^WFFY>>DoD^T4(JZsW(_)0*1D%^fK-&^I1y85!(dY0Yz z&o0j!z)yiN{&z0{14LUmVfEKuhiA(|lP4*F4`E5JIANRguj9@|(o`%0T%)FR#b$EC zIbINteR9khNLY*JA$qgzURxOw8vOoQ;)VQe6ww)&3s6Cp_kpEzFR;5Zwqj42oU2Ca7%j@YX)rdp|d4cY&Y@>{Jx! zAwcfT_(J<Ub8n|J-A~|GmfBb5~6nRe|s@uQeFKcRWRgPOy>NZ?^}5O+WL+e$fwc znR>3pW)wv&xoQc7+Nm zZLm7!J_p;6NHBE3IX{2b)`q`#Cs640(ve1LKiJtB#!QHFv1KXo6(BulSo`H}^Se}X zw3i?K@a=!52i?s$a(meBah+0S2|M@Nja7PsEdPB;zBeP$@gc>?n{F$hL*kxi+H{75 zs{u5o=}o{k52NyUNL9HlwzZAVe=K)xZf}$JkQwNMd`i*l z3`RRG4b4uQ=(Ymf(PvA(|8xm@!VT1mXo!UVcQ<865bUgKSx;%>(MlPIet$&gBN7nf#T8YMuP-oB2<9 zOpx={uADtF%paONN}4d4UMI`WXQyOPc?P6J>N&KxPx)^QvWEZ(b@zidRa19G`@kaU zzjks3)HvVzYQ-y=t9%183xh2?z2Ll7dSL)EfOJd(Bp{*WyBm)OL2DP%`EI*-Pfe{a zw8aIIWhExw3Zms(X^+9@1jE{L2D#M(o?{d#W?(?TLVSN$bLmgcBqT(JZtJrI;x_(9 zylKj?gg!IEEEVIYil_X4HRC=eH8{9P-QENGjH%Z8hQB=pf+|W&Vo%j1?!4yUC zADVlY&N0+t#D`G*d(Mk}4|_p(+=l0AMoNroC|i?y-FtXg=e$GZIh1Y#LtsuaJNwzAuUmm6aaVqvc*#1o7N$q3)%Q{Mb5+zyNkrJOeDRAJDO+%izc4zQ z?bKW7%04hU*#mh)Llzwx z4C^;j-KZYnO>;%B>@!b!z~ez&X1zdx&^Vawe1Q+Od`)t=mvo_=P@16Lr}kS zn;@BCj+2Rr#C5}s{kY0`m5CdMg!7T%)9r|k*tjc~G;?YimJ;Rul9Y^jb~Jq3G|Gsm z5pUTwf&W?V&q%(xw1kXE@54&MhN*IIk}M=L_&noRGba+Z15%v;&N4C-K^Jj@m?zJh z8?(L9TeJGVTXS9R^Tbk?h+}t@wVD&Eji6Wm#?kvrbJ?n`bo0D(JLHK1ga8YhzRP7! z;hjDs#jjQWs|E^FEC|LD!LVqogy^9kw5JU|qz6*%XFT-^p?zlCu15Ah7Txlkn_y&r z1*UleK=tD`!;|iV<>zB`zu$_NmO+}+4uE)uIROz7*-hK}o{l$szt-0_(8~dF`t$Y5 zP~&;JxG5uAF`QSkV)wJ*(pxdK>!k=mfoixF_CV1_k@2U&CFdsn&efw+zdt^0_hFf3 zC85WDf?N#Jv3+Wl_mF9NSPmtr+Vl^w`v;V8N#chmkoIY~pwr~q+OE+8l7Uc6`zenM z_TEG2)EMHCp_=JU{nt#8uMSFfIvZEi37~Nds`HJo%Nkcfd?iZF&=BL`0BEJDV?S#x zGNYG}JMceG_qu)mTDaHsPKxtucnd?pseK1_A85wl)gLCl_7L(kJ6-nlL!KXQisH5~>lpyly^ zq3%n_2;#W&_qM+>o13*n$6|_8RY94fXGrcqZp}~>Ss|oZ(xFX9oLfMEfQ-xlBW`3# zhxflrHak1(wDjy^%DBK56vRnM`OkU4hum-bFeblx;Na=u(JB6-;|b7n3wq^TCyl)l zlN{ZM-1Nh%_%WH{os^PIePF8U=YMHP3WN-qgbtRL@H>sZdY6v$9Ri#i!#Do|33Bft zP4(5-YgA*ZedQ+s+{QUSf5}yIOY@a?(7B-O%L4*#*n~jvZ3qv~7+oFV`6#L*ZbZ~a z>hl=>Nh+@w^>rVepvMJo47CVZhx3iBK%~G+rP%hBugX?7Tl4PG3k`b}uJ!I9L`S%H z9Pm^_X@A!N5s93C=HJFiqaV5;j|`BKDGjx{Ev46>$-0@jC7oPaa8VIsUA@o?f3OGY zbTg~`b6xJEtBOa(Axq0>Mw*L1--EPF#b|`ylVpg+#&me#_;LKBl9)38bLtc7>6cnVD41@M6`nIGdLt z971HO;kT$`Z{y3d+BN){Dv*Fb-!$bXR|NTOWm{h0i(a(AqBk}ePyE`ekbt2eS42to zAUy;w0wjQ>8FV6F1|0bK_=lmPp)dYY(iw}-nmEN!|v3ipXZSa ze>a7A_u}z$kde{nAW0wAV&)~q<0>r7Z?7cY5exWMs{G_*BH?Muv>}vf#dS>0#|MRJ z7TG;lW@FJNh5{-qdN7Lb2UgI#DmY_2P;Ze&TZ2ld&clb~UTEo?eKh48b(SQ9Y%w3P zSxS6RcJXC?x40Ka>@%lmicLM%%*+fBiWWnmQnFzu)&1)(#p*W3B5q_FVCpM54=G;f zx=X}aSbznRaEB)c+BqfJ~mF%4UUwD#AOT) z>z&}%fL<5RXj8ftY{Di?!oAwV#3g`00ras<%dY_~d2fYvVE}Hk?#RuGPj`HL{OcaU zH5*RS57c|ziqKb+#~tP1cHC!m-f|OO@(XFR8V&?%LZ3Ej@B!c6OkJ#IHj)%%X466H z=#?j21s5~?C$ddh2ys$hS-(_N41w*00#TK%t!-y7DB|Txe>GxL2R{cWBp4NYbp4zJ zR7*ceG9W=d^w0Xs%3Ez#1o+zjyu3|7r6>rdfPgd!$nQ-MUpc1zj5@*i3PO)GWszpL zk_i?zeJ;yqH{L2qobvo+$>fLBMktm=Q$4LHbKIWr0sskRDeUZD<#2QNx?ikqYYe18 zK*%03Q&h#(Au;yP6YBiekXX4>M0Q6ps}-48{APPuXb|{?;MNV$?E4|hP}cofvS`LR zC(||6%aRhAIUg8Y8r62zuOLZkyqw4IW0>>9wCA_Z?!29cy|Kpdp`A|TK^gS9jEvTu z+`JXG*O{X4%(V=n3kr6PYN&+W?wzA{uqpIdl1%!E)VRG55nL;!Gwm-x$HgNS33 z#da}4_k$PT_xZ^077agr-0sCtOc~! zyxAK=Ev*yFrKst_uUVFqt z=1t|V`GvGUd-OJ%Vlr~5yDtHHud_(Z|6){FrLe>5m-O@8?*X*16jvn>#3k!V(CmNW z$?e4?^NKe2K}BVg}-ri+oR_QsNQx{v@ue|%isbT#zY_}%!$dr3C!syi%6C%)fS z_umZfW(vB>_{B9Am_3!Z97N|i7sOh)eTVdo7t{In-XOQVJDWyFN8e32w&OR7_}pWS z+Y4!Og`>eAG>BW@*1q z<58fy3Y2qoeaP>)@PS_z70Zwis-v1yz z-rxh5+LeZq;_~MP1~*+?RvIziZfu++^^c838KVHw{BkLN;q~w@zq!G!-nwuip}Gr= zxfKBMZSvZ?jQxYA=AhgWJ<;D>1O0BSM)rJn6ooupQ7093e!5Te6gW@?T+_G%w#PJN#KjWG)&FrGD+gG6EYRk7pKLR#AzK{k*#;`SU8Re^B1 zHBEYfaqmy8CNtWJBc;F0YwT21G_|(ijK$G~JqTbsJ;i*ffH>>6d#rF0njR3~{Sx#&Nq>S7 zch$-W;X+GPv&DJXzCzqGnY0X>?zyDl^~O*U?WnONX?qX41EU!2BMK@|G}FqVaEuWm z54^jtj|-HaaD#VxwNg_Oq&ZrBq`PH*EBK9N-MODxd=8<*?cmIFp*nw2D9%r zkLO7~4q~h0AP`NKFBPLnxwg{F7*;NyO|7#_iwp%5JVo+@?eOac0=)nFwWt zN|&L(SkcVf<6DsEo%^ngg9f-!Jn#SI$IrmXN+gV&ba|9bsIx z&#z;rWeZh}M^_5(+zL|ZxRwMh_o{3rj`LiB64hjTx*80!aQbdaf7Uj#VTZ^{(WPn# z{I#}gLtu}8dnjwCor@jZbnAn}s=fY^OJK&{sk7V_apb&Hv4#B|3Lwru&w-knnlpHc zU&@WjQnpk%@gDhzEqMF7Pd8PnmQ`CVo2+d}U-JdX$S}SaI|~o2GY)TdtZGmBo0ljK z1c}OnLlM%omEnDKFj4>~_f zhdgt3#gm$xrz_1SIGPF+(oqLd7sSf#yyyEIjqo@??72uS6A zlyc?kSNBWVe)0 zU<3d$S7-*Q=VK=@g2;^4FiXTuZm+)|2b7OSCry<jykwF#eK2d zvbDtmzFqDYug5(~Plz$^OAWunHO|I8hk>XDX(z;H!E_~RpoCXFVjlFOh_#02~en|$E|R!u`(_m^Ci zx$V?8o3(dpfyJe#N2KvsVk^u6Y4&rLBpE#OqA>LqH{nd@ z6j7QjlttjtaVj{SLW%)<@HL>7L4zP{-!dvtFMzwZKCVs&EL>QdCo#J&U|>a!VGfPU zb4}!ex_WVW0y$MV_izdyytYKyX2<7|V0KEu!K}sa%eMbvV>xsam=r%yKrSX6v)+NM zoq?wxzeURd50Mu-OF+#dAt4H&ZFb9gC{U~d5`HcK6{LMRi#vkI*J84D;9s4D?MX?Q zZqr2BUu+J3aaD{}Ya2AFHUa6tCz(QgyV|4Qae3Q2Jj4Qy+8n?8{Y+^_OXN@~)Dg{r zCeHT*kehUyo0~7xT&MU*J`aQd3dqc&DF2ZJNzeF+2IFn1Rv_NKxJrX_`y%mv*5omd*50DVH}HA}m#2WA>c0dhknHhXgQq*@YBjEImBXV|@t!7sn*UW|>kbx%|J<^U9V%=cFnZyH)< z0IG@HX<9kalDy zbWp+YKmhMUzD5tjgYxV7HvG;3&cObr1bG7MAQ&7}gg{!_Zh}ZRiO8}m3pTQ4*5bMI zws-Zpr6rK-W40P{0-Vi&^YIApI0UPQL!I&F0|HnkL4{mwbEzY{1f5)D4hR?5jRr+!6XYt$4IQw%O)n0q8?#a*M z%F6eepC8_c1csWMm9w_RGD}|5L6y_){Z7r^3inw9(5zFXmBuae$)K8KE z1eSfY8Y?CtL1#X%Tw{k{tOu5e@( zLp}kO=%Z3q06e%|El|+b!3|=+DvxMoqU!pIn3>v^8<8ya%m% zO8d5WQNOmNpjTy1<}|{{LGZ|?CDPxzlnPHdjxm~WE&eAeC63O91m&I+km)tpJzxP- zSpx7p=e%Q`zKOH4>Jg&L2ibA1GsWE>he_M683-#Z20sxyFV-+< zNq(OA`a9w(e;Am7lNJBP?-E8{@(Bp!BlVB&87X06hDf>>EwE9{WlR;A{W7C{0!N*r>sVAiJR-%*sm{IceQGd3 z7>Y#=*>@EIAInCJyM;i!fJRSIwCSol4&Q`W)x+Wv3nT*qFzR%v0DqGxC-?Cg#z7s)^M z?9roOgb%rZL#q>Ls;EZz0xaY+1%=vsHb98o=_?M(w@y#zNlL(U<>;ZI*Q0(2n_+B> zXF<>Xs)dg}S=-s&8-()E|ClAGdqsZMzH5KNT>jqr{iUz#tCRt3CEpfhb8sDbNd3ED zPPj#I@DAF|l}(V_ry9!1$$k4Co)EkPpm%7dNl-FyBt;}esH zKaMaqOY39JN=VP0GAwRe@3 z?_I}s3<=HnK7a5u^<7mQv)+9an_!%9nfnB^!QtGsURSohV$!BUex4%fF$?}P!WYOy zklr{89piYSqW~2kaUzT@aW0@Vgge4|X{V_ELIp zp2-bC+I=&u!n$(H%U|Vd_?smRS5~j~P>e}Shny{k6;eycf~`_FV4od->Rkt8eU(I- zkp<7Q5QkwvAP~1okj}CGvE*hy+gji4p6#hZJpttqR48GVE3K%Qn6wwEcevaj zF1ypL?>b=)X004FvpstBY)aofEzAEZ$pTevbL?|he3{4(EU2FU$$sLl8fW5blDBg9zQ%z8Y}2^v%Q z7&JKc%Bu+?w0RKy8G5ZntDisRmn8Js{#nA<%AS-Jd+?BOQS9}6bGN(CpY7m>p$(*V zNd;h(7Gh1!(q?-)PM&5&Y1ue;wsG(6!sXJKkySxfGP_ZU`G6J+Kflb)Gn58c8c-5< zd^kzP?zp`XF~BJ-Np}mZMvUPth_k-ybgJ7_Tm>O2Kn0>(ae z0$q008+9+Q;MXFTuQar@5MQtGfU%jl^ZkU@4CtQA33$&A^g z=w$>4r-#zBrdxa3;z-w56S>(6QR17MZG)n4o}Bo^#PWgyv!tXXo5h8;+2&)*q~!E2 z6BU(F8JMaTA3v%;?G$s!_gfozCiHOU{!cq|K4#a#Dmvf2Cf5$e%H)xSqusG-7Wd&S z18NQW`Jk`e-O@b)4<0^LL?~vt#4{@G&&zb>_Ed)k2b1Rt_K~T&R%^2r@&9Zes_h7T ztK$9opuAz~K`c&D#TQ4I>(7h#e)%hh8?eM2cwIW4_iRLz+ zBCC_C=eixn3K_9ux}US29)H+5*H%^@Y37_~*J;*QNcQpYzJq&L1!`DAF6NTT7)6us zY%0ql%<^l1ItEW7L(wwJIYRtoGmyPf&(L_PF|ysUfyl!WOdcJtS>HK7Slwwfgyu?N zHMBkkm+KT&-O!5TWOsl<31BL@xVpR=7^G#|`v#&rn>u$p2QkOFYi$Dq19KcfFQX1_ zv$#Em@eQ2Rmj_lNx|*6r(vj^dA$nXR7PZVmLefl`yx{EaF(vU@vMw6l{ey$tx@3%WzCsUHr|Ri-zt`+H7!cS!^PHq@e)oX`?gnT zR$R!nq}Ltd5yXys%)~P>Ja1u7wj~Kx`c|(g`&g5Ro=Y$7<$*yuBFCdUKh%40UK!hWg;!zBt*VqxOPkDKd-H>Txv76k@HMo|aT(w~-TGRE`hnknDXq5Y#8c-@2ZLNVx>X4wRx>Jt{EoqwYxieqPZ z`g6eL87l*yhMZhq&-Ci*!*M$1CdD0Zy?oC-aT$e4KKo)H^J;D0m0&51xKEU^$htx6 z0ls|{N~>7!tMOuc8|ce%+|*9LzMdA8cYJ)T+vpJuB8SR=%U_AJwV!|M;!%sfKulGr zC`O}}L%3>_EhRDkp4la%P|V;0^y;)!10Mb-J{RMgb`$`@Ak^IHu- zAP{0KugK4>$s=q`85$aj%j<0W;-zQ7^wh(i*v9{A0en!q`B`l~6!r@C{28HlDRSF< zQM@sO3RY8k^^#g2N}BlNHr`m&_xHEnemvh~R0ioY1Edpxq0DijklU@*c{95R9PMo7}_#-Q(uv_M_yH+F}X25>YmYD?xD7k z5p-q6L@pX$QeLhOnqh=Vb`E*0F5Jl6xolF_G_+8U2YnVbO4bJgmHTp?&(F^h2Qyma1OD?QyTk6z&ebKVP6`3xmbGp8@YMSbJ8KNX zzMw=dy)$nR6SCv6_|3x8*mzl{UbfG#?Z(ZUiq}PSfH?pdr1yN7SJT6U+Su{CcWL(9@=4*WV>h)`G4Z+zq+s{*%;}a9sh)MR@X7|YVK|$`5GjMXE zw?0M4BQh}U>MjpvhrGN()V&Z+;>hmegT#b{itX}piz!by9*A4@>KPtAuHQ)?pPCw2 zb|Pix1weUK#ksN`%-^jKxCBjuJ2ai0=iP>y-~%@G{WkS1LJSjdKI;L0(C+z-u4gxn zYb3T7t4SY`woAun3aHVuXKybqE?#Nio)f$jC_-6oACkFnhvjYQQGK`ZAxKJ2PVJfc z6m8?2?>eg z%{a5x%F0Sjhf37aXETR+DhdkLz`$!w%<;L!NM8}n6pY_NQNO{c(20qOK8sp12~IFF zWMX6_=g*%WWlhr%#YUTY#i8Tn3wd;73CO*Ez3N_h z=#r_chFN2M0=mUk*O+w#DE9i8>5kn5J7-f{vrI!t6e-)?ErSS2G29#RzusSf9c7eR z)>~)rC}kH7i+f9TG%XYK5A9zT4o%7{%Kg%Vib1nV`s^3@0l4NAMSU5{a5fK%>dshO zqxL!N{_Or6>L~j7d~eHQIKAZK$eVd&*ll6A4zhC|_x*CjabK7#ugmw5WC1}uflDOI zWtCrHfNoR6{CTRV^`|SZ;cM%Ki;xP3=s8W)!l}sRdI=ogmL^~J?v%o?MB$e&smWSc z;L2lE>L5MN17i17)z!^xs5YrDic3oNbfK#0*bbb-0R&3%Xi2iVBhn- zmjZ3Yg`F>6nCburUQ()q+TAzoIM&qBVQzs5h}t6j!ep@UUQQjUDG6LDxZ!G^{Ay7$ z$`>=&(>>8;BhGXxJ~Q(0NUo{Xqq!G1>!Ao5guO}%$08tKac}$j_1Rqt{!X_+dgf|b z0w^LSF)>wA&|Un7kbN7$9L&G@whle~+=F1h>2@-DpI1-=^UG|;>$d4MCe~1!_9*?l zcJ!#p`t_La6WVX*O$ndiB9(IHf+9bPspC;9$L^<*bnQ#d%t{-;5%tGC%G2zjCSt7rcy(TO8%6&&_ z9Tx*|@bC_%J0@&27TYfq6V0x=JzSSX9NE*`!d+SdVXE>^gc2G?owfLt{jX<_(vf zvluL=2itTDIp>?*1;m(wuiTq%ceI_dDOoH4U6Szrb+8|iVx8{ekobCcT@bnw7d!%gYj;wb0hn4_Zcecz7cs&})TS%R##- zq=3F>h@tPg&guDinI|+cS-|QuXgjx+9T@n^STTaS&ivfdFz_8HdIKBVR~_;lZ0tAc z)AaX#o!O{F2i74E564bPe!6MO2&*q!oF34$Vqv9URr_vMEk`K5RMs#rq-SOoQ4pD% zCF8$K-_zawTZ@N7b>rRT)=XLBeHR-mtC9X}%~YiS$_X~Wa8nKTdKw=Cl?w|Qz)xDS z1@vlf*_mLT3d5;I_C|Wem8*FBLNHP@OY{0^j&Xx*asTLhMtWt}RKm^N6X~|`an(vv zVZyK%J?@C2G!nzS?QJ$95+W8}HvPE!_qXB_*?@gi%-|=5fv=1B$uq11TrL1Qr2x;( z><~r7#HcI=Sj%XXpPl)vudn;iSX1oX^py@#(O~AT4m&&A`CR_9MxVS8i?Dn8Moq z&zX67)q$d8Yoe^t`HH@zPVNIAooO}}WvPW_?Wy&~&&b5g%)-`IeM~GY=EsjEvBSf0 zu(2mBvj=$^TnUWjv$8*P52{D_A&3EV0+p9`|{X|2c9iI4(cR z5+rz;$wkdRfGTT3Lc)TR6LcvU;t~a*d7}hf*By-8w{C5&C~%C$P{D|(s7%RyK?J6f z$v&x|UAx`@i=H}i3gCFD+N4LZ3%)AZ7=?hHvVWVU*KAv1MMp=6OblhkV1@t-8=L;> zYf49)M6`Rq@qTwsYVG&$n?w((Ol|a9tjA%23QkxL++4!v%_awvPRTV2g9ytl39-n|_;(Wo>`Jmnbu z=MR^d*Y%$JJYNc;WiN0%elOV;mF3?rqP=u@@uI$Z-U*t;>~lF`S?>;ejSi(H*z`&+ zZ$C{+N!dI0@9pXFx_Dh%4}h;fM`U=+LDQ@FPDv?3QqqxaVa37%`rq)1_KrIr3-93?1k6NfRxBD`U0wNX$NBQ@ z6omV%RuI%%_09xK9wJSapWyM|*>ypK>&L9G>Z#-V;kv2){ax5dS37(QV1W z#`~h9{X%ju%RN^$-al}Z5?Ct1tb4#x^|dACu91ma+e5fm58vKjiu*(qrmqnOXsbH2 zzQ<75#N;H4fPn1&{!nryxP&4bfx&1voIL|gAf~2jtA)_@kuidjWL`tP3QcL*-XDOV zI{9;7e6bg~151pn9)=%G7umbxW?WIYB^g zJ5{baoYfY^C23|>@R&|4P$fA#+p+S2_vR-s2f_MP!pBc7H0?%PwM2G$dqD;*9;7=@ z*oh-w3tOjGm$$ag)m5JRBdC8^17lfZzKAGDC`yxZbkRIIM`l2yP-IgT8D~g^!_$S% z&Q8LOhSnw=%Uz9cy3JwwtBUgS$l@F8s(N~5dvleAD0#C%Ehg8@#l*yMi$%*uhxzEq z{CKxNIVk>|wA)D58TLmrZY|r4v@qnH@6{CsIq$S@{jYo zV0k_m9Q=YxG?gjv8nUWmeb&?%7#QlYGi!Yd`W{Tj0r2E_cU8xEsI6aTtRZvv+})7| z=GId5lz>uMU*D8<^5o=J)6)P&iIy{hmnfa*s!tpHlMC)rv|b<7u=l#9WCxBA=E15> zeGxEx-@0tafR>e&#}x)Gy7@AEnzfNJG29vz08Jm9_yJvB!dYPG&Un=Zw z%G$++6F~=`mj6?p!?!+2H_b1#Gj`NTMpNYm>?Ma;gI%KwrjsBrIjz}q?>`!g@@6h6 zkyk0T&ZG&@-Wu&}1}1fp(;$y$Sh)8KKfwLe6C4>0dJaC(Kw1dU6c-T*Nm)U`^q0o; zmSnI+Au$d>egtZFM}zlGkG}dh+71lE>V1dB*GUL}FMYeQ4kvjcI(N#@1;Ur{3cd1` zmTv1c>@Gse?U|A#r{mqE(v~Zy1Q6*7+fSd=y0{!BCS{gw+rdfv%Sy{8+Vnnw@Or#Bjb}2+4nNBm0Ph{k2vi<5b+xAY-cuokZGi@PEL-!07M)sV-^q z{^C-sgH}gVvoxB5-|F0B7#Yq1fI7}y`|=GnRn_hK+4xA`q|boQrVhMte7)FiEdwd7 z*r7F;^-F}{803;XT0lSXSM2TvATp@4 z9CoNMYMdnGu&I8a(=POBZQ-D{VsA_fVtKfs=<-8Hj#ZRR|K0QFMUF4vB&j#qcbZTp zettYNDDA;1v#wD0h!0V`@BQ$@q|(xE*LjT!G#}N>47T?cF0xO4Yt_%>a!H&b{(5?P zyWSVYp;p{?Ne;sK5->u_StsEzYw@S$PC8$ix}H`Ufagzmd0)MI_pYbOou-WEXxn@7 zMAgV>Z*-`xqSvn9!PBu<}H zwbtEi&Qz#MelLrdf6j053V_+qk@mW^K1n5K2A|GrU7vhKq=Vd$hK`Ok&Qwbyt;8o_ z4Tv1r-x~1S&n+F+7UVoKLO;6?dzH8@F9wDsiWwqFezzWSI_XWJybaIhO_E{+pEEOy z5m8dw;Z#hHj~8z%v+fP~@xu^KF-?w(hW@ABHxyI3U;oz4@nVHc+6CA(BZj&9N4+rtHZO_lhxgPm*qrZFn z4Iu2iMj&^od2`m2Vz~kX1Ea}>%GZgUUs(Z1PzG&7xO(e$i2JO)6KM^-re_uudwrgX&D8s_{O8K>@NrXCk4PE~uHn7_+mT3(f&Ch+trLFV0_| z7%}`dU&-5sKhgP`9J{%6d^{^XVC#1e0=4K1E8ZZapkM;02f7N<3gtGCkN{gi-RUDw z>r&|*^G2=I8`M;^>=hl1Na}UXX!NkNYtrTzG8|(7s7eS;}o>u}%72t15p-{);24FwH`&GeE=WUM` zdHINp%Q?{5Ro&}F0nWjphR%!&Ze>Hi#B{^tI8}v`65LW&MMVYI)+4Hp*HWXuL*o2^ z(?!&1r7N~A8v#;n#AVqxI{h1IK;o^pv9;ANI?E|^cs*9sE2Z-6xVvIuF-oD*zQKJL zsVD)G8zb<8N{7Mb=;o!)vJ3;u!`W^bcO}TzY6gKR9U&n`5MbpvMg!myaw-Du&Xr>U zWF*dIpf&LRrqy%IXG>4uhR@5In`g)StLu~AQsRfnM?`Am(NP@K=vI(B7x$07yCk#6 z@jlu~u~6sLZ?QPOPiCY5@}?U4`g28G`XECR$sQ+?KJOr)L1r5RV*ErsXWYGB7!Z=dgV*s3wqnN9%G?AhTN zN=fS)!`?9rq#!?YieGQvi9&O>khhhC!^4x?2L$k;sSuu_xNZ|`XCnZVtw2K%@f3iz zp9l&T51OL0su0IJkQ=g1U%pg6gp`++fy|0SO9Q(Qj@}40?i}k&VM=@=Vq&)ytGA{K zcKV;rkUMbhz^*g*{-OS@;QLhm_;C1*bP{s%QUE4kt@G8>GE{#rAZCPzuW4p|K&yOG zqvKR!K5*C`q=$RqK0x_3YJj>dneo57x!7p%uWP8zS$czcJB+jff)n#5LxwWL#MC7E z{BvDF@Y3y(cP1t#(JX<0NbK+Hn*{q|w#ikNDHg9c2oR)o=7&Z6j#`V)%)uBk@M^`z z#nrI0ivof~|H@jczNhTEHLrL;(p(DbGb=+=7%+|+&MM)^o#F8wMF~V#)1jW|b&skVxp%qM$^)xsM<3;7y0eW=@BinO zxdS*DRyN+X57eupvb!3}%1igf&~)G1Ra}f`|2+yqi2@R#gvlyU-;fp*S5&NALnV6aa0y5BNlVkn_#wy~LjsEkae;J})UmX8NP(4Fi5Ia@E8F65?x`YXF~?#%4$#c;a+`RfQ- zG33LlE=Y%$YnB0qMMF(39|TUPr>D#y$^gcZ=)r@$;P2EdENsduDsjV?U|G6*dYJk7 zUxQ}5fC*9s1l90yP>_^a?F_vfXi8aHS{k37o&CV~NcqjP9DpJw;`SWi* zh%a9RO`8Eb1F}Rtwm{Gl5#a*u1tgu?t5;FL>k{6(m$OyMqM@G1Dj{J6An9N>nBnlR zm+ajeZv`E6*oY0hMuE2da13d$H&Nm13Buo(@yOlze6beK-vtRuz*xo6+s}S^E^&F3 zZ%qT-Vmg;|4aniql}+d?9|EBT`e6isS2V_d;j}{)Y^&-;V78;l#d@YeePvMlxkI(b z-mJA9&m;ewo@k1_<2F3fkChlVe??CLPUp;P_jZvxSTwZ$fL1D$1+dGeG{ArB?yo*Y zYdFra(ImfzN*fw_QfUYY&4K}x;^%k`__bFs-3rZ2L5Egm2q^`{ z=Sdc}KX%xn-UsT(J1HBk6aY%H56o#h({0}|z6G83g-@cWWmb=9;3COOm z581p2-++)N`%#}xljB&?-6DSrOY<~CCI%*oWeKn`K-5|a$js6*sFvA_0##L2KBtj4 zL~FiSxBq7YQ)b?Qtb8F_CH}70;ZOl|IqItVcDEpbAkjrcxK@^zCkgO7+7^KAN^iaN z^_$FzQhfW_7Vi4S+RON-fYY)!sE~;!r<0T4jx!T>7=tYJX9oZ^PX@i*H`;IVN;GC{ zWzaH#qDK46nN;!9HMOYUfK#i`X)B#UkuQpUOC171lSdo;>?}EOia$)MpFI6Vc886fT?1@8kmBI=`;Ohy zAkyGC_N`S^r$TeJ14M8=2S0wiRAXJ9{?fBLIXP(q0*D?&^Q^FGbImUY8>;Ogf0~Mt zSuKMx(rty8FV(Lxexv0eP$^K^{;$`jD*AEP1jc~A1U!Tj6B_8FO0NNO{;}-zgoQRW#2E*`29X0L^`SK=Z>Vrp-AyUlHvW zmp1`Awr(AAl!kDbE*eHt2pGl#d%$b`ixAi@6?7!guUbb)5utv$Sh6X26`Q?be80w>;t-888>DbU8!{Ghd3I6GB^%>|_aFqY6!3uaK zfMAit{-)%S0JXcgM4MAF4Hb*xLc=k>if>FHm9>|ykPpE}Z&M$O+pGa@oFU95coR07rIo`wQc^avvN z;<>tnY4+JM0-89k4j>yvZUqoe$`j7WPP<3Pc%ZmG!HTkRoI!dr4W@*kpxXojZaU z^Y(2-dF`-4){R%!|3x|* z`Qd}Ii+t&nDLp+sItsPU^7Voi7rz7+)-VO62S7VG^@SJG{0)yPD=LnUiSN$0^a8e< z2cZXYe7+%V&PML+d$|ApW?x5xaNdGbQsN+ih3|K09I!Z48_%6=uPpUhUS7tzbLXR( z!$d|xW+B+;r{^LmAgy80)FcEt%!0Jmix(^$l^Fny)maR(j5*JjT@Vqko$G5VFST7l z>HB^O&g9F+4~fG?0kf-sAGV$3QE_1%VtouEU}bIXFKD{q{Y4N9JG%<_$%mc+ojYtq zCGDK2{`(psF~VrEAK?Gv#!2fU!^44B;2z|`JUF1Z=?yHKM8%29Lng&IdbGa->^D%S zQ1?0$9L(79=g(KtuQ&2QQoWbnuBOp32F8|4gHw5)SUuZd0}B0U>Li?V*fM^ zgUKJ>cK@?FOPey_zVp#-lfcQ4wj3WD?O~c4>grZMryl~^|NqhUo?%UGTi9r@p`suv zAbl%MrS}fHQ4nb=y#v?O=Nea_iu z-*bQ5AK#bf3BrChVXe959OE7Dc*htkB^VGuuApm-0WZ>83%Fd$XFPmzawdSf0f^QJWWJVnPTOluX1!{8d>{Cw zXV0H8UApuI6uE;n?{r1HZThYOKJ*6p`?9WbXl6#w-9F&=8rs)E^%1Wo47M|8HS1sB z9D(v(TBqT#5;9Uf{-O<_+20o;H$OK&f7jD@2Jc{NYkPXruf6XcYWm;=#LBbtP%-Fa z_opL&xF-Wu58ymTN1Gggb-AbMQF7N{d{pfp_WjpQs^R>{%|T*h{<-`A|01d@zojUD zf7T6_Taa^q{|LSd6L|$r_&;8j=l<_Oy#Het)X>A#SW>((gl2jTO}(_#O( zBgp?3B6XkvO;7%Mg?bDPN&kj%4VeHUD+I}Dq+8Yy9k)}r$I9(9m!9Cg2iy<_&d%EQ z40O9KF5_FJDk;R5yo;a%$-9OIm_RHwdX%d^_jf$eP^mgjdJF1OzYOH)4RwmDOpG?k z=LeU#zbkH7)E%fbP3rjrIHrEk zUqHR`ZFTjl;va+T88qUya1DnO$tt)){e)oz@>3R%qQ@=j?Sy49{r&vh#{(A=WVdHv zP}DMruSR%?zB}&J@F0qm5|>>=s5F(uxcmHd{SbGlQs14wR)qRhL2L5+VGq|c%}4i3 z#6y0(`j{?vp8DT!7~eR4gZd5i5Pt60gmJD(z_2gpPy*&wUZq7 zkmI;6#PO?8Azf(WM{^`q?SIoV}FDHtH%_{^I1@yju zzj;^puEBm-DBz*E@WUwCFO?&~R@9U;G2_gN>f6tG@p=XT13JQIW*(4gT_QF%Hki1W z^MMX#35_(4#BO{pu7?KgED!8()-Z8g%pM%%-NvJ9T2|=oIcj_f10WG<2z_MyAokey zYI=V1!WU+w;<%T&73KrzwFdr32wQSSj!Ion#jX$#Lc5^rwGJ3;z{mmJrtmWc4<0-& zn9K#%#mFcobh1KCTH5EXrtV&GShMF8|idDguI0G%dG7+iqJL^gG5^K0&&7bC& z>W3w)isumO@J18K`uH({_<)%^o6%DTyLu3vtJ z|8gvwtX;NaXy{FB73tBsQjsN6lYzX5P_NvmaZ@n@x!JgEkV;YBSdiQ&uoHroVOw9O zsY#S5A9JVGTsm(wH`iLSs&Ch+z?oiR(Ah1{9=QrvbY9RZ%)n{bWy{2O2q8L5A+0L3 zwB8C50#CW-ux2mypyNp08iA5p9AM(`ioEq}B6Y8zv@XVPF5jmb7aQx?)-#c_2eQe5 zyOfD(ANHhf^NPh(yqmGFZiZv%le=+T0aHCj%1z+$-Z0jnd-(5X?LL@?C~zCt2WVCS zU)vciW(vq2AZXF_H2Qqdso%SpAn%3@g!ya>b7Q967i49}ADyP0Wlbv{8M&m{pVMvb zGi{4VW;x%L$y`XohVE;hK; zB210Pv%h`w9Ps7zaLo+dw+dWJf#rccI{2RV^ERHRWAAVx6!+Y0twoj#?F_c3q$nx+ z+98h3?dHvou2m~4b>v}MXe<(>_0t0;=hSx*;0CZ(LzI260kB!`jx+ z)*eFzm;FKJ*ecH%crq7ksfw8hG!>tt z(hIgGWVzWlRs3;$)=DU-vQ}K#RHU0XffA$*82U9Q(ei=@8OMQ6US>NlnPJk#>?on(HbTRb7ek>T+rs++czOiZ^X1ZNB}qMGW12&l z;#waUA9M#CjxEO!2?CvF|8pV*swg8mFiwQ_%^>EVtOg-~cdhy6wIPLn0|zP`bpECo zF}{~qUa%izukO&Pgy^#m3-x1TCq+A0M-H98qjFrv6l1!&oGtxFeOjwv2jwuwrqtVJ zheH-c;Idq+*4eP*Dr6MQceg72VDZRVZM^|vq{v)DY~4*pRV+Dg{8 z^ah`T$5GakLnqhLf8Uf*NP()dcM`Aty?(f8gPF573@FUXcMGb_)=5W%ceiw`$(@J_ zl`Se5_cr_+Cf-Owdf~XN_klt&j>-%Hr@HWtcJ^2cU|O4koG*Dhw&4=iWOw_# zW`Fa#b(D`q0u7&IQ>(DL$#Pn0noB~1>0w<-?YD0~zxU&oBKg= z+0^89aa~{{i0Y$Us9A29D&;*d)pm}R*_uZZsP-Q4?1{WopLgZT4?fLM8MsKz?h#9= zO$(iLC8)G?v>^+FJ%?!Bej?*qFrf(M)ZbjPL8bjbu(%k5cKZdIZSrcm)oy>hzPv-P zjHH@mpw&r8jkD=u7Z3irT7_lS>=7#r8u}5dLhibFQJJ_raFK2144eAx+Y3KOS@4tz zznb378ebB>W{>;aho_|IJ-{yGpB}&vpgIhBt?cywJXfF>bk z$C6?HqGlYRN{7}x`@3;Qhh@XbxYMD+q-g=`2|kRp5mAvcKES6*r$R9U`Q^AWI~VI3 z)U^w38G>`t=x&@RBbLF-hQ#X$S zo6%z(N;Uk2g&QXJK!X(J+p$`4SUZtizh;c{4^ia_XOJ;tML6a#6-N#|k^T{dXxM%V zP1&q?6PfN34a7GYp))t@#BuVLpk9wtB8Gw9P&-X5G|Hn69)oMaWe(QHLI=P*erV=U z@{vY5dU1gNT78gg>>kLj`UJtEhmIN-nYu+03ng;`LJ%lRuPVlKF4seDsA~4yeMVGX zV*$|3R_LI6sC26}4Y##*fgx~$nQDX+cYXc~7Sp3%T+nd(u`6y?5&YSx2#WBsxA+J! zQM&JvW~y9hR8G25o>~(uuJoB@SVQJy@BvSeS?Nu51))DCy{4|%+{j3Tua$dvy}|`! zt8E1g^3s6f5I!&mw;ItREQGzph7b9Or^2!$+ROKJD!_7K^ zk+IZbK#ZvQHO;$tRGULQ+U(KC%h2cM#XmjcBn{@H1#cyms1772O*5~uDg8R|jq?WR zUHxEuy!QFhkYr0)@K^KCa(;Mv!}$1YI+5z1IIu>j-g=AR&R`% z^Jy}u?nhA_EcI{>=%!|CUTA&NwZI70e`DixR%%8;QMoKgFuaL*Bh`)n;-%=^{s#ix z(k2^zq|__z=1BE^U{VSVM1M{!a<8?WQihEDpej1^41eMqYHY5Qo4 z1*Bv?wHC9Zf6lDTCZ(TtYas4(&*`VRnSl@BZDU9`QN-p%0dvmoNv8e10PE>3K@4F>j-`u2&T7)Xc!#S-o zCnqs_KzS3QLeQz(+JFZVNqXS^je*nX4j?I0-vD)F!IVg^P;X+v>NS?U_&cy)a0ieN zoV>X1-ke`=-wwOjlw67*k}iiDI~FIny1TzEu9^3=^y{7*gZ-f;Xp9(O=rme-9!t&z zV2p}YfXt!G{$ybhbdP{m-z5~Qj%RQ7$XhB0@?LtHd)z9xfZesKKrMz(leE7hlYuJ zMEKs^zj0keJR)C~`Qk-T-e_?DJ|h%`US)2L0`f)^*K*T3SJ@9RE9=0Cp9tI1K&#%C z-iB@1V|E$ux1d+IKDf#La2@k9D%JtM&6m*ei-nHm8bANom!Bh(9=C4G8f|+Sjye^^ zC?FGMEP7WbW~h4y+$R8e=;dm(-||M4(B=9Xu1X5Anv#Job2-oj2N()YYC83rITiiz z;pVHuz=OMx8o@$`iG10kIDv2edO1WiDD9<%M=6=+W`?Ao=Jt-ijLUxe_MtV@Alv-a zHN`f(FC6K-nQRQAIl}^!6UYGm?C6f4Eu@#h9+pzA4i$!6!izw^b>TzV**Ju2d3vow z$)8IGk6mH9J31euEn@) zKCL7?-mN~Km%7YF9L zGU-~$2mFOhPUM@rsmcgO#_6Kda+~f*9UWC86Dl=?)+kNgjhG+>wl6vxvA{BV5zij6Tajh#cD^lDEQ`_dy^E`guHaI6>O$H?^*>$!YrG)zUmz!f zU7~r^SJE1m!}!xH?<=}|>E1%FAHu-89()WC?B9t~IhbLO4FL&+B>>uS;+QAp3l)l7 zzkm#5hM6?}cP`##^>bt><5DtJj4(O#gYpbqrsTw{)1{H2j5LMY+d_}7kl#U-eRu)JB znxUx02IT`cp0{Ai1p_Y6e(VzXE7mXeQ%mh8_`54-%}7f#PD;Z>kPRHU&%-NkE^TaR z%(){cQom-Q+5d^Jvn;sf3Bo#X?Om>S_jUuS2uZn5jwr^zQ$f~8amj1PQQdzXX|fH9 z3Rp^EiNbYR2E4SC6sa@RRXr*_!9RNrXYLXI-Kof%RX*F0)drSwX`m4P9`kTECVr?dVz^mrCM4aWk+F`oq+=C|o`Lg2sczAAgb+sMF%Hhr{@nIw; z-RT$`2>XVM{Z2H*ynwq_-i<2@(hIk<@`((ctX8Ae-R9->{WQdH!P&{wWE%lhY6t2& zyso;>p9g1sT8$PypB}J(EeBP6-6vgGhTn{c*@VSqZ?jh{gu@9klR>7YRb=AmpP(%t zGp@Qsyn1^cQ|3qkDb;EmJ#J@nUUaYy7Hj~vMqGA(zXXX;`m!3Ep#j1KKAAeVI{EGQ z*IKvSTx-=pi2uH6x=^ah-YuLlkX_aF{rwJtd#lI9P!c;$j}xN7GBbo+zO;nrlUGB= zD(y!x&eSZu(PFx^aAuuz(F@zIMv8}vRiN#w3wHPSTN%$}jB!WABZHo5vf%knt65Kz&yeygPgw4rJ z0LY?jf_h!YtwOV?OExF(h6is!X}*rK$#zCH>3mH^bbPMvpd@7%$!qT;m4r}*S&=5p zRs+3AZgy1bDU<*11h_~zEug(g38*85p5mq`l1qo03#dR({l6FAW4dfThCnW?MFns>DqiX+Io5k@Pb zK(eQ&y8eOePHY0n;KAc8&?0aRFC!wZDdv`32eVP3W0$e7A|v}0-D^Midws9k^70}n``Vx3=^nZs(Z&@t;eNnOR!lOokM zn?%_s1Bouwzq8_}@&z1`U)VY*h=f4u%ctERJT$=NGW|zN(a7k5-8NnTtelI%o`mqh zNEp^6y3mMWI^?F$Zih|fFplvMa>POTUGcEQ~R_}NmjvQ{xA@1@x1cu zj7BY3^(wm-qQ_*aSFuhCMo9yD%9^4i{I#qxc+jpJAinnZH;F#2jsigwzSZW2)s6xI zAbyyB@v$}Fl8Wm&l7Eq6)u2&R(IOWi74Ev~HW;HMDddv%W6YSE@D~dKWo}`q!TxcOm zs(9~Orn_=ZKf2tdFqf73SGX?s4IQHX zo^fVfcL=O#DaVwww>X+5*g)AY*Gc;MvzLv7qq!j?q7*ITon|>wZG%- z?~k3vuISj<$bG-r&9;09lES>a{P7tXH~syuf_T9G@C*}6(mB||$=fY0Wo~FTRaK07 z5s%`*vDca%v-5KoSQ&LY6Ce4UUY6de^Wo>=iEp0GdY|~dKgZ{yu-PC9R+ErqE*H%E zZh4u*>~;k&Z*~BW(e*1=$~CpLj{b4=ODOE!2N58(S@$XU@Z-Vo6poqEgI^dq->@(^ zco70}^Wf$9_%!6rD=C%Zkl%9_Zr$pk2j9-d&RZ}*o}7O8`~UgJmv@_QkA(fT>i_tP zyZoPz_}!uLUtfCEsGt8oue1mYcr`@+pw%jnm0#P3&D_lF$Ft*`(c3^X(_d(MFS>1Z ze*PPnnO(E8GFG1Jl_Ub5)RnKMl5z3znsT1WAZz>%bWoA32sxnlUK*^@l|HgOUiG{w zf?-Im)mcXJ(GR95Hs$c!bSxvwoj-r_ii=a5djnn16Q$VPTu^Vx@X@+W_t^2{N8hFd zq=AzCub~rWKy1#zh04>n2mNCnmKHq&($>w6o}T$ea>y(Wr&v3gOeb>e;rgeSK*z3F z1S+!0FJ8X%nraLM0waAa?i^zWT;kEcwE+KEG)BgEoA4uHus^YFR^c56NXWxSkG@}{ zX?#@Xh^}b0e()e>>=;Cc{{mLDF3JNdB3%sDb4?7B$Wv=R3nTB= zlb}YpULfSXmkXI{u@a{j+=jgfKB`W|FWZ=u}Ss)P;!eYhn4_#%si zKO>kKET*TrEhjH84=J=lCXxmw2eZDIy}$MSjE#8lZ1ibN}OPP=D|w--oOT zZSL%3-M%9?sS?Ve==(lu>%Bs(s;2|@@#9s}F^I_LvtxD<;_1 zD|k648Z6cw56x5HVnF}vyhD5y=^``pm?dST#2da(B%s^k_#)SKcILlFkb!v;uCg6- zsXgqcQ$Hy#Dw>oTdiXRCg=v>Y=}uGkgSyB9~ziU zpNqoG3YPXpB(tz1*ZEa%=gqh7=ymBRWuUeXU}R*~3=OT<*+o>pq{B&W*05&he9o9# zat6GpFJbcd4gbzWnS&E&*`hKVRM*#OQ=~V|b8)-Attbwa;N-Bd8z;_i7$ER07cZ`X zjrleuMf27z-lHeZl#Mp{uCUQ_Dcv~O;k+c}@U>)OU?Bc=Jim2`$?iNHh+)2bLHYd4 zHvVncW)HI=Q>I35-O%5AO;3IexFaWQHWL2p`tvYcJW$eldVX79U%z}^VQe}%EsXeWkOJR0<9XTm@(H$>35_$!>PvKnaDjSyy!lym$rfmW)DityWXxTC)i zR#Dycz{A)DZ-TObIg5ZH-rCw)n#$#Goj~vLaPQk^UVi?;gVg`sX`v6mPE(wJ_!FbA z78V1BWw*u1uYT|=M%T(ShaId2y`>YWd>a*kh<&Y8WOn|1;pO^am$8u*EltfweLs%x?(KQ(F&Up@WbJ6bp9PHM z49W_oQiT7{aP@y%{Pw+$@;tg-aO>@JBPChBG!0Amo*yt)`XA4A=7!NZpde|<9Rp^d zzmA@;DeNUr2L*=&zh)JC3m$>jP;-H%j?UcFQ2ftAQP- zp?PW|G#9Lhbpm=QC&|fyfeW&-vcSyW(J3M+-qDnQ1599NC%dsRicRr^0_cJTR4w1Z z|K;cBclYjH=bc`-Yy{{*BN@DVN5OCP&8V~8ydUO)g@pwI|L;5a&%f<^Iy8;^_gH5O zt{pR(sA47`#T!(CULMmbqHb<*pU9RU_L(6+zS(MBl5-FPrN2B%N@;6r?%`*-!7K(D zOmC{A_h}_|3(JY9xzmx-!3(Ra-$%4svE1hxYpcAX?tQAMQG~oaeq2}8%Lf!P10ORz zHy2$~6I6FJjQTS(^9&Y?6@!?Vnf*j!LYqL1h~Aw$C(#uxj4a4&__3dpwQBg$e zChZBCrp`|I#)c;-fyY}~J$xt`931@BM2PA;IZ8oQ)%h3>a3oSOxb7mN^xtRcU*F9h z+Pf|tA$Lji>&y8re;FX*p6ntnXXoaYdd{6DAN=eDM(TX&XxEqfS@6OP@W+AI+yE!^ zK3EUX1IOK~)b~`GiBOu{yQ4R5-Lfgdy>T8o9k#q&IFLFfcm4Y5u&%Bywph_?<-R9? zsM140{eP~2TzL`V{J7`OFxdOG%z^?zC=^;*t>7k8^^i;edc$)}Owk=S3Xwyjg2KXl z;^I{E3l3k@ilX1@u@9C9JLMT!qz-XK-(|TXwrU>&O=E>i>ag+u{FyX;$Qs8zdX$p%gi-W#Hl|+S$Ofm~n2h#f>`i%gJ4eZ28m7thyuw zbmfPDx#%&&MQAzYdbPF~3-|B0AQ&=NiIHBo8PP= z>VrmXhK0>&P_X@=TK_a$n5#!`ZqqLUIUFWOHz)AX10;MynsKkN%ZP9k?CTz z+o#)+58))xuD1|c`cyfH!Cgr*(se>XeErRO;~udq({1~R^P6bvw&FToKF*f5HaLiV zIK$*OnM(pXea*rnJn_Q%sg-xB*CwBI4RSSiE}Y%%Q)T7IbbS}LZEvYS6mnHi5PLwd zm+)CSOYKd|A@?=2`Nc6$PtTKQ&wkd&i2z9X?ydU^Cc(t?gfUPbRtfBFflP8^FDmx! zuX{?$${p?PQ~3C8W8w-DbMDeeRK?2JdRJ-hyTsI=J(g6g;*B3pfBW`cBO7xX)rXNZjHzkGHyf*!E;$W!Jk6e@o{;5hsqmTz-^SmO z4}1@x!X0$QiUX$pc?s~fugaZ_HYfZfuL=vhlm+Th75wn+@o@`!ZiQQq9~_}$=@I}j z(rPm3`ZMW|HEe}S#7sA7oM&TJcQ8pVQ56t~VCqaNai0$U+1Z&6Rg{u?4|@E;H~9qw zO6+^NhKo&I{3!o9kF(3Hmj+NLA+G59NE-1Fju`Xm;OLTC_dd^Dn#T8o-sjK9(_E5% z?0(c(&K2=6eCP&$wBn-2A@6p(!VuU2b;&8b>kAbjsM~D2)*idVT3DT2Z zxJgYf$O6pK+hh^psW#*V2@U7kPq*3b1ysFcDj2^1;K7gMSrMbhaM0ae^V$P44zfH^ ze_B*j4{qK2*`6G`6C+|;{RW<^3Ta#>sN}#JpfU%U!Sj4sN2d^_EB3|b!SMqwkLKLP ziw2$T`<>n0EhrF6)TScEl+Q0l98cYE%oU4 z#BI-deaJoP!}#l!ohqIc&WLnjaYD5{Ffp-Vd1G4ggcD+^;P*%NZLdUxMd!CUr)1A= zLtmU(wKEe0D^djkW&21~dHI*mBVybS{h5VRX$L;4vHz)NHWFPBTe!>tP_Bk=wP z#XH^xfJW$WwE%+z05qyckH(NH(rBG$H22Uf1TxiKqi zo0~=J$-rsuEGyr5;CcGx%iAv^UjF*5r4bxb>(a_}k@4GmUB#H=r0 zlGAH;;!+cJ(K3Bf4D>&oD@dzATL8*|V2RfORtF9GX&i=yeocGP3N&djG5H4tvG-PH z*(gRWR1MYYFbUT&rC@2%iz`;M=u>EaQu;M zaVm#OT)SGVQfJPH9DJo-WpX^Q^CEetF++fx|`<88k~~K*fJ}2r^Ud;1`VOdz0R${b;8XII@PY=bp~N zQ)b-9!Af=rBI@WGS6u|x)+@q)>f)5)?nBXlCEVPHWoB8zhn4o0BU?*}n52wH8`-Bo z#K-PK+9Ks{txP-zlV;()^=Xc20++={EA1htXbUH_(v>$8z!`6});olEn@<5_*g{HOrMZc~xoo*bH)zoA@Eypi%e zpYTOyJ3!QqBA3*b8A=moX`Y0Bxy!Fz`)*flIBf0^V>jYcSV#GoYx31W{^;ZVHBuCV zQ;`nU{`H99V7ImZWeUMRvwC0r5U#Bo`)A=UJD)#uTN5)#kSGrEWRPTHJE&+~DPyg< z>|0QxrhE4pHdA5viX z0lr}R>Wc`(uEhFJtHwMxzLvMBwB8lzO9OAsN0ybnUr*AL{s9AOWc3kV(S|S<@+LF4 z;>q+D7j(-IN=Nnw46xK&1QeYWx7)@Bo&S0QGJr_x#Ty*G0kkHp(FI?=Vk+DyH*?1Q zk&N_9L!||M;?67kCazVan;UeeonwGo{Qe%kD)R#duEv`%Ji0o5zv#-sWKpT5Twd!~ z=h6fRh5-l9?nN5tCwY>Aj;64;^FnW}!v!0~p~cCgVGOF|H$hzf<0mOY zIXd{O`$YWlM!(Wf54oIApPr>)%!!r(dwf8Opp7Z@!9PwBTUU?xUa{0O8=AJ?#T}*k zqq#v_^7n<8xm>VarYv`+XjiSf0xRk4r2HHssIjyk!zJhcN)t8yWSj@AkV2W86PPQ8 zCsa|~^z`RvgL5}SGwG2E-jo7Dka)1kkZOU9^Y~-0Vt~n_*SH&jlXKolN=#(?PSkH& zrg~&g*L(l)lWZVd7pd}>0$d2%_ltRX;L(R?W44z25`0~$WNrb6LXtPsK;uyUWT+3_PE^h<`7s|}V?_TAE*LPT3}C^oiyznkkS-mi-Z#o4VbE04{LtXQZAafH`|46oS2Iazq#%{p;su zFX?$VeqNG-WOarj8&6^niQB}hqR2~a9AMRaWK9&G`8Z$_nId5}r2MKb@~X8=5xmz0 zsZBHWl2Y4(@G4BFpOFtdfh=a zO16|9=|hDBFb3Vk#ybgpk-g2$i+Pk|6AdJ19~MY{P&<6j<*h&n$88CFUr$S&UZ&xQBH6*?Cq=eun>_m3A^Nhg8Nk@?}PN7=Lu z-Sy~Mgqa9jKWae5jH)4&Yfi?8>NYl=Y_V0o8%&Vpk*c;wBOY4g^i;%L88~Bmqp8*& z)3eVS=EQH+gS4t^1IW^2ahEQAcyC-X_O1KF3t+Geq>yv@dgk8GRhTsBsyV%c&tb=m z%4SkxUEoRIoTr^-iuTfjR#Q)yD6ZD+{zS{P4HJp^mnZw0v$M1_JR|NCaNG?Y72R5< zhX>j-GQ#tT@x9}2UMw36SPE{91MEyi&&5hQO}VcfyHJ`LVzI1>UhJyn6D6|uWaPq^ zJ3MItOR5FebITD@uxSbSwhP*iy)#SwDJn~FU6?`=AJF~Kqh?Cd`uJ$hFXvfgh9 ziK>}BVqs|kxun{|_RX|%#CLy~uhZzLnBAb5H9D~f9sLy*C5oW}vDS+TcBLsD@%(Fp zScW5OEvV9^K|@jT#j8%kW=-K#1RhS$3SztMG=Mp4iNjj0BTF}9mVPw-X>xcVME2aC z^Tv<8{`HnQ+KBM zH1yQNl|L)oV8J@MG=-U;B^-9vb1@@6FG@{>YAMq!kTa|tYRKYri2v%IF%5oG9@|M= z82OlQZf;O;QiU`n%_FrxSSmVH;ACgn4R-nJ0ltXp-d-g>Y7HWEfvbs{vzizBilzWn z+|l6}7qt^@kh8#r;72ufd+GEfZSKK7WnEd{*~rJ`7S%AQ?2Ro%?M|QwlFkbd?Bt6V zQn+baf(?KTVdbSzTl?DZ-8uzMZo>j1S`=doLS6N`?juM2=U+!8`_K6|vb~xtC5AO^ z4iZVOXL1jqQOc}Wq2HVny7!nxzL84{Ha6WRtJ9;R@{5xS^g^wGXKAhZ9d6*5|B(RG z70(`fUuTXq&D{|e6to`oboxSg)@S&!{#_F-&2WrW0!=*CO3pDhoiI$t&q{p{kkt1{`X_c#=(14-!v&@bA|<2H4jT!N32EaaU%mI( za`pW)&c+v454yrZ#F?dc;-+A(R*^UFu{FY1PlTzzFbG%DUDzgAsxmIOR+C?8{Lp@y_k*EgP(3BA6;*)$V2H!WK1s|IdWL# zl3IRX4Zsu-D-`Gp`$*4?y{6B#E`FVviD2|S^qtp};XJRUrIiBAF=SlKHjeRz(<`D- zzTq)h?W$^MdB$r~fn0Ge3Axsj`-WhAM*tx`X>Tr~m--fm7s7Z)&ovn58WK7VRQw;R z^7sclsUv1Ao1NUTT)RF59-)K%1~iIQ`eN9w+No9oKy^>WSGLOF#nO{|OO`ZAMPGGK z1@|RStBV=_MlQm|I+kJoVSHb;S5f^cIE!~Qb?iyu-DkK)Vv9T!qZfH1jOgB;iCT0L zLYN|7pGtyug-4r1oLI`2o@V^~qjgpJfYqn3*$n>*T~RQ+_yI(t;6*Eoir+YL#p*QuS@wr`)hG+a2*4j?!HT8zNsiqtz?RHJPZv)dAb zzqK+AkQX#I&3zn7Xc9H~+U_AHfV*XATm>>UU{FMK2RNWcx;d|0Sh-F&f>2HdO-sMf z8IvAlQWdC7#CXAV8gl|q=IIeuqwke?DF?~Xe|lPe!DQ}$u|_@ySZXMKui9s&8L;gp zH7bb=D*JEn2)Iq~FoQ~ouKWaW4_WH;G=E&Hy1q728nJ1gZ(oiR78g&sd30Za)7)yJ z+FPjzTb$v~S{k~W0O*qn=ZTvQ^~y9RC7$W)P^eFfoOQ5Tt-W%!pS;sFXb%{S^#aGd zX|dAoDUB4}nXjY6;7QsW0C}fwTe&Nzt&p+qfW^dOE#~Zs_GBcOi9wCi!A5c#cC`Ue zxX|1!eN`R+`PB&pFJS2XNk#t5BGB*6f^A+iw?yENi)fa`hn^AsLLK-2+nhH)1vYf1 zRMh_4lkO8-m44NIjE=xO96Pqlj;*Z)v%&%|X(bjvZpru2uH1S&Tv!@@T|MT~W9`h- zUjY=fuKE_Kuk+?jB;EkX21D9GC}fpe5@Qf_3icf7MNQ^{o;N-|&f&@}?tG3L z2GH_jY_e~gns&9Pk_-A)>Ek&Co=Yqo9Jda9i`a`?HPVi!U-wz;fA@ZHOF@Um0!Zy$ z9|C9!oUm!R-BF-Te2gouYkmI}i2)3`9kLdYIe+9=gO%u*0UcbrIS9rl~q;ZV8a4$L<3~9_TXW)8f;sOvb_Z9mBIGQ zwdCQ5t`y{}nVIuEhqS|M6~9AV_`ekiRI-rK>i%g(an@e0PShwlD*$YmzbN@+3`@fFrYbB z1ExIow^uZ8b&CCICM8>Kr0kDbkWlka0GQK+ZZeQw)n~3h zny9HUq`P|KUj2uEYXLwVi2{eG6kpNs0Ea@_4L~-fts>I)kzQx5b)`L<&wVnx{q}8g zm%UY&P4m~A!5e$Xu=1L*grVx0?HLO@MaK0b`ncr*bbP|jYp3d8@eq|Hu}J-`t7I(E!qevw=`n)9HG$erh!jIb=95DUcXh(?OEitQBaOi@fS%ett*7~pD?vL8PYx$t z$IB87on#=xc^M=UiS2Nc`qb_;$pul|K)U7MuURDtv7FeF!-K=m%af(tVfT5$N1{1p zyn#?X)?UJX@=6SM?=k1x(IA4bp%oCnm*mMWPXx_fW{C=aMpdS@a+CQ&tjVhDm6 z+Y32>Emv9*(@{g2LtP&M$PA9e9YDqursq?oNR;}mGo=j&m18)wqb5xT&rg^s>T$}) z88~qQqN-Bil$4Qy!Qi47%Ev-&H{|;R9`9qrj_x5LwXE{NVhj^7+6MBPXU@e>Ag z_MfvAI7+=xlV-gakS@6cA$g9At&)?7*v)GX_2yD4tg%(cJUvDW_!dB62$_BRk^Bt#F%+@18DoU-8<>~N#qO*YEHy6( znV<%HX6qoA#J$fw3=y&K*&p?frOjMk#VyVJsMHdHJnZ;pC}e7Pme)$k&i`o05$X|g zJo69INbcOZDLqPP9mIblg@xwT6Q-MrwE86#F|M}_1o0QsdJpkTjcl`TUY$g;qH>M> z8rd!$0{)&JanRVLcVXgkxNDup1JGl^DLv1zEy~u4Hk~jTjLS0Xoz_-EImy8NL7b7| z-(7UL(gzz`A%HVbl9mYFu6nE+%1{c+=p2?icxVQ!H#mKFydy5TR?b1;Av83GmIXVj z%2Q<()iF+Yw2~0hJ2e#g8-Qq94?>lKAi%e!XbMm;Gfx45VcKa>o9pQzE;(i6@6$tw zT%m@R8>2~>p}-73)!k=Qy2C{jb|n=$A->@%J$h= z07Iru3rdalQlHZ+Ao&Dx*ILoTI7KC)7b*gonc>y6_E#jn@u}&a2(zb1#S-i(CmN;W zMUg>z)JIoBnp-**w#^EyQ5l|2w$C_V7;uHXI^YUEkBryVIzAHubUHxE^>t9kW>O*Dp`1B2JWlPKl9?Vn0_pqZ_Gl4UKBYI`1fZbYG zw|sY2QgnUKSQ5|@G$y&N!7JSi$)o`b$SPpv;4uz82H_WJGJ?p`K>%jbXTwLot3dmodnnxmQFkce2`jVVm#qq+QT zABEm+SyBRE-rgmos{s^bj`j5fjAO}`jbAGWtwzR?)obfJ^EvFrC8IKcH~Gz)lTebe zkYW3PpE`b}z9B+DefK^w@!K_-7^mWf0e=kikQgsBz$-hbEO#M6pG21N`^Xqqvu|^* zsJeC6(!qJaE#)p+W>_QuIZ6J*YhL(MVJ$}($Vg@!5DO0L8x`u7yJewH-oi@pm;%WF z4YwNGH;n!D_{p~2={EV<*|ZOUg9$mnR^grsMA^^OH%#93Hn7pjb$S30X&6ZrF2W)C z!!BfDiY$W%928I;R(wj zFmd}Jsv-C~2s15Uo5~PyxY(z)!)ge%qshAEaY;!6SW(udaZJ)z-;hGa=4$7|+lPd1 zmL=ul%M)VTPe6t@V7`h18D4X+tt_s_=W5SXR7xR^!RuMhhqW*GR^dV(@H zz*|IiY0z_bJtrEz^z5A_E@@Bpy?qM?q0ZH4Cwof* zmqy*89&)bxWqC@6Q`QJte%8|MUg-^h zOc;@q5-pX;p`&Ujy_9A@tA<$gwQ}GAT9#8X#ezp}Sex7KB3$5CRf363TtT~B5vX8% zIZQHS%)oj{8{+485Og0cXDr)BqojdTNI-X3D=R5Sy8u!y_;67+Oqyc{kUMLu=As+D zxs)DZS*W$Q(7_U%+kfBY&R3CV&r{b|j0xf(O0!0t%pd0H-<1~(17D#eqJVRN%Y3hg%w*WoDbd@CH$%{T36J!+!lGtBTYhp zL)|Xldy#P{>r-CjUpk#VNhfyBlQ)cvhE1!W5%j~VR|81hu{}Sx(@t#*y7c2C+cP6O zmfzG^x$7rgzVcWAp+6c0N^&^14Gq9Ntyt#2%fQNnl0wT?9s-pGxgP0B@FK`Y^1U{B6UN zEHURR)6zPP$9DG=b>b&HKuzq6iJ%?q+?*yr&QEF^fDx2Xs9Jer{^*$0K!2=<82RMQ z?jx^b-ZXa>tX>w-Uz{f!WqPFn3j?fT zPMH**@Bj#3pJyt{%CcA?PhS_ZJsaxE$Y|g1=|s`GtOJGtS$(6Pt$)2>5TF>8_Ejwq z1t~WLUkCI>2>CjLHje#1y=ah)}Ex@=?rEP*XFLayYqC$Ix)BFr8gPKKavN3Sg>04zPf@%{If8 zrW3uMAzjgU19s#n3GbtAO@R*aelh(6EEIfp?Cc8IBvd!PhrI{+`Ys`XS=#5+@2h=4 zXN;7@LofgS!BYVQ;%5$j02)C)?(HpagY525ATI-*4QQN9itDEvy!t>>l+mvqbPy2S zk>oMazl8v|W-W3l#=rB?|5}0mV`tVS$iw{6xEJfA~7R_w*L=%ZyA?Wx3!NhKw3gVx)r36?k=UfOF$Z= zJCs&JMY=(xq??;gk(Ta~?ru2K=h^%H?`OZ~d^q3EhjagcTlv9atuf~ud0k@+71_`M zS&mw+1AmYNETK*1F=%=QUN=OE0D=D31^)RZU*sQoynjbF|BpcSf4FD=z7!wUKOgvC z&+bJ2&s+W1#eWNag);uStABj?;VJt!cIMw#{rmm@H3I)nPD@s8^H&Z!fGE4oFh52I zJWlI(?_ENgP+}$$zZTpMN^-fpX2my*=`vAn8|Nz7o@qmC3R% z-&pchgzj(9LG2zm-1PJ&Z9%8v&wBKxc3rhyHai})80N0r zBES>vQRc1vm~RxYgAV{e@giprHa@;XB?5?)-PR@2lqt^1ZFjQk-DR_~y1Gjo!(RlG z|CG249(04tk=W<5IUauyr;;H58UpYlGQ|(qGADbm{pBs|+wZs6-E1x!L$t*kgS}?l zxOk(p+5lqe&}RLW_H_k1(4wuqGs%eyeu@BJuNME`Vm`{vffmyf{s6pabU}*SKXln0 zmu&9S(1E6c{?t^NajTE%)Wn1qT+6Yn;U4OEiJsMWz;MGAxrd)2+X7$HB!)zbOjK@{XPd`VLJLc9x2Qib2PGYKg1$e}FQ7 zi}`5%&ztbLks)wk!^0xFCMKeTf+Wn$$-DdeF&rq2O#8x9NI~CN zx9%kQ*I?!bDk^IC*jQ|Y>86?4S2bPTS3KkG?FdS&+ZLy1XJu3CySs9t#vG=N4Gk#` zvjrBM0s{@iyY+C2;hOxnV=>)Sn+S zi}N{Bhk`1Js;1^^cOPYC=OjeLm6h!eAEtuA*89=ZL%lNjyrnuOEjO2dJS`0XJ>O8% zf$?x`x|Jw2cZBI|$4sR_xZCPk%}0RK8pP2*~FK0Y2h%IZIqY4_MHDy!@Y`L3iPxnPa)> z%+)uRl?HS6#01VwYx}y@$NC0#Mmb~xZU?{QSU;zw?H$wtXl7(#Nt&%KAQvnGz5@+A z`{!PkWJvVYE9#m#H=7l|Fg2IW>A>ES8=xaJ(k;%5cXwuB9~g`4yC%=N3h!w}Lt?l;l$2Jp&lh;J z2gk7+8htOe8>0!gMf%g;!a|V=3czZQwjJuKk$hA`&!dL|*M={T+4X)Llr5?|L!1t|CfAmXvSq)T}pKxF+Uo zzYpG=Ib-fDtem9$V@be&)=8Yz2q>MJyteXl6NP>24KA=U!0e<300OOaSeUn8$X^mE z4T0aUT~P!uSwM>(|0dDRqR+L-pL{@}E%BB{+E9C?3?RUkr|D}ZgYO~Ge!gxo>rg() z$2V}?o5gY=6Md!2$O`uk!N$FQi&{^L591y#s3zj~pPzRXfAGfD)wCn8;Cg>;t*d|J z4=f>eVtd9Rqu;SeuV!U@X5W?Y4q;;oMo}~8C_+x2hIu~2F`TVsWLgBG)i1xFBtLqN z5aP7^C3zRn2EZg8`9>4|#_NvBT@p^S2iej_^5z#<-{-Dbi2M=oAZ3LnMmt$@-t*PL_X)c_xNAZp#ts%ABIFIruoKDX4h2|nSgea4-uFKsqfes zTU%ehyuICP;6B&CaCi3cISU)x$6nUvHtoUQ-an9A6ZXW~tF4}(&`^?V`ELbmqf=}? z9l`2|r3{mmj?7>@#R&*P*7_xEk+lkobSjLK1B|`A7-p*Nvr0=p+Ru3pR~sO=NOmh4 zYz~#7U!U(HQS#A$(qN2-76A}H;H}2F^WYwtnVGt)Qr}?3F88D|=wF+Hgo{PNFS_&1 zm5Y3#QN{uK{5k5Q6K5i5(jq%*Uq{i>{VG$_;&l%0%n0kdJ_U$a(_^; z%;W>SiDDi5V={o}=CJP5W=PLW*tu&+QEWl}FUQ5xhRzWB*3!=ICg? zn6cF533RdTRKq9G64~oKoT^;IkkG@jCw33X=feNwK}sN<-~A<*hQhZ4g`7-~aF8ZiJ2!k67-0bNGrRTL zR_~41cS7CU+v_T0Z8#82=CMX$cPXC5O1@4?Ru>Xt`J=7#&vCYR*OvUvyafycYtLHIxa3>%6)OjNxR%0-v-jTi^q_v%uKr

*ZkQsZu{K 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%0DZ^ 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

K1=eHSYEJSo{)V!(QhruL58 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 literal 0 HcmV?d00001 diff --git a/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- single country multiple id_types -- disables country selector, allows id_type selection (failed).png b/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- single country multiple id_types -- disables country selector, allows id_type selection (failed).png new file mode 100644 index 0000000000000000000000000000000000000000..13c8e841d142108b9166a77f1e855411426eac01 GIT binary patch literal 254706 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ŮBJ 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%0A3qX17GS8}yhF70}6Uo_8Teu&wqn{kwVVtn{j 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 J+jrvEe*v$1i+2D3 literal 0 HcmV?d00001 diff --git a/packages/embed/cypress/tests/verification-method-selection.cy.cjs b/packages/embed/cypress/tests/verification-method-selection.cy.cjs index 59d8c89f..d4532935 100644 --- a/packages/embed/cypress/tests/verification-method-selection.cy.cjs +++ b/packages/embed/cypress/tests/verification-method-selection.cy.cjs @@ -1,4 +1,7 @@ describe("Verification Method Selection", () => { + beforeEach(() => { + cy.loadIDOptions(); + }); describe("multiple countries / id_types", () => { beforeEach(() => { cy.visit("/verification-method-selection"); @@ -38,6 +41,24 @@ describe("Verification Method Selection", () => { "http://localhost:8000/doc-verification.html", ); }); + + it("should redirect to the enhanced document verification sequence in a nested iframe", () => { + cy.getIFrameBody().find("#country").select("ZA"); + + cy.getIFrameBody().find("#id_type").select("IDENTITY_CARD"); + + cy.getIFrameBody().find("#submitConfig").click(); + + cy.getIFrameBody() + .find( + 'iframe[data-cy="smile-identity-hosted-web-integration-post-product-selection"]', + ) + .should( + "have.attr", + "src", + "http://localhost:8000/enhanced-document-verification.html", + ); + }); }); describe("enhanced_kyc", () => { diff --git a/packages/embed/src/js/product-selection.js b/packages/embed/src/js/product-selection.js index a5aa87d1..f2f18098 100644 --- a/packages/embed/src/js/product-selection.js +++ b/packages/embed/src/js/product-selection.js @@ -4,9 +4,9 @@ // NOTE: In order to support prior integrations, we have `live` and // `production` pointing to the same URL const endpoints = { - sandbox: "https://testapi.smileidentity.com", - live: "https://api.smileidentity.com", - production: "https://api.smileidentity.com", + sandbox: "https://testapi.smileidentity.com/v1", + live: "https://api.smileidentity.com/v1", + production: "https://api.smileidentity.com/v1", }; const referenceWindow = window.parent; @@ -36,32 +36,115 @@ activeScreen = element; } - function getIdTypeName(country, id_type, services) { - if ( - services.hosted_web.doc_verification[country] && - services.hosted_web.doc_verification[country].id_types[id_type] - ) { - return services.hosted_web.doc_verification[country].id_types[id_type] - .label; + async function getProductConstraints() { + const payload = { + token: config.token, + partner_id: config.partner_details.partner_id, + }; + + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + }, + method: "POST", + body: JSON.stringify(payload), + }; + + try { + const response = await fetch( + `${endpoints[config.environment]}/valid_documents`, + fetchConfig, + ); + const json = await response.json(); + + return json.valid_documents; + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + + async function getLegacyProductConstraints() { + const fetchConfig = { + cache: "no-cache", + mode: "cors", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + }, + method: "GET", + }; + + try { + const response = await fetch( + `${endpoints[config.environment]}/services`, + fetchConfig, + ); + const json = await response.json(); + + return json.hosted_web; + } catch (e) { + throw new Error("Failed to get supported ID types", { cause: e }); + } + } + + function getIdTypeName( + country, + id_type, + productConstraints, + legacyProductConstraints, + ) { + const validDocumentsCountry = productConstraints.find( + (item) => item.country.code === country, + ); + + if (!validDocumentsCountry) { + throw new Error(`SmileIdentity - ${country} is not supported`); } - if ( - services.hosted_web.enhanced_kyc[country] && - services.hosted_web.enhanced_kyc[country].id_types[id_type] - ) { - return services.hosted_web.enhanced_kyc[country].id_types[id_type].label; + + let validIdType = validDocumentsCountry.id_types.find( + (item) => item.code === id_type, + ); + + if (!validIdType) { + const legacyValidIdType = + legacyProductConstraints.doc_verification[country].id_types[id_type] || + legacyProductConstraints.enhanced_kyc[country].id_types[id_type]; + if (legacyValidIdType) { + validIdType = { + name: legacyValidIdType.label, + }; + } + } + + if (!validIdType) { + throw new Error(`SmileIdentity - ${country} ${id_type} is not supported`); } - throw new Error("Cannot find the full name of the id_type"); + + return validIdType.name; } - function transformIdTypesToVerificationMethodMap(idTypes, services) { + function transformIdTypesToVerificationMethodMap( + idTypes, + productConstraints, + legacyProductConstraints, + ) { return idTypes.reduce( (idSelectionMap, { country, id_type, verification_method }) => { idSelectionMap[country] = idSelectionMap[country] || { - name: services.hosted_web.doc_verification[country].name, + name: productConstraints.find((item) => item.country.code === country) + ?.country?.name, id_types: {}, }; idSelectionMap[country].id_types[id_type] = { - name: getIdTypeName(country, id_type, services), + name: getIdTypeName( + country, + id_type, + productConstraints, + legacyProductConstraints, + ), verification_method, }; @@ -246,21 +329,18 @@ config = JSON.parse(event.data); activeScreen = LoadingScreen; - const servicesResponse = await fetch( - `${endpoints[config.environment]}/v1/services`, + const constraintsPromises = [ + getProductConstraints(), + getLegacyProductConstraints(), + ]; + const [productConstraints, legacyConstraints] = + await Promise.all(constraintsPromises); + verificationMethodMap = transformIdTypesToVerificationMethodMap( + config.id_types, + productConstraints, + legacyConstraints, ); - - if (servicesResponse.ok) { - const services = await servicesResponse.json(); - - verificationMethodMap = transformIdTypesToVerificationMethodMap( - config.id_types, - services, - ); - initializeForm(SelectIdType, verificationMethodMap); - } else { - throw Error("Failed to get supported ID types"); - } + initializeForm(SelectIdType, verificationMethodMap); } else if (event.data.includes("SmileIdentity::ChildPageReady")) { publishMessage(config); } From d491fa776fd14395a3546bd3d71d3de94cb78fdd Mon Sep 17 00:00:00 2001 From: Laud Bruce Tagoe Date: Fri, 17 Nov 2023 08:45:13 +0000 Subject: [PATCH 2/3] Remove build directory. --- packages/embed/build/authentication.html | 47 - packages/embed/build/basic-kyc.html | 499 -- packages/embed/build/basic_kyc.html | 56 - .../build/basic_kyc_pre_select_country.html | 57 - .../build/basic_kyc_pre_select_id_type.html | 57 - .../build/basic_kyc_preview_bvn_mfa.html | 55 - packages/embed/build/biometric-kyc.html | 646 -- packages/embed/build/biometric_kyc.html | 44 - .../biometric_kyc_pre_select_country.html | 47 - .../biometric_kyc_pre_select_id_type.html | 47 - .../build/biometric_kyc_preview_bvn_mfa.html | 45 - .../embed/build/consent-not-required.html | 44 - packages/embed/build/consent-required.html | 47 - packages/embed/build/css/styles.css | 560 -- packages/embed/build/demo.html | 45 - packages/embed/build/doc-verification.html | 417 - ...document-verification-legacy-id_types.html | 49 - ...ument-verification-pre-select-country.html | 47 - ...ument-verification-pre-select-id-type.html | 47 - .../embed/build/document-verification.html | 44 - .../embed/build/ekyc-consent-required.html | 47 - packages/embed/build/ekyc.html | 500 -- .../build/enhanced-document-verification.html | 417 - .../build/enhanced_document_verification.html | 44 - packages/embed/build/enhanced_kyc.html | 44 - .../enhanced_kyc_pre_select_country.html | 47 - .../enhanced_kyc_pre_select_id_type.html | 47 - .../build/enhanced_kyc_preview_bvn_mfa.html | 45 - packages/embed/build/id-selection.html | 47 - .../embed/build/identity-verification.html | 47 - .../embed/build/img/icons/chevron-down.svg | 11 - packages/embed/build/img/icons/chevron-up.svg | 4 - packages/embed/build/index.html | 47 - packages/embed/build/js/basic-kyc.min.js | 3751 -------- packages/embed/build/js/biometric-kyc.min.js | 7765 ----------------- .../embed/build/js/components/.eslintrc.cjs | 5 - .../build/js/demo-ekyc-smartselfie.min.js | 41 - .../embed/build/js/doc-verification.min.js | 5423 ------------ packages/embed/build/js/ekyc.min.js | 3758 -------- .../js/enhanced-document-verification.min.js | 4838 ---------- .../embed/build/js/product-selection.min.js | 281 - packages/embed/build/js/script.min.js | 162 - .../embed/build/js/smartselfie-auth.min.js | 4693 ---------- .../build/kra-verification-basic-kyc.html | 47 - .../embed/build/kra-verification-ekyc.html | 47 - packages/embed/build/product-selection.html | 226 - packages/embed/build/smartselfie-auth.html | 296 - packages/embed/build/smartselfie.html | 47 - ...tion-single-country-multiple-id-types.html | 60 - ...lection-single-country-single-id-type.html | 50 - .../build/verification-method-selection.html | 70 - 51 files changed, 35807 deletions(-) delete mode 100644 packages/embed/build/authentication.html delete mode 100644 packages/embed/build/basic-kyc.html delete mode 100644 packages/embed/build/basic_kyc.html delete mode 100644 packages/embed/build/basic_kyc_pre_select_country.html delete mode 100644 packages/embed/build/basic_kyc_pre_select_id_type.html delete mode 100644 packages/embed/build/basic_kyc_preview_bvn_mfa.html delete mode 100644 packages/embed/build/biometric-kyc.html delete mode 100644 packages/embed/build/biometric_kyc.html delete mode 100644 packages/embed/build/biometric_kyc_pre_select_country.html delete mode 100644 packages/embed/build/biometric_kyc_pre_select_id_type.html delete mode 100644 packages/embed/build/biometric_kyc_preview_bvn_mfa.html delete mode 100644 packages/embed/build/consent-not-required.html delete mode 100644 packages/embed/build/consent-required.html delete mode 100644 packages/embed/build/css/styles.css delete mode 100644 packages/embed/build/demo.html delete mode 100644 packages/embed/build/doc-verification.html delete mode 100644 packages/embed/build/document-verification-legacy-id_types.html delete mode 100644 packages/embed/build/document-verification-pre-select-country.html delete mode 100644 packages/embed/build/document-verification-pre-select-id-type.html delete mode 100644 packages/embed/build/document-verification.html delete mode 100644 packages/embed/build/ekyc-consent-required.html delete mode 100644 packages/embed/build/ekyc.html delete mode 100644 packages/embed/build/enhanced-document-verification.html delete mode 100644 packages/embed/build/enhanced_document_verification.html delete mode 100644 packages/embed/build/enhanced_kyc.html delete mode 100644 packages/embed/build/enhanced_kyc_pre_select_country.html delete mode 100644 packages/embed/build/enhanced_kyc_pre_select_id_type.html delete mode 100644 packages/embed/build/enhanced_kyc_preview_bvn_mfa.html delete mode 100644 packages/embed/build/id-selection.html delete mode 100644 packages/embed/build/identity-verification.html delete mode 100644 packages/embed/build/img/icons/chevron-down.svg delete mode 100644 packages/embed/build/img/icons/chevron-up.svg delete mode 100644 packages/embed/build/index.html delete mode 100644 packages/embed/build/js/basic-kyc.min.js delete mode 100644 packages/embed/build/js/biometric-kyc.min.js delete mode 100644 packages/embed/build/js/components/.eslintrc.cjs delete mode 100644 packages/embed/build/js/demo-ekyc-smartselfie.min.js delete mode 100644 packages/embed/build/js/doc-verification.min.js delete mode 100644 packages/embed/build/js/ekyc.min.js delete mode 100644 packages/embed/build/js/enhanced-document-verification.min.js delete mode 100644 packages/embed/build/js/product-selection.min.js delete mode 100644 packages/embed/build/js/script.min.js delete mode 100644 packages/embed/build/js/smartselfie-auth.min.js delete mode 100644 packages/embed/build/kra-verification-basic-kyc.html delete mode 100644 packages/embed/build/kra-verification-ekyc.html delete mode 100644 packages/embed/build/product-selection.html delete mode 100644 packages/embed/build/smartselfie-auth.html delete mode 100644 packages/embed/build/smartselfie.html delete mode 100644 packages/embed/build/verification-method-selection-single-country-multiple-id-types.html delete mode 100644 packages/embed/build/verification-method-selection-single-country-single-id-type.html delete mode 100644 packages/embed/build/verification-method-selection.html diff --git a/packages/embed/build/authentication.html b/packages/embed/build/authentication.html deleted file mode 100644 index eacaee86..00000000 --- a/packages/embed/build/authentication.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/basic-kyc.html b/packages/embed/build/basic-kyc.html deleted file mode 100644 index 58dcb3e5..00000000 --- a/packages/embed/build/basic-kyc.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - - - SmileIdentity - Basic KYC - - - - - - - - - - - - -

- Sorry, it appears JavaScript is not supported at this time in your - browser -

-

- Please enable JavaScript to verify your identity online with - SmileIdentity -

- - -
-
- -
-

- -

Setting up

- -

- Just a few more seconds -
- We are setting up your verification flow -

- -

- Powered by SmileID - -

-
- - - - - - -
- - - - diff --git a/packages/embed/build/basic_kyc.html b/packages/embed/build/basic_kyc.html deleted file mode 100644 index 4deba76b..00000000 --- a/packages/embed/build/basic_kyc.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/basic_kyc_pre_select_country.html b/packages/embed/build/basic_kyc_pre_select_country.html deleted file mode 100644 index 0a7f2230..00000000 --- a/packages/embed/build/basic_kyc_pre_select_country.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/basic_kyc_pre_select_id_type.html b/packages/embed/build/basic_kyc_pre_select_id_type.html deleted file mode 100644 index 4678e57c..00000000 --- a/packages/embed/build/basic_kyc_pre_select_id_type.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/basic_kyc_preview_bvn_mfa.html b/packages/embed/build/basic_kyc_preview_bvn_mfa.html deleted file mode 100644 index 295c8346..00000000 --- a/packages/embed/build/basic_kyc_preview_bvn_mfa.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/biometric-kyc.html b/packages/embed/build/biometric-kyc.html deleted file mode 100644 index 51eba6f3..00000000 --- a/packages/embed/build/biometric-kyc.html +++ /dev/null @@ -1,646 +0,0 @@ - - - - - - SmileIdentity - Biometric KYC - - - - - - - - - - - - - - -
-
- -
-

- -

Setting up

- -

- Just a few more seconds -
- We are setting up your verification flow -

- -

- Powered by SmileID - -

-
- - - -
- -
- - - - - - - - -
- - - - diff --git a/packages/embed/build/biometric_kyc.html b/packages/embed/build/biometric_kyc.html deleted file mode 100644 index fda22ee7..00000000 --- a/packages/embed/build/biometric_kyc.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/biometric_kyc_pre_select_country.html b/packages/embed/build/biometric_kyc_pre_select_country.html deleted file mode 100644 index 95e54d9b..00000000 --- a/packages/embed/build/biometric_kyc_pre_select_country.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/biometric_kyc_pre_select_id_type.html b/packages/embed/build/biometric_kyc_pre_select_id_type.html deleted file mode 100644 index c0e65417..00000000 --- a/packages/embed/build/biometric_kyc_pre_select_id_type.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/biometric_kyc_preview_bvn_mfa.html b/packages/embed/build/biometric_kyc_preview_bvn_mfa.html deleted file mode 100644 index 3526259a..00000000 --- a/packages/embed/build/biometric_kyc_preview_bvn_mfa.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/consent-not-required.html b/packages/embed/build/consent-not-required.html deleted file mode 100644 index 28a8173b..00000000 --- a/packages/embed/build/consent-not-required.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/consent-required.html b/packages/embed/build/consent-required.html deleted file mode 100644 index 29277c9a..00000000 --- a/packages/embed/build/consent-required.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/css/styles.css b/packages/embed/build/css/styles.css deleted file mode 100644 index 0d8371a1..00000000 --- a/packages/embed/build/css/styles.css +++ /dev/null @@ -1,560 +0,0 @@ -:root { - --flow-space: 1rem; - --color-active: #001096; - --color-default: #2d2b2a; - --color-disabled: #848282; -} - -*, -::after, -::before { - box-sizing: border-box; -} - -blockquote, -body, -dd, -dl, -figure, -h1, -h2, -h3, -h4, -p { - margin: 0; -} - -ol[role="list"], -ul[role="list"] { - list-style: none; -} - -html:focus-within { - scroll-behavior: smooth; -} - -a:not([class]) { - text-decoration-skip-ink: auto; -} - -img, -picture { - max-width: 100%; - display: block; -} - -button, -input, -select, -textarea { - font: inherit; -} - -@media (prefers-reduced-motion: reduce) { - html:focus-within { - scroll-behavior: auto; - } - - *, - ::after, - ::before { - animation-duration: 0s !important; - animation-iteration-count: 1 !important; - transition-duration: 0s !important; - scroll-behavior: auto !important; - } -} - -[hidden] { - display: none !important; -} - -html { - font-family: "DM Sans", sans-serif; -} - -body { - min-height: 100vh; - text-rendering: optimizeSpeed; - color: #1c2334; - line-height: 1.5; - display: flex; - flex-direction: column; - position: relative; -} - -main { - width: 100%; - max-width: 40rem; - background: #ffffff; - border-radius: 2rem; - padding: 2rem; - overflow-y: scroll; - position: absolute; - max-height: 100vh; -} - -@media screen and (min-width: 40rem) { - main { - padding: 2rem 5rem; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - } -} - -@media screen and (min-width: 80rem) { - main { - max-height: 80%; - } -} - -h1 { - font-size: 2.25rem; - font-weight: 600; -} - -section { - position: relative; -} - -form { - --flow-space: 4rem; -} - -form > * { - --flow-space: 1.5rem; -} - -fieldset { - border: none; - margin-left: 0; - margin-right: 0; - padding: 0; -} - -label, -input, -select, -textarea { - --flow-space: 0.5rem; - display: block; - width: 100%; -} - -label, -legend { - color: black; - font-weight: 500; - padding: 0; -} - -input, -select, -textarea { - border: 1px solid #d1d8d6; - border-radius: 0.5rem; - padding: 0.75rem 1rem; -} - -input, -select { - height: 3rem; -} - -textarea { - min-height: 10rem; -} - -select { - -webkit-appearance: none; - appearance: none; - background-image: url(../img/icons/chevron-down.svg); - background-repeat: no-repeat, repeat; - background-position: - right 10px top 50%, - 0 0; - background-size: - 24px auto, - 100%; -} - -button { - --button-color: var(--color-default); - --flow-space: 3rem; - -webkit-appearance: none; - -moz-appearance: none; - align-items: center; - appearance: none; - background-color: transparent; - border-radius: 2.5rem; - border: none; - color: #ffffff; - cursor: pointer; - display: inline-flex; - font-size: 20px; - font-weight: 500; - inline-size: 100%; - justify-content: center; - letter-spacing: 0.05ch; - line-height: 1; - padding: 1rem 2.5rem; - text-align: center; - text-decoration: none; -} - -button[data-variant="solid"] { - background-color: var(--button-color); - border: 2px solid var(--button-color); -} - -button[data-variant="outline"] { - color: var(--button-color); - border: 2px solid var(--button-color); -} - -button[data-variant="ghost"] { - color: var(--button-color); - padding: 0px; -} - -button:hover, -button:focus, -button:active { - --button-color: var(--color-active); -} - -button:disabled { - --button-color: var(--color-disabled); -} - -button[data-type="icon"] { - align-items: center; - background-color: transparent; - border: 0; - cursor: pointer; - display: flex; - padding: 0; - width: auto; -} - -[disabled] { - cursor: not-allowed; - filter: opacity(0.7); -} - -.visually-hidden { - border: 0; - clip: rect(1px 1px 1px 1px); - clip: rect(1px, 1px, 1px, 1px); - height: auto; - margin: 0; - overflow: hidden; - padding: 0; - position: absolute; - white-space: nowrap; - width: 1px; -} - -.flow { -} - -.flow > * + * { - margin-top: var(--flow-space); -} - -.center { - text-align: center; -} - -.split-pair > * + * { - margin-top: var(--flow-space); -} - -@media screen and (min-width: 45em) { - .split-pair { - display: flex; - align-items: center; - gap: 2rem; - } - - .split-pair[data-variant="start"] { - align-items: start; - } - - .split-pair > * { - flex-grow: 1; - flex-basis: 50%; - } - - .split-pair > * + * { - margin-top: 0; - } -} - -.input-group { - --flow-space: 1.5rem; -} - -.input-group > * { - --flow-space: 1.5rem; -} - -.justify-right { - justify-content: end !important; -} - -.nav { - display: flex; - justify-content: space-between; -} - -.back-wrapper { - display: flex; - align-items: center; -} - -.back-button { - display: block !important; -} - -.back-button-text { - font-size: 11px; - line-height: 11px; - color: rgb(21, 31, 114); -} - -.user-details { - padding: 2rem 5rem; -} - -.demo-tip { - align-items: center; - background-color: #f5fcff; - border-radius: 0.75rem; - border: 1px solid #a9d1e8; - color: inherit; - display: flex; - font-size: 0.875rem; - max-width: 36rem; - padding: 1rem; - text-align: left; - text-decoration: none; -} - -.demo-tip[data-variant="yellow"] { - background-color: #fff8ee; - border: #fff8ee; -} - -.demo-tip > * + * { - margin-left: 0.5rem; -} - -#error, -.validation-message { - color: red; - text-transform: capitalize; -} - -.dob { - --flow-space: 1rem; - display: flex; - gap: 1rem; -} - -@media screen and (min-width: 40rem) { - .dob { - gap: 2rem; - } -} - -.credits { - --flow-space: 2rem; - margin-inline: auto; - max-inline-size: 10rem; -} - -.company-name { - text-transform: uppercase; - letter-spacing: 0.1rem; - border-left: 1px solid #cecece; - margin-left: 0.75rem; - padding-left: 0.75rem; - display: inline-flex; - align-items: center; -} - -.company-name svg { - margin-right: 0.5rem; -} - -@keyframes spin { - 0% { - transform: translate3d(-50%, -50%, 0) rotate(0deg); - } - 100% { - transform: translate3d(-50%, -50%, 0) rotate(360deg); - } -} - -.spinner { - animation: 1.5s linear infinite spin; - animation-play-state: inherit; - border: solid 1rem #cfd0d1; - border-bottom-color: var(--color-active); - border-radius: 50%; - content: ""; - display: block; - height: 10rem; - width: 10rem; - will-change: transform; - position: relative; - top: 5rem; - left: 50%; -} - -@keyframes rotate { - 100% { - transform: rotate(360deg); - } -} - -@keyframes dash { - 0% { - stroke-dasharray: 1, 150; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 90, 150; - stroke-dashoffset: -35; - } - 100% { - stroke-dasharray: 90, 150; - stroke-dashoffset: -124; - } -} - -/** - * Combobox Styles - */ -smileid-combobox { - display: block; - position: relative; - inline-size: 100%; -} - -smileid-combobox-trigger { - border: 1px solid #d1d8d6; - border-radius: 0.5rem; - display: block; - inline-size: 100%; -} - -smileid-combobox-trigger > * { - inline-size: 100%; - block-size: 3rem; - display: inline-flex; - align-items: center; - padding: 0.75rem 1rem; -} - -smileid-combobox-trigger svg { - margin-inline-end: 0.5rem; - flex-shrink: 0; -} - -smileid-combobox-trigger input { - appearance: none; - border: none; - background-color: transparent; - padding: 0; -} - -smileid-combobox-trigger button { - color: initial; - display: initial; - font-size: initial; - font-weight: initial; - text-align: initial; - background-repeat: no-repeat, repeat; - background-position: - right 1rem top 50%, - 0 0; - background-size: - 24px auto, - 100%; -} - -smileid-combobox-trigger input ~ button { - display: block; - padding: 0px; - flex-shrink: 0; - background-position: right 0px; - inline-size: 24px; - block-size: 24px; -} - -smileid-combobox-trigger[expanded="true"] button { - background-image: url(../img/icons/chevron-up.svg); -} - -smileid-combobox-trigger[expanded="false"] button { - background-image: url(../img/icons/chevron-down.svg); -} - -smileid-combobox-trigger:focus-within { - outline: 5px auto Highlight; - outline: 5px auto -webkit-focus-ring-color; -} - -smileid-combobox-trigger button:focus, -smileid-combobox-trigger input:focus { - outline: none; -} - -smileid-combobox-listbox { - background-color: white; - - inline-size: 100%; - max-block-size: 10rem; - - margin-block-start: 0.5rem; - flex-direction: column; - overflow-y: scroll; - border: 1px solid black; - border-radius: 0.25rem; - - position: absolute; - top: 3rem; - z-index: 1; -} - -smileid-combobox-trigger[expanded="false"] ~ smileid-combobox-listbox { - display: none; -} - -smileid-combobox-trigger[expanded="true"] ~ smileid-combobox-listbox { - display: flex; -} - -smileid-combobox-option { - box-sizing: border-box; - inline-size: 100%; - display: block; - padding: 0.75rem 1rem; -} - -smileid-combobox-option:hover, -smileid-combobox-option[tabindex="0"] { - background-color: #f9f0e7; -} - -smileid-combobox-option[aria-selected] { - background-color: #151f72; - color: #fff; -} - -smileid-combobox-option[hidden] { - display: none; -} diff --git a/packages/embed/build/demo.html b/packages/embed/build/demo.html deleted file mode 100644 index f0af257b..00000000 --- a/packages/embed/build/demo.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/doc-verification.html b/packages/embed/build/doc-verification.html deleted file mode 100644 index 3e5f72b6..00000000 --- a/packages/embed/build/doc-verification.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - Document Verification — Smile Identity - - - - - - - - - - - - - - -
-
- -
-

- -

Setting up

- -

- Just a few more seconds -
- We are setting up your verification flow -

- -

- Powered by SmileID - -

-
- - - - - - - - - - -
- - - - diff --git a/packages/embed/build/document-verification-legacy-id_types.html b/packages/embed/build/document-verification-legacy-id_types.html deleted file mode 100644 index 640bc0f3..00000000 --- a/packages/embed/build/document-verification-legacy-id_types.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/document-verification-pre-select-country.html b/packages/embed/build/document-verification-pre-select-country.html deleted file mode 100644 index 1889e2cf..00000000 --- a/packages/embed/build/document-verification-pre-select-country.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/document-verification-pre-select-id-type.html b/packages/embed/build/document-verification-pre-select-id-type.html deleted file mode 100644 index 7d74eca3..00000000 --- a/packages/embed/build/document-verification-pre-select-id-type.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/document-verification.html b/packages/embed/build/document-verification.html deleted file mode 100644 index a25b01fe..00000000 --- a/packages/embed/build/document-verification.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/ekyc-consent-required.html b/packages/embed/build/ekyc-consent-required.html deleted file mode 100644 index 6d61cb48..00000000 --- a/packages/embed/build/ekyc-consent-required.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/ekyc.html b/packages/embed/build/ekyc.html deleted file mode 100644 index a9180286..00000000 --- a/packages/embed/build/ekyc.html +++ /dev/null @@ -1,500 +0,0 @@ - - - - - - SmileIdentity - Enhanced KYC - - - - - - - - - - - - - - -
-
- -
-

- -

Setting up

- -

- Just a few more seconds -
- We are setting up your verification flow -

- -

- Powered by SmileID - -

-
- - - - - - -
- - - - diff --git a/packages/embed/build/enhanced-document-verification.html b/packages/embed/build/enhanced-document-verification.html deleted file mode 100644 index ff492f9e..00000000 --- a/packages/embed/build/enhanced-document-verification.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - Document Verification — Smile Identity - - - - - - - - - - - - - - -
-
- -
-

- -

Setting up

- -

- Just a few more seconds -
- We are setting up your verification flow -

- -

- Powered by SmileID - -

-
- - - - - - - - - - -
- - - - diff --git a/packages/embed/build/enhanced_document_verification.html b/packages/embed/build/enhanced_document_verification.html deleted file mode 100644 index 1f8e6549..00000000 --- a/packages/embed/build/enhanced_document_verification.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/enhanced_kyc.html b/packages/embed/build/enhanced_kyc.html deleted file mode 100644 index 69b62ecd..00000000 --- a/packages/embed/build/enhanced_kyc.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/enhanced_kyc_pre_select_country.html b/packages/embed/build/enhanced_kyc_pre_select_country.html deleted file mode 100644 index 25f7577b..00000000 --- a/packages/embed/build/enhanced_kyc_pre_select_country.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/enhanced_kyc_pre_select_id_type.html b/packages/embed/build/enhanced_kyc_pre_select_id_type.html deleted file mode 100644 index d984ee52..00000000 --- a/packages/embed/build/enhanced_kyc_pre_select_id_type.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/enhanced_kyc_preview_bvn_mfa.html b/packages/embed/build/enhanced_kyc_preview_bvn_mfa.html deleted file mode 100644 index 9465a038..00000000 --- a/packages/embed/build/enhanced_kyc_preview_bvn_mfa.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/id-selection.html b/packages/embed/build/id-selection.html deleted file mode 100644 index 06380f49..00000000 --- a/packages/embed/build/id-selection.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/identity-verification.html b/packages/embed/build/identity-verification.html deleted file mode 100644 index f7b3c326..00000000 --- a/packages/embed/build/identity-verification.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/img/icons/chevron-down.svg b/packages/embed/build/img/icons/chevron-down.svg deleted file mode 100644 index 01d7949f..00000000 --- a/packages/embed/build/img/icons/chevron-down.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/packages/embed/build/img/icons/chevron-up.svg b/packages/embed/build/img/icons/chevron-up.svg deleted file mode 100644 index be91aef3..00000000 --- a/packages/embed/build/img/icons/chevron-up.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/packages/embed/build/index.html b/packages/embed/build/index.html deleted file mode 100644 index 6708f78f..00000000 --- a/packages/embed/build/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/js/basic-kyc.min.js b/packages/embed/build/js/basic-kyc.min.js deleted file mode 100644 index cc7ca198..00000000 --- a/packages/embed/build/js/basic-kyc.min.js +++ /dev/null @@ -1,3751 +0,0 @@ -(() => { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod - )); - - // ../../node_modules/validate.js/validate.js - var require_validate = __commonJS({ - "../../node_modules/validate.js/validate.js"(exports, module) { - (function(exports2, module2, define2) { - "use strict"; - var validate3 = function(attributes, constraints, options) { - options = v.extend({}, v.options, options); - var results = v.runValidations(attributes, constraints, options), attr, validator; - if (results.some(function(r) { - return v.isPromise(r.error); - })) { - throw new Error("Use validate.async if you want support for promises"); - } - return validate3.processValidationResults(results, options); - }; - var v = validate3; - v.extend = function(obj) { - [].slice.call(arguments, 1).forEach(function(source) { - for (var attr in source) { - obj[attr] = source[attr]; - } - }); - return obj; - }; - v.extend(validate3, { - // This is the version of the library as a semver. - // The toString function will allow it to be coerced into a string - version: { - major: 0, - minor: 13, - patch: 1, - metadata: null, - toString: function() { - var version2 = v.format("%{major}.%{minor}.%{patch}", v.version); - if (!v.isEmpty(v.version.metadata)) { - version2 += "+" + v.version.metadata; - } - return version2; - } - }, - // Below is the dependencies that are used in validate.js - // The constructor of the Promise implementation. - // If you are using Q.js, RSVP or any other A+ compatible implementation - // override this attribute to be the constructor of that promise. - // Since jQuery promises aren't A+ compatible they won't work. - Promise: typeof Promise !== "undefined" ? Promise : ( - /* istanbul ignore next */ - null - ), - EMPTY_STRING_REGEXP: /^\s*$/, - // Runs the validators specified by the constraints object. - // Will return an array of the format: - // [{attribute: "", error: ""}, ...] - runValidations: function(attributes, constraints, options) { - var results = [], attr, validatorName, value, validators, validator, validatorOptions, error; - if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) { - attributes = v.collectFormValues(attributes); - } - for (attr in constraints) { - value = v.getDeepObjectValue(attributes, attr); - validators = v.result(constraints[attr], value, attributes, attr, options, constraints); - for (validatorName in validators) { - validator = v.validators[validatorName]; - if (!validator) { - error = v.format("Unknown validator %{name}", { name: validatorName }); - throw new Error(error); - } - validatorOptions = validators[validatorName]; - validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints); - if (!validatorOptions) { - continue; - } - results.push({ - attribute: attr, - value, - validator: validatorName, - globalOptions: options, - attributes, - options: validatorOptions, - error: validator.call( - validator, - value, - validatorOptions, - attr, - attributes, - options - ) - }); - } - } - return results; - }, - // Takes the output from runValidations and converts it to the correct - // output format. - processValidationResults: function(errors, options) { - errors = v.pruneEmptyErrors(errors, options); - errors = v.expandMultipleErrors(errors, options); - errors = v.convertErrorMessages(errors, options); - var format = options.format || "grouped"; - if (typeof v.formatters[format] === "function") { - errors = v.formatters[format](errors); - } else { - throw new Error(v.format("Unknown format %{format}", options)); - } - return v.isEmpty(errors) ? void 0 : errors; - }, - // Runs the validations with support for promises. - // This function will return a promise that is settled when all the - // validation promises have been completed. - // It can be called even if no validations returned a promise. - async: function(attributes, constraints, options) { - options = v.extend({}, v.async.options, options); - var WrapErrors = options.wrapErrors || function(errors) { - return errors; - }; - if (options.cleanAttributes !== false) { - attributes = v.cleanAttributes(attributes, constraints); - } - var results = v.runValidations(attributes, constraints, options); - return new v.Promise(function(resolve, reject) { - v.waitForResults(results).then(function() { - var errors = v.processValidationResults(results, options); - if (errors) { - reject(new WrapErrors(errors, options, attributes, constraints)); - } else { - resolve(attributes); - } - }, function(err) { - reject(err); - }); - }); - }, - single: function(value, constraints, options) { - options = v.extend({}, v.single.options, options, { - format: "flat", - fullMessages: false - }); - return v({ single: value }, { single: constraints }, options); - }, - // Returns a promise that is resolved when all promises in the results array - // are settled. The promise returned from this function is always resolved, - // never rejected. - // This function modifies the input argument, it replaces the promises - // with the value returned from the promise. - waitForResults: function(results) { - return results.reduce(function(memo, result) { - if (!v.isPromise(result.error)) { - return memo; - } - return memo.then(function() { - return result.error.then(function(error) { - result.error = error || null; - }); - }); - }, new v.Promise(function(r) { - r(); - })); - }, - // If the given argument is a call: function the and: function return the value - // otherwise just return the value. Additional arguments will be passed as - // arguments to the function. - // Example: - // ``` - // result('foo') // 'foo' - // result(Math.max, 1, 2) // 2 - // ``` - result: function(value) { - var args = [].slice.call(arguments, 1); - if (typeof value === "function") { - value = value.apply(null, args); - } - return value; - }, - // Checks if the value is a number. This function does not consider NaN a - // number like many other `isNumber` functions do. - isNumber: function(value) { - return typeof value === "number" && !isNaN(value); - }, - // Returns false if the object is not a function - isFunction: function(value) { - return typeof value === "function"; - }, - // A simple check to verify that the value is an integer. Uses `isNumber` - // and a simple modulo check. - isInteger: function(value) { - return v.isNumber(value) && value % 1 === 0; - }, - // Checks if the value is a boolean - isBoolean: function(value) { - return typeof value === "boolean"; - }, - // Uses the `Object` function to check if the given argument is an object. - isObject: function(obj) { - return obj === Object(obj); - }, - // Simply checks if the object is an instance of a date - isDate: function(obj) { - return obj instanceof Date; - }, - // Returns false if the object is `null` of `undefined` - isDefined: function(obj) { - return obj !== null && obj !== void 0; - }, - // Checks if the given argument is a promise. Anything with a `then` - // function is considered a promise. - isPromise: function(p) { - return !!p && v.isFunction(p.then); - }, - isJqueryElement: function(o) { - return o && v.isString(o.jquery); - }, - isDomElement: function(o) { - if (!o) { - return false; - } - if (!o.querySelectorAll || !o.querySelector) { - return false; - } - if (v.isObject(document) && o === document) { - return true; - } - if (typeof HTMLElement === "object") { - return o instanceof HTMLElement; - } else { - return o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string"; - } - }, - isEmpty: function(value) { - var attr; - if (!v.isDefined(value)) { - return true; - } - if (v.isFunction(value)) { - return false; - } - if (v.isString(value)) { - return v.EMPTY_STRING_REGEXP.test(value); - } - if (v.isArray(value)) { - return value.length === 0; - } - if (v.isDate(value)) { - return false; - } - if (v.isObject(value)) { - for (attr in value) { - return false; - } - return true; - } - return false; - }, - // Formats the specified strings with the given values like so: - // ``` - // format("Foo: %{foo}", {foo: "bar"}) // "Foo bar" - // ``` - // If you want to write %{...} without having it replaced simply - // prefix it with % like this `Foo: %%{foo}` and it will be returned - // as `"Foo: %{foo}"` - format: v.extend(function(str, vals) { - if (!v.isString(str)) { - return str; - } - return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) { - if (m1 === "%") { - return "%{" + m2 + "}"; - } else { - return String(vals[m2]); - } - }); - }, { - // Finds %{key} style patterns in the given string - FORMAT_REGEXP: /(%?)%\{([^\}]+)\}/g - }), - // "Prettifies" the given string. - // Prettifying means replacing [.\_-] with spaces as well as splitting - // camel case words. - prettify: function(str) { - if (v.isNumber(str)) { - if (str * 100 % 1 === 0) { - return "" + str; - } else { - return parseFloat(Math.round(str * 100) / 100).toFixed(2); - } - } - if (v.isArray(str)) { - return str.map(function(s) { - return v.prettify(s); - }).join(", "); - } - if (v.isObject(str)) { - if (!v.isDefined(str.toString)) { - return JSON.stringify(str); - } - return str.toString(); - } - str = "" + str; - return str.replace(/([^\s])\.([^\s])/g, "$1 $2").replace(/\\+/g, "").replace(/[_-]/g, " ").replace(/([a-z])([A-Z])/g, function(m0, m1, m2) { - return "" + m1 + " " + m2.toLowerCase(); - }).toLowerCase(); - }, - stringifyValue: function(value, options) { - var prettify = options && options.prettify || v.prettify; - return prettify(value); - }, - isString: function(value) { - return typeof value === "string"; - }, - isArray: function(value) { - return {}.toString.call(value) === "[object Array]"; - }, - // Checks if the object is a hash, which is equivalent to an object that - // is neither an array nor a function. - isHash: function(value) { - return v.isObject(value) && !v.isArray(value) && !v.isFunction(value); - }, - contains: function(obj, value) { - if (!v.isDefined(obj)) { - return false; - } - if (v.isArray(obj)) { - return obj.indexOf(value) !== -1; - } - return value in obj; - }, - unique: function(array) { - if (!v.isArray(array)) { - return array; - } - return array.filter(function(el, index, array2) { - return array2.indexOf(el) == index; - }); - }, - forEachKeyInKeypath: function(object, keypath, callback) { - if (!v.isString(keypath)) { - return void 0; - } - var key = "", i, escape = false; - for (i = 0; i < keypath.length; ++i) { - switch (keypath[i]) { - case ".": - if (escape) { - escape = false; - key += "."; - } else { - object = callback(object, key, false); - key = ""; - } - break; - case "\\": - if (escape) { - escape = false; - key += "\\"; - } else { - escape = true; - } - break; - default: - escape = false; - key += keypath[i]; - break; - } - } - return callback(object, key, true); - }, - getDeepObjectValue: function(obj, keypath) { - if (!v.isObject(obj)) { - return void 0; - } - return v.forEachKeyInKeypath(obj, keypath, function(obj2, key) { - if (v.isObject(obj2)) { - return obj2[key]; - } - }); - }, - // This returns an object with all the values of the form. - // It uses the input name as key and the value as value - // So for example this: - // - // would return: - // {email: "foo@bar.com"} - collectFormValues: function(form, options) { - var values = {}, i, j, input, inputs, option, value; - if (v.isJqueryElement(form)) { - form = form[0]; - } - if (!form) { - return values; - } - options = options || {}; - inputs = form.querySelectorAll("input[name], textarea[name]"); - for (i = 0; i < inputs.length; ++i) { - input = inputs.item(i); - if (v.isDefined(input.getAttribute("data-ignored"))) { - continue; - } - var name = input.name.replace(/\./g, "\\\\."); - value = v.sanitizeFormValue(input.value, options); - if (input.type === "number") { - value = value ? +value : null; - } else if (input.type === "checkbox") { - if (input.attributes.value) { - if (!input.checked) { - value = values[name] || null; - } - } else { - value = input.checked; - } - } else if (input.type === "radio") { - if (!input.checked) { - value = values[name] || null; - } - } - values[name] = value; - } - inputs = form.querySelectorAll("select[name]"); - for (i = 0; i < inputs.length; ++i) { - input = inputs.item(i); - if (v.isDefined(input.getAttribute("data-ignored"))) { - continue; - } - if (input.multiple) { - value = []; - for (j in input.options) { - option = input.options[j]; - if (option && option.selected) { - value.push(v.sanitizeFormValue(option.value, options)); - } - } - } else { - var _val = typeof input.options[input.selectedIndex] !== "undefined" ? input.options[input.selectedIndex].value : ( - /* istanbul ignore next */ - "" - ); - value = v.sanitizeFormValue(_val, options); - } - values[input.name] = value; - } - return values; - }, - sanitizeFormValue: function(value, options) { - if (options.trim && v.isString(value)) { - value = value.trim(); - } - if (options.nullify !== false && value === "") { - return null; - } - return value; - }, - capitalize: function(str) { - if (!v.isString(str)) { - return str; - } - return str[0].toUpperCase() + str.slice(1); - }, - // Remove all errors who's error attribute is empty (null or undefined) - pruneEmptyErrors: function(errors) { - return errors.filter(function(error) { - return !v.isEmpty(error.error); - }); - }, - // In - // [{error: ["err1", "err2"], ...}] - // Out - // [{error: "err1", ...}, {error: "err2", ...}] - // - // All attributes in an error with multiple messages are duplicated - // when expanding the errors. - expandMultipleErrors: function(errors) { - var ret = []; - errors.forEach(function(error) { - if (v.isArray(error.error)) { - error.error.forEach(function(msg) { - ret.push(v.extend({}, error, { error: msg })); - }); - } else { - ret.push(error); - } - }); - return ret; - }, - // Converts the error mesages by prepending the attribute name unless the - // message is prefixed by ^ - convertErrorMessages: function(errors, options) { - options = options || {}; - var ret = [], prettify = options.prettify || v.prettify; - errors.forEach(function(errorInfo) { - var error = v.result( - errorInfo.error, - errorInfo.value, - errorInfo.attribute, - errorInfo.options, - errorInfo.attributes, - errorInfo.globalOptions - ); - if (!v.isString(error)) { - ret.push(errorInfo); - return; - } - if (error[0] === "^") { - error = error.slice(1); - } else if (options.fullMessages !== false) { - error = v.capitalize(prettify(errorInfo.attribute)) + " " + error; - } - error = error.replace(/\\\^/g, "^"); - error = v.format(error, { - value: v.stringifyValue(errorInfo.value, options) - }); - ret.push(v.extend({}, errorInfo, { error })); - }); - return ret; - }, - // In: - // [{attribute: "", ...}] - // Out: - // {"": [{attribute: "", ...}]} - groupErrorsByAttribute: function(errors) { - var ret = {}; - errors.forEach(function(error) { - var list = ret[error.attribute]; - if (list) { - list.push(error); - } else { - ret[error.attribute] = [error]; - } - }); - return ret; - }, - // In: - // [{error: "", ...}, {error: "", ...}] - // Out: - // ["", ""] - flattenErrorsToArray: function(errors) { - return errors.map(function(error) { - return error.error; - }).filter(function(value, index, self) { - return self.indexOf(value) === index; - }); - }, - cleanAttributes: function(attributes, whitelist) { - function whitelistCreator(obj, key, last) { - if (v.isObject(obj[key])) { - return obj[key]; - } - return obj[key] = last ? true : {}; - } - function buildObjectWhitelist(whitelist2) { - var ow = {}, lastObject, attr; - for (attr in whitelist2) { - if (!whitelist2[attr]) { - continue; - } - v.forEachKeyInKeypath(ow, attr, whitelistCreator); - } - return ow; - } - function cleanRecursive(attributes2, whitelist2) { - if (!v.isObject(attributes2)) { - return attributes2; - } - var ret = v.extend({}, attributes2), w, attribute; - for (attribute in attributes2) { - w = whitelist2[attribute]; - if (v.isObject(w)) { - ret[attribute] = cleanRecursive(ret[attribute], w); - } else if (!w) { - delete ret[attribute]; - } - } - return ret; - } - if (!v.isObject(whitelist) || !v.isObject(attributes)) { - return {}; - } - whitelist = buildObjectWhitelist(whitelist); - return cleanRecursive(attributes, whitelist); - }, - exposeModule: function(validate4, root, exports3, module3, define3) { - if (exports3) { - if (module3 && module3.exports) { - exports3 = module3.exports = validate4; - } - exports3.validate = validate4; - } else { - root.validate = validate4; - if (validate4.isFunction(define3) && define3.amd) { - define3([], function() { - return validate4; - }); - } - } - }, - warn: function(msg) { - if (typeof console !== "undefined" && console.warn) { - console.warn("[validate.js] " + msg); - } - }, - error: function(msg) { - if (typeof console !== "undefined" && console.error) { - console.error("[validate.js] " + msg); - } - } - }); - validate3.validators = { - // Presence validates that the value isn't empty - presence: function(value, options) { - options = v.extend({}, this.options, options); - if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) { - return options.message || this.message || "can't be blank"; - } - }, - length: function(value, options, attribute) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var is = options.is, maximum = options.maximum, minimum = options.minimum, tokenizer = options.tokenizer || function(val) { - return val; - }, err, errors = []; - value = tokenizer(value); - var length = value.length; - if (!v.isNumber(length)) { - return options.message || this.notValid || "has an incorrect length"; - } - if (v.isNumber(is) && length !== is) { - err = options.wrongLength || this.wrongLength || "is the wrong length (should be %{count} characters)"; - errors.push(v.format(err, { count: is })); - } - if (v.isNumber(minimum) && length < minimum) { - err = options.tooShort || this.tooShort || "is too short (minimum is %{count} characters)"; - errors.push(v.format(err, { count: minimum })); - } - if (v.isNumber(maximum) && length > maximum) { - err = options.tooLong || this.tooLong || "is too long (maximum is %{count} characters)"; - errors.push(v.format(err, { count: maximum })); - } - if (errors.length > 0) { - return options.message || errors; - } - }, - numericality: function(value, options, attribute, attributes, globalOptions) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var errors = [], name, count, checks = { - greaterThan: function(v2, c) { - return v2 > c; - }, - greaterThanOrEqualTo: function(v2, c) { - return v2 >= c; - }, - equalTo: function(v2, c) { - return v2 === c; - }, - lessThan: function(v2, c) { - return v2 < c; - }, - lessThanOrEqualTo: function(v2, c) { - return v2 <= c; - }, - divisibleBy: function(v2, c) { - return v2 % c === 0; - } - }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; - if (v.isString(value) && options.strict) { - var pattern = "^-?(0|[1-9]\\d*)"; - if (!options.onlyInteger) { - pattern += "(\\.\\d+)?"; - } - pattern += "$"; - if (!new RegExp(pattern).test(value)) { - return options.message || options.notValid || this.notValid || this.message || "must be a valid number"; - } - } - if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) { - value = +value; - } - if (!v.isNumber(value)) { - return options.message || options.notValid || this.notValid || this.message || "is not a number"; - } - if (options.onlyInteger && !v.isInteger(value)) { - return options.message || options.notInteger || this.notInteger || this.message || "must be an integer"; - } - for (name in checks) { - count = options[name]; - if (v.isNumber(count) && !checks[name](value, count)) { - var key = "not" + v.capitalize(name); - var msg = options[key] || this[key] || this.message || "must be %{type} %{count}"; - errors.push(v.format(msg, { - count, - type: prettify(name) - })); - } - } - if (options.odd && value % 2 !== 1) { - errors.push(options.notOdd || this.notOdd || this.message || "must be odd"); - } - if (options.even && value % 2 !== 0) { - errors.push(options.notEven || this.notEven || this.message || "must be even"); - } - if (errors.length) { - return options.message || errors; - } - }, - datetime: v.extend(function(value, options) { - if (!v.isFunction(this.parse) || !v.isFunction(this.format)) { - throw new Error("Both the parse and format functions needs to be set to use the datetime/date validator"); - } - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var err, errors = [], earliest = options.earliest ? this.parse(options.earliest, options) : NaN, latest = options.latest ? this.parse(options.latest, options) : NaN; - value = this.parse(value, options); - if (isNaN(value) || options.dateOnly && value % 864e5 !== 0) { - err = options.notValid || options.message || this.notValid || "must be a valid date"; - return v.format(err, { value: arguments[0] }); - } - if (!isNaN(earliest) && value < earliest) { - err = options.tooEarly || options.message || this.tooEarly || "must be no earlier than %{date}"; - err = v.format(err, { - value: this.format(value, options), - date: this.format(earliest, options) - }); - errors.push(err); - } - if (!isNaN(latest) && value > latest) { - err = options.tooLate || options.message || this.tooLate || "must be no later than %{date}"; - err = v.format(err, { - date: this.format(latest, options), - value: this.format(value, options) - }); - errors.push(err); - } - if (errors.length) { - return v.unique(errors); - } - }, { - parse: null, - format: null - }), - date: function(value, options) { - options = v.extend({}, options, { dateOnly: true }); - return v.validators.datetime.call(v.validators.datetime, value, options); - }, - format: function(value, options) { - if (v.isString(options) || options instanceof RegExp) { - options = { pattern: options }; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is invalid", pattern = options.pattern, match; - if (!v.isDefined(value)) { - return; - } - if (!v.isString(value)) { - return message; - } - if (v.isString(pattern)) { - pattern = new RegExp(options.pattern, options.flags); - } - match = pattern.exec(value); - if (!match || match[0].length != value.length) { - return message; - } - }, - inclusion: function(value, options) { - if (!v.isDefined(value)) { - return; - } - if (v.isArray(options)) { - options = { within: options }; - } - options = v.extend({}, this.options, options); - if (v.contains(options.within, value)) { - return; - } - var message = options.message || this.message || "^%{value} is not included in the list"; - return v.format(message, { value }); - }, - exclusion: function(value, options) { - if (!v.isDefined(value)) { - return; - } - if (v.isArray(options)) { - options = { within: options }; - } - options = v.extend({}, this.options, options); - if (!v.contains(options.within, value)) { - return; - } - var message = options.message || this.message || "^%{value} is restricted"; - if (v.isString(options.within[value])) { - value = options.within[value]; - } - return v.format(message, { value }); - }, - email: v.extend(function(value, options) { - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not a valid email"; - if (!v.isDefined(value)) { - return; - } - if (!v.isString(value)) { - return message; - } - if (!this.PATTERN.exec(value)) { - return message; - } - }, { - PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i - }), - equality: function(value, options, attribute, attributes, globalOptions) { - if (!v.isDefined(value)) { - return; - } - if (v.isString(options)) { - options = { attribute: options }; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not equal to %{attribute}"; - if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) { - throw new Error("The attribute must be a non empty string"); - } - var otherValue = v.getDeepObjectValue(attributes, options.attribute), comparator = options.comparator || function(v1, v2) { - return v1 === v2; - }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; - if (!comparator(value, otherValue, options, attribute, attributes)) { - return v.format(message, { attribute: prettify(options.attribute) }); - } - }, - // A URL validator that is used to validate URLs with the ability to - // restrict schemes and some domains. - url: function(value, options) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not a valid url", schemes = options.schemes || this.schemes || ["http", "https"], allowLocal = options.allowLocal || this.allowLocal || false, allowDataUrl = options.allowDataUrl || this.allowDataUrl || false; - if (!v.isString(value)) { - return message; - } - var regex = "^(?:(?:" + schemes.join("|") + ")://)(?:\\S+(?::\\S*)?@)?(?:"; - var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"; - if (allowLocal) { - tld += "?"; - } else { - regex += // IP address exclusion - // private & local networks - "(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})"; - } - regex += // IP address dotted notation octets - // excludes loopback network 0.0.0.0 - // excludes reserved space >= 224.0.0.0 - // excludes network & broacast addresses - // (first & last IP address of each class) - "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + tld + ")(?::\\d{2,5})?(?:[/?#]\\S*)?$"; - if (allowDataUrl) { - var mediaType = "\\w+\\/[-+.\\w]+(?:;[\\w=]+)*"; - var urlchar = "[A-Za-z0-9-_.!~\\*'();\\/?:@&=+$,%]*"; - var dataurl = "data:(?:" + mediaType + ")?(?:;base64)?," + urlchar; - regex = "(?:" + regex + ")|(?:^" + dataurl + "$)"; - } - var PATTERN = new RegExp(regex, "i"); - if (!PATTERN.exec(value)) { - return message; - } - }, - type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) { - if (v.isString(originalOptions)) { - originalOptions = { type: originalOptions }; - } - if (!v.isDefined(value)) { - return; - } - var options = v.extend({}, this.options, originalOptions); - var type = options.type; - if (!v.isDefined(type)) { - throw new Error("No type was specified"); - } - var check; - if (v.isFunction(type)) { - check = type; - } else { - check = this.types[type]; - } - if (!v.isFunction(check)) { - throw new Error("validate.validators.type.types." + type + " must be a function."); - } - if (!check(value, options, attribute, attributes, globalOptions)) { - var message = originalOptions.message || this.messages[type] || this.message || options.message || (v.isFunction(type) ? "must be of the correct type" : "must be of type %{type}"); - if (v.isFunction(message)) { - message = message(value, originalOptions, attribute, attributes, globalOptions); - } - return v.format(message, { attribute: v.prettify(attribute), type }); - } - }, { - types: { - object: function(value) { - return v.isObject(value) && !v.isArray(value); - }, - array: v.isArray, - integer: v.isInteger, - number: v.isNumber, - string: v.isString, - date: v.isDate, - boolean: v.isBoolean - }, - messages: {} - }) - }; - validate3.formatters = { - detailed: function(errors) { - return errors; - }, - flat: v.flattenErrorsToArray, - grouped: function(errors) { - var attr; - errors = v.groupErrorsByAttribute(errors); - for (attr in errors) { - errors[attr] = v.flattenErrorsToArray(errors[attr]); - } - return errors; - }, - constraint: function(errors) { - var attr; - errors = v.groupErrorsByAttribute(errors); - for (attr in errors) { - errors[attr] = errors[attr].map(function(result) { - return result.validator; - }).sort(); - } - return errors; - } - }; - validate3.exposeModule(validate3, this, exports2, module2, define2); - }).call( - exports, - typeof exports !== "undefined" ? ( - /* istanbul ignore next */ - exports - ) : null, - typeof module !== "undefined" ? ( - /* istanbul ignore next */ - module - ) : null, - typeof define !== "undefined" ? ( - /* istanbul ignore next */ - define - ) : null - ); - } - }); - - // src/js/basic-kyc.js - var import_validate2 = __toESM(require_validate(), 1); - - // src/js/components/ConsentScreen.js - function templateString() { - return ` - - - - - - - - `; - } - var EndUserConsent = class extends HTMLElement { - constructor() { - super(); - this.idRequiresTotpConsent = ["BVN_MFA"]; - this.templateString = templateString.bind(this); - this.render = () => { - return this.templateString(); - }; - this.attachShadow({ mode: "open" }); - } - connectedCallback() { - this.pages = []; - const template = document.createElement("template"); - template.innerHTML = this.render(); - this.shadowRoot.appendChild(template.content.cloneNode(true)); - this.consentScreen = this.shadowRoot.querySelector("#consent-screen"); - this.totpConsentApp = this.shadowRoot.querySelector("totp-consent-app"); - this.consentRejectedScreen = this.shadowRoot.querySelector( - "#consent-rejected-screen" - ); - this.allowButton = this.shadowRoot.querySelector("#allow"); - this.rejectButton = this.shadowRoot.querySelector("#cancel"); - this.backToConsentButton = this.shadowRoot.querySelector("#back-to-consent"); - this.confirmConsentRejectionButton = this.shadowRoot.querySelector( - "#confirm-consent-rejection" - ); - this.backButton = this.shadowRoot.querySelector("#back-button"); - const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - this.allowButton.addEventListener( - "click", - (e) => this.handleConsentGrant(e) - ); - this.rejectButton.addEventListener( - "click", - (e) => this.handleConsentGrant(e) - ); - this.backToConsentButton.addEventListener( - "click", - () => this.setActiveScreen(this.consentScreen) - ); - this.confirmConsentRejectionButton.addEventListener( - "click", - (e) => this.handleConsentRejection(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", - (e) => this.handleTotpConsentEvents(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentGranted::TOTP", - (e) => this.handleTotpConsentEvents(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentDenied::Back", - (e) => this.handleBackEvents(e) - ); - this.backButton.addEventListener("click", (e) => { - this.handleBackEvents(e); - }); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - this.closeWindow(); - }, - false - ); - }); - this.activeScreen = this.consentScreen; - } - setActiveScreen(screen) { - this.activeScreen.hidden = true; - screen.hidden = false; - this.activeScreen = screen; - } - get baseUrl() { - return this.getAttribute("base-url"); - } - get country() { - return this.getAttribute("country"); - } - get demoMode() { - return !!this.hasAttribute("demo-mode"); - } - get hideBack() { - return this.hasAttribute("hide-back-to-host"); - } - get idHint() { - return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; - } - get idRegex() { - return this.getAttribute("id-regex"); - } - get idType() { - return this.getAttribute("id-type"); - } - get idTypeLabel() { - return this.getAttribute("id-type-label"); - } - get partnerId() { - return this.getAttribute("partner-id"); - } - get partnerName() { - return this.getAttribute("partner-name"); - } - get partnerLogoURL() { - return this.getAttribute("partner-logo"); - } - get partnerPolicyURL() { - return this.getAttribute("policy-url"); - } - get themeColor() { - return this.getAttribute("theme-color") || "#043C93"; - } - get token() { - return this.getAttribute("token"); - } - handleConsentGrant(e) { - const granted = e.target === this.allowButton; - if (granted) { - if (this.idRequiresTotpConsent.includes(this.idType)) { - this.setActiveScreen(this.totpConsentApp); - this.pages.push(this.consentScreen); - } else { - this.dispatchEvent( - new CustomEvent("SmileIdentity::ConsentGranted", { - detail: { - consented: { - personal_details: granted, - contact_information: granted, - document_information: granted - } - } - }) - ); - } - } else { - this.setActiveScreen(this.consentRejectedScreen); - } - } - handleConsentRejection() { - this.dispatchEvent(new CustomEvent("SmileIdentity::ConsentDenied")); - } - handleTotpConsentEvents(e) { - const customEvent = new CustomEvent(e.type, { - detail: { - ...e.detail - } - }); - this.dispatchEvent(customEvent); - } - handleBackEvents() { - const page = this.pages.pop(); - if (page) { - this.setActiveScreen(page); - } else { - this.dispatchEvent(new CustomEvent("SmileIdentity::Exit")); - } - } - closeWindow() { - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - }; - var ConsentScreen_default = EndUserConsent; - - // src/js/components/TotpConsentApp.js - var import_validate = __toESM(require_validate(), 1); - function postData(url, data) { - return fetch(url, { - method: "POST", - mode: "cors", - cache: "no-cache", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - body: JSON.stringify(data) - }); - } - function markup() { - return ` - - -
- -

- Enter your ${this.idTypeLabel} -

- -
-
- - - - -

- ${this.idHint} -

-
- - -
-
- - - - - `; - } - var TotpBasedConsent = class extends HTMLElement { - constructor() { - super(); - this.templateString = markup.bind(this); - this.render = () => { - return this.templateString(); - }; - this.attachShadow({ mode: "open" }); - this.modes = []; - this["otp-delivery-mode"] = ""; - this.queryOtpModes = this.queryOtpModes.bind(this); - this.selectOtpMode = this.selectOtpMode.bind(this); - this.submitOtp = this.submitOtp.bind(this); - this.switchContactMethod = this.switchContactMethod.bind(this); - this.handleTotpConsentGrant = this.handleTotpConsentGrant.bind(this); - this.handleTotpConsentContactMethodsOutdated = this.handleTotpConsentContactMethodsOutdated.bind(this); - this.pages = []; - } - static get observedAttributes() { - return ["modes", "otp-delivery-mode"]; - } - attributeChangedCallback(name) { - switch (name) { - case "modes": - case "otp-delivery-mode": { - const updatedTemplate = document.createElement("template"); - updatedTemplate.innerHTML = this.render(); - const updatedNode = updatedTemplate.content.cloneNode(true).querySelector(`#${this.activeScreen.id}`); - updatedNode.hidden = false; - this.shadowRoot.replaceChild(updatedNode, this.activeScreen); - this.setUpEventListeners(); - this.setActiveScreen(updatedNode); - break; - } - default: - break; - } - } - setUpEventListeners() { - this.idEntryScreen = this.shadowRoot.querySelector("#id-entry"); - this.selectModeScreen = this.shadowRoot.querySelector("#select-mode"); - this.otpVerificationScreen = this.shadowRoot.querySelector("#otp-verification"); - if (!this.activeScreen) { - this.activeScreen = this.idEntryScreen; - } - this.queryOtpModesButton = this.idEntryScreen.querySelector("#query-otp-modes"); - this.backButton = this.idEntryScreen.querySelector("#back-button"); - this.selectOtpModeButton = this.selectModeScreen.querySelector("#select-otp-mode"); - this.entryBackbutton = this.selectModeScreen.querySelector( - "#back-to-entry-button" - ); - this.contactMethodsOutdatedButton = this.selectModeScreen.querySelector( - "#contact-methods-outdated" - ); - this.submitOtpButton = this.otpVerificationScreen.querySelector("#submit-otp"); - this.switchContactMethodButton = this.otpVerificationScreen.querySelector( - ".try-another-method" - ); - const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - this.idNumberInput = this.idEntryScreen.querySelector("#id_number"); - this.modeInputs = this.selectModeScreen.querySelectorAll('[name="mode"]'); - this.otpInput = this.otpVerificationScreen.querySelector("#totp-token"); - this.queryOtpModesButton.addEventListener( - "click", - (e) => this.queryOtpModes(e) - ); - this.selectOtpModeButton.addEventListener( - "click", - (e) => this.selectOtpMode(e) - ); - this.submitOtpButton.addEventListener("click", (e) => this.submitOtp(e)); - this.switchContactMethodButton.addEventListener( - "click", - (e) => this.switchContactMethod(e) - ); - this.contactMethodsOutdatedButton.addEventListener( - "click", - (e) => this.handleTotpConsentContactMethodsOutdated(e) - ); - this.entryBackbutton.addEventListener("click", () => { - this.handleBackClick(); - }); - this.backButton.addEventListener("click", () => { - this.handleBackClick(); - }); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - this.closeWindow(); - }, - false - ); - }); - } - closeWindow() { - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - handleBackClick() { - const page = this.pages.pop(); - if (page) { - this.setActiveScreen(page); - } else { - this.dispatchEvent( - new CustomEvent("SmileIdentity::ConsentDenied::Back", {}) - ); - } - } - connectedCallback() { - const template = document.createElement("template"); - template.innerHTML = this.render(); - this.shadowRoot.appendChild(template.content.cloneNode(true)); - this.setUpEventListeners(); - } - switchContactMethod() { - this.queryOtpModes(); - } - resetForm() { - const invalidElements = this.activeScreen.querySelectorAll("[aria-invalid]"); - invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); - const validationMessages = this.activeScreen.querySelectorAll( - ".validation-message" - ); - validationMessages.forEach((el) => el.remove()); - } - handleIdNumberValidationErrors(errors) { - const fields = Object.keys(errors); - fields.forEach((field) => { - const input = this.activeScreen.querySelector(`#${field}`); - input.setAttribute("aria-invalid", "true"); - input.setAttribute("aria-describedby", `${field}-hint`); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("id", `${field}-hint`); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = errors[field][0]; - input.insertAdjacentElement("afterend", errorDiv); - }); - } - handleActiveScreenErrors(error) { - const submitButton = this.activeScreen.querySelector('[type="submit"]'); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = error; - submitButton.insertAdjacentElement("beforebegin", errorDiv); - } - validateIdNumber(idNumber) { - const validationConstraints = { - id_number: { - presence: { - allowEmpty: false, - message: "is required" - }, - format: new RegExp(this.idRegex) - } - }; - const errors = (0, import_validate.default)({ id_number: idNumber }, validationConstraints); - if (errors) { - this.handleIdNumberValidationErrors(errors); - } - return errors; - } - async queryOtpModes(event) { - if (event) { - event.preventDefault(); - this.resetForm(); - } - const validationErrors = this.validateIdNumber(this.idNumberInput.value); - localStorage.setItem("idNumber", this.idNumberInput.value || this.idNumber); - if (!validationErrors) { - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - partner_id: this.partnerId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.sessionId = json.session_id; - this.modes = json.modes; - this.setActiveScreen(this.selectModeScreen); - this.setAttribute("modes", json.modes); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - } - async selectOtpMode(event) { - event.preventDefault(); - this.resetForm(); - this.mode = Array.prototype.find.call( - this.modeInputs, - (node) => node.checked - ).value; - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - mode: this.mode, - partner_id: this.partnerId, - session_id: this.sessionId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent/mode`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.selectedOtpDeliveryMode = this.modes.filter( - (mode) => mode[this.mode] - )[0][this.mode]; - this.setActiveScreen(this.otpVerificationScreen); - this.setAttribute("otp-delivery-mode", this.selectedOtpDeliveryMode); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - async submitOtp(event) { - event.preventDefault(); - this.resetForm(); - this.otp = this.otpInput.value; - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - otp: this.otp, - partner_id: this.partnerId, - session_id: this.sessionId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent/otp`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.handleTotpConsentGrant(event); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - toggleLoading() { - const button = this.activeScreen.querySelector('button[type="submit"]'); - const text = button.querySelector(".text"); - const arrow = button.querySelector("svg"); - const spinner = button.querySelector(".spinner"); - button.toggleAttribute("disabled"); - text.toggleAttribute("hidden"); - arrow.toggleAttribute("hidden"); - spinner.toggleAttribute("hidden"); - } - setActiveScreen(screen) { - this.activeScreen.hidden = true; - screen.hidden = false; - this.activeScreen = screen; - } - get baseUrl() { - return this.getAttribute("base-url"); - } - get country() { - return this.getAttribute("country"); - } - get idHint() { - return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; - } - get idNumber() { - return localStorage.getItem("idNumber"); - } - get idRegex() { - return this.getAttribute("id-regex"); - } - get idType() { - return this.getAttribute("id-type"); - } - get idTypeLabel() { - return this.getAttribute("id-type-label"); - } - get partnerId() { - return this.getAttribute("partner-id"); - } - get partnerName() { - return this.getAttribute("partner-name"); - } - get token() { - return this.getAttribute("token"); - } - handleTotpConsentGrant() { - const customEvent = new CustomEvent("SmileIdentity::ConsentGranted::TOTP", { - detail: { - id_number: this.idNumber, - session_id: this.sessionId, - consented: { - personal_details: true, - contact_information: true, - document_information: true - } - } - }); - this.dispatchEvent(customEvent); - } - handleTotpConsentContactMethodsOutdated() { - const tag = "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated"; - const customEvent = new CustomEvent(tag, { - detail: { - message: tag, - data: { - id_number: this.idNumber, - session_id: this.sessionId - } - } - }); - this.dispatchEvent(customEvent); - } - }; - var TotpConsentApp_default = TotpBasedConsent; - - // src/js/components/Combobox.js - function generateId(prefix) { - const id = [...Array(30)].map(() => Math.random().toString(36)[3]).join(""); - return `${prefix}-${id}`; - } - function isElementInView(element) { - const bounding = element.getBoundingClientRect(); - return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth); - } - function isScrollable(element) { - return element && element.clientHeight < element.scrollHeight; - } - function maintainScrollVisibility(activeElement, scrollParent) { - const { offsetHeight, offsetTop } = activeElement; - const { offsetHeight: parentOffsetHeight, scrollTop } = scrollParent; - const isAbove = offsetTop < scrollTop; - const isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight; - if (isAbove) { - scrollParent.scrollTo(0, offsetTop); - } else if (isBelow) { - scrollParent.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight); - } - } - var ComboboxRoot = class extends HTMLElement { - constructor() { - super(); - this.handleRoaming = this.handleRoaming.bind(this); - } - connectedCallback() { - this.trigger = this.querySelector("smileid-combobox-trigger"); - document.addEventListener("click", this.handleRoaming); - this.addEventListener("focusout", this.handleRoaming); - this.addEventListener("blur", this.handleRoaming); - } - disconnectedCallback() { - document.removeEventListener("click", this.handleRoaming); - this.removeEventListener("focusout", this.handleRoaming); - this.removeEventListener("blur", this.handleRoaming); - } - handleRoaming(event) { - const target = event.relatedTarget || event.target; - if (this.contains(target)) { - return; - } - if (this.trigger.getAttribute("expanded") === "true") { - this.trigger.setAttribute("expanded", "false"); - } - } - }; - var ComboboxTrigger = class extends HTMLElement { - constructor() { - super(); - this.handleKeyUp = this.handleKeyUp.bind(this); - this.handleKeyDown = this.handleKeyDown.bind(this); - this.handleSelection = this.handleSelection.bind(this); - this.toggleExpansionState = this.toggleExpansionState.bind(this); - } - get type() { - return this.getAttribute("type") || "text"; - } - get label() { - return this.getAttribute("label") || ""; - } - get value() { - return this.getAttribute("value") || ""; - } - get disabled() { - return this.hasAttribute("disabled"); - } - connectedCallback() { - if (!this.label) { - throw new Error(": a label attribute is required"); - } - this.innerHTML = `${this.type === "text" ? ` -
- - -
- ` : ``}`; - this.setAttribute("expanded", false); - this.inputTrigger = this.querySelector("input"); - this.buttonTrigger = this.querySelector("button"); - this.buttonTrigger.setAttribute("aria-expanded", false); - this.buttonTrigger.setAttribute("role", "combobox"); - this.buttonTrigger.addEventListener("keydown", this.handleKeyDown); - this.buttonTrigger.addEventListener("click", this.toggleExpansionState); - if (this.inputTrigger) { - this.inputTrigger.setAttribute("aria-expanded", false); - this.inputTrigger.setAttribute("role", "combobox"); - this.inputTrigger.addEventListener("keydown", this.handleKeyDown); - this.inputTrigger.addEventListener("keyup", this.handleKeyUp); - this.inputTrigger.addEventListener("change", (e) => e.stopPropagation()); - } - this.listbox = this.parentElement.querySelector("smileid-combobox-listbox"); - this.options = Array.from( - this.parentElement.querySelectorAll("smileid-combobox-option") - ); - this.options.forEach((node) => { - node.addEventListener("Combobox::Option::Select", this.handleSelection); - }); - } - disconnectedCallback() { - this.buttonTrigger.removeEventListener("keydown", this.handleKeyDown); - this.buttonTrigger.removeEventListener("click", this.toggleExpansionState); - if (this.inputTrigger) { - this.inputTrigger.removeEventListener("keydown", this.handleKeyDown); - this.inputTrigger.removeEventListener("keyup", this.handleKeyUp); - this.inputTrigger.removeEventListener( - "change", - (e) => e.stopPropagation() - ); - } - if (this.options) { - this.options.forEach((node) => { - node.removeEventListener( - "Combobox::Option::Select", - this.handleSelection - ); - }); - } - } - handleKeyDown(event) { - if (event.ctrlKey || event.shiftKey) { - return; - } - const key = event.key; - switch (key) { - case "Enter": - case "Space": - case " ": - if (this.getAttribute("expanded") === "true") { - if (this.inputTrigger && (key === "Space" || key === " ")) { - this.resetListbox(); - } else { - event.preventDefault(); - const selectedOption = this.buttonTrigger.getAttribute( - "aria-activedescendant" - ); - if (selectedOption) { - document.getElementById(selectedOption).click(); - } - } - } else { - event.preventDefault(); - this.toggleExpansionState(); - } - break; - case "Esc": - case "Escape": - event.preventDefault(); - if (this.getAttribute("expanded") === "true") { - this.toggleExpansionState(); - } - break; - case "Down": - case "ArrowDown": - event.preventDefault(); - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - this.focusListbox("First"); - } else { - this.focusListbox("Down"); - } - break; - case "Up": - case "ArrowUp": - event.preventDefault(); - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - this.focusListbox("Last"); - } else { - this.focusListbox("Up"); - } - break; - case "Left": - case "ArrowLeft": - case "Right": - case "ArrowRight": - case "Home": - case "End": - this.resetListbox(); - break; - case "Tab": - break; - default: - break; - } - } - handleKeyUp(event) { - const key = event.key; - const isPrintableCharacter = (str) => str.length === 1 && str.match(/\S| /); - if (event.key === "Escape" || event.key === "Esc") { - event.preventDefault(); - if (this.getAttribute("expanded") === "true") { - this.toggleExpansionState(); - } else if (this.inputTrigger) { - this.inputTrigger.value = ""; - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Filter", { detail: "" }) - ); - } - } - if (isPrintableCharacter(key) || key === "Backspace") { - this.resetListbox(); - this.filterListbox(event.target.value); - } - } - toggleExpansionState() { - const listboxIsExpanded = this.getAttribute("expanded") === "true"; - this.setAttribute("expanded", !listboxIsExpanded); - this.buttonTrigger.setAttribute("aria-expanded", !listboxIsExpanded); - if (this.inputTrigger) { - this.inputTrigger.setAttribute("aria-expanded", !listboxIsExpanded); - } - } - handleSelection(event) { - if (this.inputTrigger) { - this.inputTrigger.value = event.detail.label; - } else { - this.buttonTrigger.textContent = event.detail.label; - } - this.toggleExpansionState(); - this.parentElement.dispatchEvent( - new CustomEvent("change", { - detail: { - value: event.detail.value - } - }) - ); - } - filterListbox(value) { - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - } - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Filter", { detail: value }) - ); - } - focusListbox(direction) { - this.resetListbox(); - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Focus", { - detail: { - direction - } - }) - ); - } - resetListbox() { - this.listbox.dispatchEvent(new CustomEvent("Combobox::Listbox::Reset")); - } - }; - var ComboboxListbox = class extends HTMLElement { - constructor() { - super(); - this.handleFilter = this.handleFilter.bind(this); - this.handleFocus = this.handleFocus.bind(this); - this.handleReset = this.handleReset.bind(this); - this.handleOptionSelection = this.handleOptionSelection.bind(this); - } - get emptyLabel() { - return this.getAttribute("empty-label"); - } - get emptyState() { - return ` -

- ${this.emptyLabel || "No items"} -

- `; - } - connectedCallback() { - this.setAttribute("role", "listbox"); - this.setAttribute("id", generateId("listbox")); - this.addEventListener("Combobox::Listbox::Filter", this.handleFilter); - this.addEventListener("Combobox::Listbox::Focus", this.handleFocus); - this.addEventListener("Combobox::Listbox::Reset", this.handleReset); - this.triggers = Array.from( - this.parentElement.querySelectorAll( - "smileid-combobox-trigger input, smileid-combobox-trigger button" - ) - ); - this.triggers.forEach( - (node) => node.setAttribute("aria-controls", this.getAttribute("id")) - ); - this.optionNodes = Array.from( - this.querySelectorAll("smileid-combobox-option") - ); - this.selectedNode = this.optionNodes.find( - (node) => !node.hasAttribute("hidden") && node.hasAttribute("aria-selected") - ) || this.optionNodes.filter((node) => !node.hasAttribute("hidden"))[0]; - this.selectedNode.setAttribute("tabindex", "0"); - this.optionNodes.forEach((node) => { - node.addEventListener( - "Combobox::Option::Select", - this.handleOptionSelection - ); - }); - if (this.optionNodes.length === 0) { - this.innerHTML = this.emptyState; - } - } - disconnectedCallback() { - this.removeEventListener("Combobox::Listbox::Filter", this.handleFilter); - this.removeEventListener("Combobox::Listbox::Focus", this.handleFocus); - this.removeEventListener("Combobox::Listbox::Reset", this.handleReset); - this.optionNodes.forEach((node) => { - node.removeEventListener( - "Combobox::Option::Select", - this.handleOptionSelection - ); - }); - } - static get observedAttributes() { - return ["search-term"]; - } - attributeChangedCallback(name, oldValue, newValue) { - switch (name) { - case "search-term": - if (oldValue && !newValue) { - this.optionNodes.forEach((node) => { - node.removeAttribute("hidden"); - }); - } else if (newValue) { - this.filterNodes(newValue); - } - break; - default: - break; - } - } - filterNodes(searchTerm) { - this.optionNodes.forEach((node) => { - const value = node.getAttribute("value").toLowerCase(); - const label = node.getAttribute("label").toLowerCase(); - const containsSearchTerm = value.includes(searchTerm.toLowerCase()) || label.includes(searchTerm.toLowerCase()); - if (containsSearchTerm) { - node.removeAttribute("hidden"); - } else { - node.setAttribute("hidden", true); - } - }); - const optionsVisible = this.optionNodes.find( - (node) => !node.hasAttribute("hidden") - ); - const emptyState = this.querySelector("#empty-state"); - if (!optionsVisible && !emptyState) { - this.insertAdjacentHTML("afterbegin", this.emptyState); - } else if (optionsVisible && emptyState) { - this.removeChild(emptyState); - } - } - handleFilter(event) { - const searchTerm = event.detail; - this.setAttribute("search-term", searchTerm); - } - handleFocus(event) { - this.setSelected(event.detail.direction); - } - handleReset() { - this.optionNodes.forEach((node) => node.setAttribute("tabindex", "-1")); - } - handleOptionSelection(event) { - const inputTrigger = this.triggers.filter( - (node) => node.tagName === "INPUT" - )[0]; - if (inputTrigger) { - this.setAttribute("search-term", event.detail.label); - } - } - setSelected(direction) { - const visibleOptions = this.optionNodes.filter( - (node) => !node.hasAttribute("hidden") - ); - this.selectedNode.setAttribute("tabindex", "0"); - const currentIndex = visibleOptions.findIndex( - (node) => node === this.selectedNode - ); - const lastIndex = visibleOptions.length - 1; - let nextIndex; - switch (direction) { - case "First": - nextIndex = 0; - break; - case "Last": - nextIndex = lastIndex; - break; - case "Up": - if (currentIndex === 0) { - nextIndex = lastIndex; - } else { - nextIndex = currentIndex - 1; - } - break; - default: - if (currentIndex === lastIndex) { - nextIndex = 0; - } else { - nextIndex = currentIndex + 1; - } - break; - } - if (currentIndex !== nextIndex) { - this.swapSelected(this.selectedNode, visibleOptions[nextIndex]); - } - } - swapSelected(currentNode, newNode) { - currentNode.setAttribute("tabindex", "-1"); - newNode.setAttribute("tabindex", "0"); - this.selectedNode = newNode; - if (isScrollable(this)) { - maintainScrollVisibility(this.selectedNode, this); - } - if (!isElementInView(newNode)) { - newNode.scrollIntoView({ behavior: "smooth", block: "nearest" }); - } - this.triggers.forEach( - (node) => node.setAttribute("aria-activedescendant", newNode.id) - ); - } - }; - var ComboboxOption = class extends HTMLElement { - connectedCallback() { - this.setAttribute("role", "option"); - this.setAttribute("tabindex", "-1"); - this.setAttribute("id", generateId("option")); - this.options = Array.from( - this.parentElement.querySelectorAll("smileid-combobox-option") - ); - this.addEventListener("click", this.select); - } - disconnectedCallback() { - this.removeEventListener("click", this.select); - } - get value() { - return this.getAttribute("value"); - } - get label() { - return this.getAttribute("label"); - } - select() { - const selectedOption = this.options.find( - (node) => node.getAttribute("aria-selected") - ); - if (selectedOption) { - selectedOption.removeAttribute("aria-selected"); - } - this.setAttribute("aria-selected", true); - this.dispatchEvent( - new CustomEvent("Combobox::Option::Select", { - detail: { - label: this.label, - value: this.value, - id: this.getAttribute("id") - } - }) - ); - } - }; - var Combobox_default = { - Root: ComboboxRoot, - Trigger: ComboboxTrigger, - List: ComboboxListbox, - Option: ComboboxOption - }; - - // package.json - var version = "v1.2.3"; - - // src/js/basic-kyc.js - (function basicKyc() { - "use strict"; - const endpoints = { - development: "https://devapi.smileidentity.com", - sandbox: "https://testapi.smileidentity.com", - live: "https://api.smileidentity.com", - production: "https://api.smileidentity.com" - }; - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); - window.customElements.define("end-user-consent", ConsentScreen_default); - window.customElements.define("totp-consent-app", TotpConsentApp_default); - window.customElements.define("smileid-combobox", Combobox_default.Root); - window.customElements.define("smileid-combobox-trigger", Combobox_default.Trigger); - window.customElements.define("smileid-combobox-listbox", Combobox_default.List); - window.customElements.define("smileid-combobox-option", Combobox_default.Option); - const pages = []; - let activeScreen; - let config; - let consent_information; - let id_info; - let partner_params; - let ngBankCodes; - let productConstraints; - let EndUserConsent2; - const LoadingScreen = document.querySelector("#loading-screen"); - const SelectIDType = document.querySelector("#select-id-type"); - const IDInfoForm = document.querySelector("#id-info"); - const CompleteScreen = document.querySelector("#complete-screen"); - let disableBackOnFirstScreen = false; - const CloseIframeButtons = document.querySelectorAll(".close-iframe"); - function postData2(url = "", data = {}) { - return fetch(url, { - method: "POST", - mode: "cors", - cache: "no-cache", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - body: JSON.stringify(data) - }); - } - async function getProductConstraints() { - try { - const productsConfigPayload = { - partner_id: config.partner_details.partner_id, - token: config.token, - partner_params - }; - const productsConfigUrl = `${endpoints[config.environment]}/v1/products_config`; - const productsConfigPromise = postData2( - productsConfigUrl, - productsConfigPayload - ); - const servicesPromise = fetch( - `${endpoints[config.environment]}/v1/services` - ); - const [productsConfigResponse, servicesResponse] = await Promise.all([ - productsConfigPromise, - servicesPromise - ]); - if (productsConfigResponse.ok && servicesResponse.ok) { - const partnerConstraints = await productsConfigResponse.json(); - const generalConstraints = await servicesResponse.json(); - ngBankCodes = generalConstraints.bank_codes; - const previewBvnMfa = config.previewBVNMFA; - if (previewBvnMfa) { - generalConstraints.hosted_web.basic_kyc.NG.id_types.BVN_MFA = { - id_number_regex: "^[0-9]{11}$", - label: "Bank Verification Number (with OTP)", - required_fields: [ - "country", - "id_type", - "session_id", - "user_id", - "job_id", - "first_name", - "last_name" - ], - test_data: "00000000000" - }; - } - return { - partnerConstraints, - generalConstraints: generalConstraints.hosted_web.basic_kyc - }; - } - throw new Error("Failed to get supported ID types"); - } catch (e) { - throw new Error("Failed to get supported ID types", { cause: e }); - } - } - window.addEventListener( - "message", - async (event) => { - if (event.data && event.data.includes("SmileIdentity::Configuration")) { - config = JSON.parse(event.data); - activeScreen = LoadingScreen; - getPartnerParams(); - const { partnerConstraints, generalConstraints } = await getProductConstraints(); - productConstraints = generalConstraints; - initializeSession(generalConstraints, partnerConstraints); - } - }, - false - ); - function setInitialScreen(partnerConstraints) { - const { country: selectedCountry, id_type: selectedIDType } = id_info; - const selectedIdRequiresConsent = partnerConstraints.consentRequired[selectedCountry] ? partnerConstraints.consentRequired[selectedCountry].includes( - selectedIDType - ) : false; - if (selectedIdRequiresConsent || config.consent_required || config.demo_mode) { - const IDRequiresConsent = selectedIdRequiresConsent || config.consent_required && config.consent_required[selectedCountry] && config.consent_required[selectedCountry].includes(selectedIDType); - if (IDRequiresConsent || config.demo_mode) { - customizeConsentScreen(); - setActiveScreen(EndUserConsent2); - } else { - setActiveScreen(IDInfoForm); - } - } else { - hideIdFromBackExit(); - setActiveScreen(IDInfoForm); - } - customizeForm(); - } - function hideIdFromBackExit() { - if (!disableBackOnFirstScreen) - return; - IDInfoForm.querySelector(".nav").classList.add("justify-right"); - IDInfoForm.querySelector(".back-wrapper").style.display = "none"; - } - function initializeSession(generalConstraints, partnerConstraints) { - const supportedCountries = Object.keys(generalConstraints).map((countryCode) => ({ - code: countryCode, - name: generalConstraints[countryCode].name - })).sort((a, b) => { - if (a.name < b.name) { - return -1; - } - if (a.name > b.name) { - return 1; - } - return 0; - }).map((item) => item.code); - let validCountries = []; - if (config.id_selection) { - const selectedCountryList = Object.keys(config.id_selection); - validCountries = supportedCountries.filter( - (value) => selectedCountryList.includes(value) - ); - if (validCountries.length === 1) { - const selectedCountry = validCountries[0]; - id_info = { - country: validCountries[0] - }; - const idTypes = config.id_selection[selectedCountry]; - if (idTypes.length === 1 || typeof idTypes === "string") { - id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; - disableBackOnFirstScreen = true; - setInitialScreen(partnerConstraints); - } - } - } else { - validCountries = Object.keys(partnerConstraints.idSelection.basic_kyc); - } - if (!id_info || !id_info.id_type) { - const selectCountry = SelectIDType.querySelector("#country"); - const selectIDType = SelectIDType.querySelector("#id_type"); - const hostedWebConfigForm = document.querySelector( - 'form[name="hosted-web-config"]' - ); - selectCountry.disabled = false; - setActiveScreen(SelectIDType); - const loadIdTypes = (countryCode) => { - if (countryCode) { - const validIDTypes = config.id_selection ? config.id_selection : partnerConstraints.idSelection.basic_kyc; - const constrainedIDTypes = Object.keys( - generalConstraints[countryCode].id_types - ); - const selectedIDTypes = validIDTypes[countryCode].filter( - (value) => constrainedIDTypes.includes(value) - ); - selectIDType.innerHTML = ""; - const initialOption = document.createElement("option"); - initialOption.setAttribute("value", ""); - initialOption.textContent = "--Please Select--"; - selectIDType.appendChild(initialOption); - selectedIDTypes.forEach((IDType) => { - const option = document.createElement("option"); - option.setAttribute("value", IDType); - option.textContent = generalConstraints[countryCode].id_types[IDType].label; - selectIDType.appendChild(option); - }); - selectIDType.disabled = false; - } else { - selectIDType.innerHTML = ""; - const option = document.createElement("option"); - option.disabled = true; - option.setAttribute("value", ""); - option.textContent = "--Select Country First--"; - selectIDType.appendChild(option); - } - }; - selectCountry.addEventListener("change", (e) => { - loadIdTypes(e.target.value); - }); - validCountries.forEach((country) => { - const countryObject = generalConstraints[country]; - if (countryObject) { - const option = document.createElement("option"); - option.setAttribute("value", country); - option.textContent = countryObject.name; - if (id_info && id_info.country && country === id_info.country) { - option.setAttribute("selected", true); - selectCountry.value = country; - selectCountry.disabled = true; - loadIdTypes(country); - } - selectCountry.appendChild(option); - } - }); - hostedWebConfigForm.addEventListener("submit", (e) => { - e.preventDefault(); - const selectedCountry = selectCountry.value; - const selectedIDType = selectIDType.value; - id_info = { - country: selectedCountry, - id_type: selectedIDType - }; - setInitialScreen(partnerConstraints); - }); - } - } - function initiateDemoMode() { - const demoTips = document.querySelectorAll(".demo-tip"); - Array.prototype.forEach.call(demoTips, (tip) => { - tip.hidden = false; - }); - const script = document.createElement("script"); - script.type = "text/javascript"; - script.src = "js/demo-ekyc.min.js"; - document.body.appendChild(script); - } - IDInfoForm.querySelector("#submitForm").addEventListener( - "click", - (event) => { - handleFormSubmit(event); - }, - false - ); - IDInfoForm.querySelector("#back-button").addEventListener( - "click", - (event) => { - event.preventDefault(); - const page = pages.pop(); - setActiveScreen(page); - }, - false - ); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - closeWindow(true); - }, - false - ); - }); - function customizeConsentScreen() { - const partnerDetails = config.partner_details; - const main = document.querySelector("main"); - EndUserConsent2 = document.querySelector("end-user-consent"); - if (EndUserConsent2) { - main.removeChild(EndUserConsent2); - } - EndUserConsent2 = document.createElement("end-user-consent"); - EndUserConsent2.setAttribute( - "base-url", - `${endpoints[config.environment] || config.environment}/v1` - ); - EndUserConsent2.setAttribute("country", id_info.country); - EndUserConsent2.setAttribute( - "id-regex", - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ); - EndUserConsent2.setAttribute("id-type", id_info.id_type); - EndUserConsent2.setAttribute( - "id-type-label", - productConstraints[id_info.country].id_types[id_info.id_type].label - ); - EndUserConsent2.setAttribute("partner-id", partnerDetails.partner_id); - EndUserConsent2.setAttribute("partner-name", partnerDetails.name); - EndUserConsent2.setAttribute("partner-logo", partnerDetails.logo_url); - EndUserConsent2.setAttribute("policy-url", partnerDetails.policy_url); - EndUserConsent2.setAttribute("theme-color", partnerDetails.theme_color); - EndUserConsent2.setAttribute("token", config.token); - if (disableBackOnFirstScreen) { - EndUserConsent2.setAttribute("hide-back-to-host", true); - } - if (config.demo_mode) { - EndUserConsent2.setAttribute("demo-mode", config.demo_mode); - localStorage.setItem( - "SmileIdentityConstraints", - JSON.stringify(productConstraints, null, 2) - ); - initiateDemoMode(); - } - EndUserConsent2.addEventListener( - "SmileIdentity::Exit", - () => { - setActiveScreen(SelectIDType); - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentGranted", - (event) => { - consent_information = event.detail; - if (consent_information.consented.personal_details) { - setActiveScreen(IDInfoForm); - } - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentGranted::TOTP", - (event) => { - consent_information = event.detail; - if (consent_information.consented.personal_details) { - id_info.id_number = consent_information.id_number; - id_info.session_id = consent_information.session_id; - id_info.consent_information = consent_information; - setActiveScreen(IDInfoForm); - } - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentDenied", - () => { - referenceWindow.postMessage("SmileIdentity::ConsentDenied", "*"); - closeWindow(); - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", - (event) => { - referenceWindow.postMessage(event.detail, "*"); - closeWindow(); - }, - false - ); - main.appendChild(EndUserConsent2); - } - function customizeForm() { - setGuideTextForIDType(); - setFormInputs(); - } - function setGuideTextForIDType() { - const label = document.querySelector('[for="id_number"]'); - const input = document.querySelector("#id_number"); - label.innerHTML = productConstraints[id_info.country].id_types[id_info.id_type].label; - input.setAttribute( - "placeholder", - productConstraints[id_info.country].id_types[id_info.id_type].test_data - ); - input.setAttribute( - "pattern", - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ); - } - function loadBankCodes(bankCodes, placeholderElement) { - const autocomplete = document.createElement("smileid-combobox"); - autocomplete.setAttribute("id", "bank_code"); - autocomplete.innerHTML = ` - - - - - ${bankCodes.map( - (bank) => ` - - ${bank.name} - - ` - ).join("\n")} - - `; - placeholderElement.replaceWith(autocomplete); - autocomplete.addEventListener("change", (e) => { - id_info.bank_code = e.detail ? e.detail.value : ""; - }); - return autocomplete; - } - function setFormInputs() { - const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; - const showIdNumber = requiredFields.some( - (fieldName) => fieldName.includes("id_number") - ); - if (showIdNumber) { - const IdNumber = IDInfoForm.querySelector("div#id-number"); - IdNumber.hidden = false; - } - const showNames = requiredFields.some( - (fieldName) => fieldName.includes("name") - ); - if (showNames) { - const Names = IDInfoForm.querySelector("fieldset#names"); - Names.hidden = false; - } - const showDOB = requiredFields.some( - (fieldName) => fieldName.includes("dob") - ); - if (showDOB) { - const DOB = IDInfoForm.querySelector("fieldset#dob"); - DOB.hidden = false; - } - const showCitizenship = requiredFields.some( - (fieldName) => fieldName.includes("citizenship") - ); - if (showCitizenship) { - const Citizenship = IDInfoForm.querySelector("fieldset#citizenships"); - Citizenship.hidden = false; - } - const showBankCode = requiredFields.some( - (fieldName) => fieldName.includes("bank_code") - ); - if (showBankCode) { - const BankCode = IDInfoForm.querySelector("fieldset#bank-code"); - loadBankCodes(ngBankCodes, BankCode.querySelector("#bank_code")); - BankCode.hidden = false; - } - } - function getPartnerParams() { - function parseJWT(token) { - const base64Url = token.split(".")[1]; - const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); - const jsonPayload = decodeURIComponent( - atob(base64).split("").map(function(c) { - return `%${c.charCodeAt(0).toString(16)}`; - }).join("") - ); - return JSON.parse(jsonPayload); - } - const { partner_params: partnerParams } = parseJWT(config.token); - partner_params = { ...partnerParams, ...config.partner_params || {} }; - } - function setActiveScreen(node) { - activeScreen.hidden = true; - pages.push(activeScreen); - node.hidden = false; - activeScreen = node; - } - function resetForm() { - const invalidElements = IDInfoForm.querySelectorAll("[aria-invalid]"); - invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); - const validationMessages = document.querySelectorAll(".validation-message"); - validationMessages.forEach((el) => el.remove()); - } - function validateInputs(payload) { - const validationConstraints = {}; - const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; - const showIdNumber = requiredFields.some( - (fieldName) => fieldName.includes("id_number") - ); - if (showIdNumber) { - validationConstraints.id_number = { - presence: { - allowEmpty: false, - message: "is required" - }, - format: new RegExp( - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ) - }; - } - const showNames = requiredFields.some( - (fieldName) => fieldName.includes("name") - ); - if (showNames) { - validationConstraints.first_name = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.last_name = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const showDOB = requiredFields.some( - (fieldName) => fieldName.includes("dob") - ); - if (showDOB) { - validationConstraints.day = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.month = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.year = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const showCitizenship = requiredFields.some( - (fieldName) => fieldName.includes("citizenship") - ); - if (showCitizenship) { - validationConstraints.citizenship = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const showBankCode = requiredFields.some( - (fieldName) => fieldName.includes("bank_code") - ); - if (showBankCode) { - validationConstraints.bank_code = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const validation = (0, import_validate2.default)(payload, validationConstraints); - if (validation) { - handleValidationErrors(validation); - const submitButton = IDInfoForm.querySelector('[type="button"]'); - submitButton.removeAttribute("disabled"); - } - return validation; - } - function handleValidationErrors(errors) { - const fields = Object.keys(errors); - fields.forEach((field) => { - const input = IDInfoForm.querySelector(`#${field}`); - input.setAttribute("aria-invalid", "true"); - input.setAttribute("aria-describedby", `${field}-hint`); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("id", `${field}-hint`); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = errors[field][0]; - input.insertAdjacentElement("afterend", errorDiv); - }); - } - async function handleFormSubmit(event) { - event.preventDefault(); - resetForm(); - const form = IDInfoForm.querySelector("form"); - const formData = new FormData(form); - const payload = { ...id_info, ...Object.fromEntries(formData.entries()) }; - const isInvalid = validateInputs(payload); - if (isInvalid) { - return; - } - id_info = { - dob: `${payload.year}-${payload.month}-${payload.day}`, - entered: true, - ...payload, - ...id_info - }; - try { - event.target.disabled = true; - await submitIdInfoForm(); - complete(); - event.target.disabled = false; - } catch (error) { - event.target.disabled = false; - displayErrorMessage("Something went wrong"); - console.error( - `SmileIdentity - ${error.name || error.message}: ${error.cause}` - ); - } - } - function displayErrorMessage(message) { - const p = document.createElement("p"); - p.textContent = message; - p.classList.add("validation-message"); - p.style.fontSize = "1.5rem"; - p.style.textAlign = "center"; - const main = document.querySelector("main"); - main.prepend(p); - } - async function submitIdInfoForm() { - const { year, month, day, ...data } = id_info; - const dob = year && month && day ? `${year}-${month}-${day}` : void 0; - const { - callback_url, - token, - partner_details: { partner_id } - } = config; - const payload = { - ...data, - dob, - partner_id, - partner_params, - callback_url, - token, - source_sdk: config.sdk || "hosted_web", - source_sdk_version: config.sdk_version || version - }; - const URL = `${endpoints[config.environment]}/v2/verify_async`; - const response = await postData2(URL, payload); - const json = await response.json(); - if (json.error) - throw new Error(json.error); - } - function complete() { - const countryName = productConstraints[id_info.country].name; - const idTypeName = productConstraints[id_info.country].id_types[id_info.id_type].label; - const thankYouMessage = CompleteScreen.querySelector("#thank-you-message"); - thankYouMessage.textContent = `We will process your ${countryName} - ${idTypeName} information to verify your identity`; - setActiveScreen(CompleteScreen); - handleSuccess(); - window.setTimeout(closeWindow, 2e3); - } - function closeWindow(userTriggered) { - const message = userTriggered ? "SmileIdentity::Close" : "SmileIdentity::Close::System"; - referenceWindow.postMessage(message, "*"); - } - function handleSuccess() { - referenceWindow.postMessage("SmileIdentity::Success", "*"); - } - })(); -})(); -/*! Bundled license information: - -validate.js/validate.js: - (*! - * validate.js 0.13.1 - * - * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp - * Validate.js may be freely distributed under the MIT license. - * For all details and documentation: - * http://validatejs.org/ - *) -*/ diff --git a/packages/embed/build/js/biometric-kyc.min.js b/packages/embed/build/js/biometric-kyc.min.js deleted file mode 100644 index 90a96008..00000000 --- a/packages/embed/build/js/biometric-kyc.min.js +++ /dev/null @@ -1,7765 +0,0 @@ -(() => { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] - }) : x)(function(x) { - if (typeof require !== "undefined") - return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); - }); - var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod - )); - - // ../../node_modules/jszip/dist/jszip.min.js - var require_jszip_min = __commonJS({ - "../../node_modules/jszip/dist/jszip.min.js"(exports, module) { - !function(e) { - if ("object" == typeof exports && "undefined" != typeof module) - module.exports = e(); - else if ("function" == typeof define && define.amd) - define([], e); - else { - ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e(); - } - }(function() { - return function s(a, o, h) { - function u(r, e2) { - if (!o[r]) { - if (!a[r]) { - var t = "function" == typeof __require && __require; - if (!e2 && t) - return t(r, true); - if (l) - return l(r, true); - var n = new Error("Cannot find module '" + r + "'"); - throw n.code = "MODULE_NOT_FOUND", n; - } - var i = o[r] = { exports: {} }; - a[r][0].call(i.exports, function(e3) { - var t2 = a[r][1][e3]; - return u(t2 || e3); - }, i, i.exports, s, a, o, h); - } - return o[r].exports; - } - for (var l = "function" == typeof __require && __require, e = 0; e < h.length; e++) - u(h[e]); - return u; - }({ 1: [function(e, t, r) { - "use strict"; - var d = e("./utils"), c = e("./support"), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - r.encode = function(e2) { - for (var t2, r2, n, i, s, a, o, h = [], u = 0, l = e2.length, f = l, c2 = "string" !== d.getTypeOf(e2); u < e2.length; ) - f = l - u, n = c2 ? (t2 = e2[u++], r2 = u < l ? e2[u++] : 0, u < l ? e2[u++] : 0) : (t2 = e2.charCodeAt(u++), r2 = u < l ? e2.charCodeAt(u++) : 0, u < l ? e2.charCodeAt(u++) : 0), i = t2 >> 2, s = (3 & t2) << 4 | r2 >> 4, a = 1 < f ? (15 & r2) << 2 | n >> 6 : 64, o = 2 < f ? 63 & n : 64, h.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)); - return h.join(""); - }, r.decode = function(e2) { - var t2, r2, n, i, s, a, o = 0, h = 0, u = "data:"; - if (e2.substr(0, u.length) === u) - throw new Error("Invalid base64 input, it looks like a data url."); - var l, f = 3 * (e2 = e2.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; - if (e2.charAt(e2.length - 1) === p.charAt(64) && f--, e2.charAt(e2.length - 2) === p.charAt(64) && f--, f % 1 != 0) - throw new Error("Invalid base64 input, bad content length."); - for (l = c.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e2.length; ) - t2 = p.indexOf(e2.charAt(o++)) << 2 | (i = p.indexOf(e2.charAt(o++))) >> 4, r2 = (15 & i) << 4 | (s = p.indexOf(e2.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e2.charAt(o++))), l[h++] = t2, 64 !== s && (l[h++] = r2), 64 !== a && (l[h++] = n); - return l; - }; - }, { "./support": 30, "./utils": 32 }], 2: [function(e, t, r) { - "use strict"; - var n = e("./external"), i = e("./stream/DataWorker"), s = e("./stream/Crc32Probe"), a = e("./stream/DataLengthProbe"); - function o(e2, t2, r2, n2, i2) { - this.compressedSize = e2, this.uncompressedSize = t2, this.crc32 = r2, this.compression = n2, this.compressedContent = i2; - } - o.prototype = { getContentWorker: function() { - var e2 = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), t2 = this; - return e2.on("end", function() { - if (this.streamInfo.data_length !== t2.uncompressedSize) - throw new Error("Bug : uncompressed data size mismatch"); - }), e2; - }, getCompressedWorker: function() { - return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); - } }, o.createWorkerFrom = function(e2, t2, r2) { - return e2.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t2.compressWorker(r2)).pipe(new a("compressedSize")).withStreamInfo("compression", t2); - }, t.exports = o; - }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e, t, r) { - "use strict"; - var n = e("./stream/GenericWorker"); - r.STORE = { magic: "\0\0", compressWorker: function() { - return new n("STORE compression"); - }, uncompressWorker: function() { - return new n("STORE decompression"); - } }, r.DEFLATE = e("./flate"); - }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e, t, r) { - "use strict"; - var n = e("./utils"); - var o = function() { - for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { - e2 = r2; - for (var n2 = 0; n2 < 8; n2++) - e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; - t2[r2] = e2; - } - return t2; - }(); - t.exports = function(e2, t2) { - return void 0 !== e2 && e2.length ? "string" !== n.getTypeOf(e2) ? function(e3, t3, r2, n2) { - var i = o, s = n2 + r2; - e3 ^= -1; - for (var a = n2; a < s; a++) - e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3[a])]; - return -1 ^ e3; - }(0 | t2, e2, e2.length, 0) : function(e3, t3, r2, n2) { - var i = o, s = n2 + r2; - e3 ^= -1; - for (var a = n2; a < s; a++) - e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3.charCodeAt(a))]; - return -1 ^ e3; - }(0 | t2, e2, e2.length, 0) : 0; - }; - }, { "./utils": 32 }], 5: [function(e, t, r) { - "use strict"; - r.base64 = false, r.binary = false, r.dir = false, r.createFolders = true, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null; - }, {}], 6: [function(e, t, r) { - "use strict"; - var n = null; - n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n }; - }, { lie: 37 }], 7: [function(e, t, r) { - "use strict"; - var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i = e("pako"), s = e("./utils"), a = e("./stream/GenericWorker"), o = n ? "uint8array" : "array"; - function h(e2, t2) { - a.call(this, "FlateWorker/" + e2), this._pako = null, this._pakoAction = e2, this._pakoOptions = t2, this.meta = {}; - } - r.magic = "\b\0", s.inherits(h, a), h.prototype.processChunk = function(e2) { - this.meta = e2.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e2.data), false); - }, h.prototype.flush = function() { - a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); - }, h.prototype.cleanUp = function() { - a.prototype.cleanUp.call(this), this._pako = null; - }, h.prototype._createPako = function() { - this._pako = new i[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); - var t2 = this; - this._pako.onData = function(e2) { - t2.push({ data: e2, meta: t2.meta }); - }; - }, r.compressWorker = function(e2) { - return new h("Deflate", e2); - }, r.uncompressWorker = function() { - return new h("Inflate", {}); - }; - }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e, t, r) { - "use strict"; - function A(e2, t2) { - var r2, n2 = ""; - for (r2 = 0; r2 < t2; r2++) - n2 += String.fromCharCode(255 & e2), e2 >>>= 8; - return n2; - } - function n(e2, t2, r2, n2, i2, s2) { - var a, o, h = e2.file, u = e2.compression, l = s2 !== O.utf8encode, f = I.transformTo("string", s2(h.name)), c = I.transformTo("string", O.utf8encode(h.name)), d = h.comment, p = I.transformTo("string", s2(d)), m = I.transformTo("string", O.utf8encode(d)), _ = c.length !== h.name.length, g = m.length !== d.length, b = "", v = "", y = "", w = h.dir, k = h.date, x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; - t2 && !r2 || (x.crc32 = e2.crc32, x.compressedSize = e2.compressedSize, x.uncompressedSize = e2.uncompressedSize); - var S = 0; - t2 && (S |= 8), l || !_ && !g || (S |= 2048); - var z = 0, C = 0; - w && (z |= 16), "UNIX" === i2 ? (C = 798, z |= function(e3, t3) { - var r3 = e3; - return e3 || (r3 = t3 ? 16893 : 33204), (65535 & r3) << 16; - }(h.unixPermissions, w)) : (C = 20, z |= function(e3) { - return 63 & (e3 || 0); - }(h.dosPermissions)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v = A(1, 1) + A(B(f), 4) + c, b += "up" + A(v.length, 2) + v), g && (y = A(1, 1) + A(B(p), 4) + m, b += "uc" + A(y.length, 2) + y); - var E = ""; - return E += "\n\0", E += A(S, 2), E += u.magic, E += A(a, 2), E += A(o, 2), E += A(x.crc32, 4), E += A(x.compressedSize, 4), E += A(x.uncompressedSize, 4), E += A(f.length, 2), E += A(b.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + E + f + b, dirRecord: R.CENTRAL_FILE_HEADER + A(C, 2) + E + A(p.length, 2) + "\0\0\0\0" + A(z, 4) + A(n2, 4) + f + b + p }; - } - var I = e("../utils"), i = e("../stream/GenericWorker"), O = e("../utf8"), B = e("../crc32"), R = e("../signature"); - function s(e2, t2, r2, n2) { - i.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t2, this.zipPlatform = r2, this.encodeFileName = n2, this.streamFiles = e2, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; - } - I.inherits(s, i), s.prototype.push = function(e2) { - var t2 = e2.meta.percent || 0, r2 = this.entriesCount, n2 = this._sources.length; - this.accumulate ? this.contentBuffer.push(e2) : (this.bytesWritten += e2.data.length, i.prototype.push.call(this, { data: e2.data, meta: { currentFile: this.currentFile, percent: r2 ? (t2 + 100 * (r2 - n2 - 1)) / r2 : 100 } })); - }, s.prototype.openedSource = function(e2) { - this.currentSourceOffset = this.bytesWritten, this.currentFile = e2.file.name; - var t2 = this.streamFiles && !e2.file.dir; - if (t2) { - var r2 = n(e2, t2, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - this.push({ data: r2.fileRecord, meta: { percent: 0 } }); - } else - this.accumulate = true; - }, s.prototype.closedSource = function(e2) { - this.accumulate = false; - var t2 = this.streamFiles && !e2.file.dir, r2 = n(e2, t2, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - if (this.dirRecords.push(r2.dirRecord), t2) - this.push({ data: function(e3) { - return R.DATA_DESCRIPTOR + A(e3.crc32, 4) + A(e3.compressedSize, 4) + A(e3.uncompressedSize, 4); - }(e2), meta: { percent: 100 } }); - else - for (this.push({ data: r2.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) - this.push(this.contentBuffer.shift()); - this.currentFile = null; - }, s.prototype.flush = function() { - for (var e2 = this.bytesWritten, t2 = 0; t2 < this.dirRecords.length; t2++) - this.push({ data: this.dirRecords[t2], meta: { percent: 100 } }); - var r2 = this.bytesWritten - e2, n2 = function(e3, t3, r3, n3, i2) { - var s2 = I.transformTo("string", i2(n3)); - return R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A(e3, 2) + A(e3, 2) + A(t3, 4) + A(r3, 4) + A(s2.length, 2) + s2; - }(this.dirRecords.length, r2, e2, this.zipComment, this.encodeFileName); - this.push({ data: n2, meta: { percent: 100 } }); - }, s.prototype.prepareNextSource = function() { - this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); - }, s.prototype.registerPrevious = function(e2) { - this._sources.push(e2); - var t2 = this; - return e2.on("data", function(e3) { - t2.processChunk(e3); - }), e2.on("end", function() { - t2.closedSource(t2.previous.streamInfo), t2._sources.length ? t2.prepareNextSource() : t2.end(); - }), e2.on("error", function(e3) { - t2.error(e3); - }), this; - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true)); - }, s.prototype.error = function(e2) { - var t2 = this._sources; - if (!i.prototype.error.call(this, e2)) - return false; - for (var r2 = 0; r2 < t2.length; r2++) - try { - t2[r2].error(e2); - } catch (e3) { - } - return true; - }, s.prototype.lock = function() { - i.prototype.lock.call(this); - for (var e2 = this._sources, t2 = 0; t2 < e2.length; t2++) - e2[t2].lock(); - }, t.exports = s; - }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e, t, r) { - "use strict"; - var u = e("../compressions"), n = e("./ZipFileWorker"); - r.generateWorker = function(e2, a, t2) { - var o = new n(a.streamFiles, t2, a.platform, a.encodeFileName), h = 0; - try { - e2.forEach(function(e3, t3) { - h++; - var r2 = function(e4, t4) { - var r3 = e4 || t4, n3 = u[r3]; - if (!n3) - throw new Error(r3 + " is not a valid compression method !"); - return n3; - }(t3.options.compression, a.compression), n2 = t3.options.compressionOptions || a.compressionOptions || {}, i = t3.dir, s = t3.date; - t3._compressWorker(r2, n2).withStreamInfo("file", { name: e3, dir: i, date: s, comment: t3.comment || "", unixPermissions: t3.unixPermissions, dosPermissions: t3.dosPermissions }).pipe(o); - }), o.entriesCount = h; - } catch (e3) { - o.error(e3); - } - return o; - }; - }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e, t, r) { - "use strict"; - function n() { - if (!(this instanceof n)) - return new n(); - if (arguments.length) - throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); - this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { - var e2 = new n(); - for (var t2 in this) - "function" != typeof this[t2] && (e2[t2] = this[t2]); - return e2; - }; - } - (n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.10.1", n.loadAsync = function(e2, t2) { - return new n().loadAsync(e2, t2); - }, n.external = e("./external"), t.exports = n; - }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e, t, r) { - "use strict"; - var u = e("./utils"), i = e("./external"), n = e("./utf8"), s = e("./zipEntries"), a = e("./stream/Crc32Probe"), l = e("./nodejsUtils"); - function f(n2) { - return new i.Promise(function(e2, t2) { - var r2 = n2.decompressed.getContentWorker().pipe(new a()); - r2.on("error", function(e3) { - t2(e3); - }).on("end", function() { - r2.streamInfo.crc32 !== n2.decompressed.crc32 ? t2(new Error("Corrupted zip : CRC32 mismatch")) : e2(); - }).resume(); - }); - } - t.exports = function(e2, o) { - var h = this; - return o = u.extend(o || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n.utf8decode }), l.isNode && l.isStream(e2) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u.prepareContent("the loaded zip file", e2, true, o.optimizedBinaryString, o.base64).then(function(e3) { - var t2 = new s(o); - return t2.load(e3), t2; - }).then(function(e3) { - var t2 = [i.Promise.resolve(e3)], r2 = e3.files; - if (o.checkCRC32) - for (var n2 = 0; n2 < r2.length; n2++) - t2.push(f(r2[n2])); - return i.Promise.all(t2); - }).then(function(e3) { - for (var t2 = e3.shift(), r2 = t2.files, n2 = 0; n2 < r2.length; n2++) { - var i2 = r2[n2], s2 = i2.fileNameStr, a2 = u.resolve(i2.fileNameStr); - h.file(a2, i2.decompressed, { binary: true, optimizedBinaryString: true, date: i2.date, dir: i2.dir, comment: i2.fileCommentStr.length ? i2.fileCommentStr : null, unixPermissions: i2.unixPermissions, dosPermissions: i2.dosPermissions, createFolders: o.createFolders }), i2.dir || (h.file(a2).unsafeOriginalName = s2); - } - return t2.zipComment.length && (h.comment = t2.zipComment), h; - }); - }; - }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("../stream/GenericWorker"); - function s(e2, t2) { - i.call(this, "Nodejs stream input adapter for " + e2), this._upstreamEnded = false, this._bindStream(t2); - } - n.inherits(s, i), s.prototype._bindStream = function(e2) { - var t2 = this; - (this._stream = e2).pause(), e2.on("data", function(e3) { - t2.push({ data: e3, meta: { percent: 0 } }); - }).on("error", function(e3) { - t2.isPaused ? this.generatedError = e3 : t2.error(e3); - }).on("end", function() { - t2.isPaused ? t2._upstreamEnded = true : t2.end(); - }); - }, s.prototype.pause = function() { - return !!i.prototype.pause.call(this) && (this._stream.pause(), true); - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); - }, t.exports = s; - }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e, t, r) { - "use strict"; - var i = e("readable-stream").Readable; - function n(e2, t2, r2) { - i.call(this, t2), this._helper = e2; - var n2 = this; - e2.on("data", function(e3, t3) { - n2.push(e3) || n2._helper.pause(), r2 && r2(t3); - }).on("error", function(e3) { - n2.emit("error", e3); - }).on("end", function() { - n2.push(null); - }); - } - e("../utils").inherits(n, i), n.prototype._read = function() { - this._helper.resume(); - }, t.exports = n; - }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e, t, r) { - "use strict"; - t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e2, t2) { - if (Buffer.from && Buffer.from !== Uint8Array.from) - return Buffer.from(e2, t2); - if ("number" == typeof e2) - throw new Error('The "data" argument must not be a number'); - return new Buffer(e2, t2); - }, allocBuffer: function(e2) { - if (Buffer.alloc) - return Buffer.alloc(e2); - var t2 = new Buffer(e2); - return t2.fill(0), t2; - }, isBuffer: function(e2) { - return Buffer.isBuffer(e2); - }, isStream: function(e2) { - return e2 && "function" == typeof e2.on && "function" == typeof e2.pause && "function" == typeof e2.resume; - } }; - }, {}], 15: [function(e, t, r) { - "use strict"; - function s(e2, t2, r2) { - var n2, i2 = u.getTypeOf(t2), s2 = u.extend(r2 || {}, f); - s2.date = s2.date || /* @__PURE__ */ new Date(), null !== s2.compression && (s2.compression = s2.compression.toUpperCase()), "string" == typeof s2.unixPermissions && (s2.unixPermissions = parseInt(s2.unixPermissions, 8)), s2.unixPermissions && 16384 & s2.unixPermissions && (s2.dir = true), s2.dosPermissions && 16 & s2.dosPermissions && (s2.dir = true), s2.dir && (e2 = g(e2)), s2.createFolders && (n2 = _(e2)) && b.call(this, n2, true); - var a2 = "string" === i2 && false === s2.binary && false === s2.base64; - r2 && void 0 !== r2.binary || (s2.binary = !a2), (t2 instanceof c && 0 === t2.uncompressedSize || s2.dir || !t2 || 0 === t2.length) && (s2.base64 = false, s2.binary = true, t2 = "", s2.compression = "STORE", i2 = "string"); - var o2 = null; - o2 = t2 instanceof c || t2 instanceof l ? t2 : p.isNode && p.isStream(t2) ? new m(e2, t2) : u.prepareContent(e2, t2, s2.binary, s2.optimizedBinaryString, s2.base64); - var h2 = new d(e2, o2, s2); - this.files[e2] = h2; - } - var i = e("./utf8"), u = e("./utils"), l = e("./stream/GenericWorker"), a = e("./stream/StreamHelper"), f = e("./defaults"), c = e("./compressedObject"), d = e("./zipObject"), o = e("./generate"), p = e("./nodejsUtils"), m = e("./nodejs/NodejsStreamInputAdapter"), _ = function(e2) { - "/" === e2.slice(-1) && (e2 = e2.substring(0, e2.length - 1)); - var t2 = e2.lastIndexOf("/"); - return 0 < t2 ? e2.substring(0, t2) : ""; - }, g = function(e2) { - return "/" !== e2.slice(-1) && (e2 += "/"), e2; - }, b = function(e2, t2) { - return t2 = void 0 !== t2 ? t2 : f.createFolders, e2 = g(e2), this.files[e2] || s.call(this, e2, null, { dir: true, createFolders: t2 }), this.files[e2]; - }; - function h(e2) { - return "[object RegExp]" === Object.prototype.toString.call(e2); - } - var n = { load: function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, forEach: function(e2) { - var t2, r2, n2; - for (t2 in this.files) - n2 = this.files[t2], (r2 = t2.slice(this.root.length, t2.length)) && t2.slice(0, this.root.length) === this.root && e2(r2, n2); - }, filter: function(r2) { - var n2 = []; - return this.forEach(function(e2, t2) { - r2(e2, t2) && n2.push(t2); - }), n2; - }, file: function(e2, t2, r2) { - if (1 !== arguments.length) - return e2 = this.root + e2, s.call(this, e2, t2, r2), this; - if (h(e2)) { - var n2 = e2; - return this.filter(function(e3, t3) { - return !t3.dir && n2.test(e3); - }); - } - var i2 = this.files[this.root + e2]; - return i2 && !i2.dir ? i2 : null; - }, folder: function(r2) { - if (!r2) - return this; - if (h(r2)) - return this.filter(function(e3, t3) { - return t3.dir && r2.test(e3); - }); - var e2 = this.root + r2, t2 = b.call(this, e2), n2 = this.clone(); - return n2.root = t2.name, n2; - }, remove: function(r2) { - r2 = this.root + r2; - var e2 = this.files[r2]; - if (e2 || ("/" !== r2.slice(-1) && (r2 += "/"), e2 = this.files[r2]), e2 && !e2.dir) - delete this.files[r2]; - else - for (var t2 = this.filter(function(e3, t3) { - return t3.name.slice(0, r2.length) === r2; - }), n2 = 0; n2 < t2.length; n2++) - delete this.files[t2[n2].name]; - return this; - }, generate: function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, generateInternalStream: function(e2) { - var t2, r2 = {}; - try { - if ((r2 = u.extend(e2 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r2.type.toLowerCase(), r2.compression = r2.compression.toUpperCase(), "binarystring" === r2.type && (r2.type = "string"), !r2.type) - throw new Error("No output type specified."); - u.checkSupport(r2.type), "darwin" !== r2.platform && "freebsd" !== r2.platform && "linux" !== r2.platform && "sunos" !== r2.platform || (r2.platform = "UNIX"), "win32" === r2.platform && (r2.platform = "DOS"); - var n2 = r2.comment || this.comment || ""; - t2 = o.generateWorker(this, r2, n2); - } catch (e3) { - (t2 = new l("error")).error(e3); - } - return new a(t2, r2.type || "string", r2.mimeType); - }, generateAsync: function(e2, t2) { - return this.generateInternalStream(e2).accumulate(t2); - }, generateNodeStream: function(e2, t2) { - return (e2 = e2 || {}).type || (e2.type = "nodebuffer"), this.generateInternalStream(e2).toNodejsStream(t2); - } }; - t.exports = n; - }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e, t, r) { - "use strict"; - t.exports = e("stream"); - }, { stream: void 0 }], 17: [function(e, t, r) { - "use strict"; - var n = e("./DataReader"); - function i(e2) { - n.call(this, e2); - for (var t2 = 0; t2 < this.data.length; t2++) - e2[t2] = 255 & e2[t2]; - } - e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { - return this.data[this.zero + e2]; - }, i.prototype.lastIndexOfSignature = function(e2) { - for (var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.length - 4; 0 <= s; --s) - if (this.data[s] === t2 && this.data[s + 1] === r2 && this.data[s + 2] === n2 && this.data[s + 3] === i2) - return s - this.zero; - return -1; - }, i.prototype.readAndCheckSignature = function(e2) { - var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.readData(4); - return t2 === s[0] && r2 === s[1] && n2 === s[2] && i2 === s[3]; - }, i.prototype.readData = function(e2) { - if (this.checkOffset(e2), 0 === e2) - return []; - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e, t, r) { - "use strict"; - var n = e("../utils"); - function i(e2) { - this.data = e2, this.length = e2.length, this.index = 0, this.zero = 0; - } - i.prototype = { checkOffset: function(e2) { - this.checkIndex(this.index + e2); - }, checkIndex: function(e2) { - if (this.length < this.zero + e2 || e2 < 0) - throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e2 + "). Corrupted zip ?"); - }, setIndex: function(e2) { - this.checkIndex(e2), this.index = e2; - }, skip: function(e2) { - this.setIndex(this.index + e2); - }, byteAt: function() { - }, readInt: function(e2) { - var t2, r2 = 0; - for (this.checkOffset(e2), t2 = this.index + e2 - 1; t2 >= this.index; t2--) - r2 = (r2 << 8) + this.byteAt(t2); - return this.index += e2, r2; - }, readString: function(e2) { - return n.transformTo("string", this.readData(e2)); - }, readData: function() { - }, lastIndexOfSignature: function() { - }, readAndCheckSignature: function() { - }, readDate: function() { - var e2 = this.readInt(4); - return new Date(Date.UTC(1980 + (e2 >> 25 & 127), (e2 >> 21 & 15) - 1, e2 >> 16 & 31, e2 >> 11 & 31, e2 >> 5 & 63, (31 & e2) << 1)); - } }, t.exports = i; - }, { "../utils": 32 }], 19: [function(e, t, r) { - "use strict"; - var n = e("./Uint8ArrayReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.readData = function(e2) { - this.checkOffset(e2); - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e, t, r) { - "use strict"; - var n = e("./DataReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { - return this.data.charCodeAt(this.zero + e2); - }, i.prototype.lastIndexOfSignature = function(e2) { - return this.data.lastIndexOf(e2) - this.zero; - }, i.prototype.readAndCheckSignature = function(e2) { - return e2 === this.readData(4); - }, i.prototype.readData = function(e2) { - this.checkOffset(e2); - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e, t, r) { - "use strict"; - var n = e("./ArrayReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.readData = function(e2) { - if (this.checkOffset(e2), 0 === e2) - return new Uint8Array(0); - var t2 = this.data.subarray(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("../support"), s = e("./ArrayReader"), a = e("./StringReader"), o = e("./NodeBufferReader"), h = e("./Uint8ArrayReader"); - t.exports = function(e2) { - var t2 = n.getTypeOf(e2); - return n.checkSupport(t2), "string" !== t2 || i.uint8array ? "nodebuffer" === t2 ? new o(e2) : i.uint8array ? new h(n.transformTo("uint8array", e2)) : new s(n.transformTo("array", e2)) : new a(e2); - }; - }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e, t, r) { - "use strict"; - r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\x07\b"; - }, {}], 24: [function(e, t, r) { - "use strict"; - var n = e("./GenericWorker"), i = e("../utils"); - function s(e2) { - n.call(this, "ConvertWorker to " + e2), this.destType = e2; - } - i.inherits(s, n), s.prototype.processChunk = function(e2) { - this.push({ data: i.transformTo(this.destType, e2.data), meta: e2.meta }); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e, t, r) { - "use strict"; - var n = e("./GenericWorker"), i = e("../crc32"); - function s() { - n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); - } - e("../utils").inherits(s, n), s.prototype.processChunk = function(e2) { - this.streamInfo.crc32 = i(e2.data, this.streamInfo.crc32 || 0), this.push(e2); - }, t.exports = s; - }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("./GenericWorker"); - function s(e2) { - i.call(this, "DataLengthProbe for " + e2), this.propName = e2, this.withStreamInfo(e2, 0); - } - n.inherits(s, i), s.prototype.processChunk = function(e2) { - if (e2) { - var t2 = this.streamInfo[this.propName] || 0; - this.streamInfo[this.propName] = t2 + e2.data.length; - } - i.prototype.processChunk.call(this, e2); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("./GenericWorker"); - function s(e2) { - i.call(this, "DataWorker"); - var t2 = this; - this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e2.then(function(e3) { - t2.dataIsReady = true, t2.data = e3, t2.max = e3 && e3.length || 0, t2.type = n.getTypeOf(e3), t2.isPaused || t2._tickAndRepeat(); - }, function(e3) { - t2.error(e3); - }); - } - n.inherits(s, i), s.prototype.cleanUp = function() { - i.prototype.cleanUp.call(this), this.data = null; - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n.delay(this._tickAndRepeat, [], this)), true); - }, s.prototype._tickAndRepeat = function() { - this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); - }, s.prototype._tick = function() { - if (this.isPaused || this.isFinished) - return false; - var e2 = null, t2 = Math.min(this.max, this.index + 16384); - if (this.index >= this.max) - return this.end(); - switch (this.type) { - case "string": - e2 = this.data.substring(this.index, t2); - break; - case "uint8array": - e2 = this.data.subarray(this.index, t2); - break; - case "array": - case "nodebuffer": - e2 = this.data.slice(this.index, t2); - } - return this.index = t2, this.push({ data: e2, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e, t, r) { - "use strict"; - function n(e2) { - this.name = e2 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; - } - n.prototype = { push: function(e2) { - this.emit("data", e2); - }, end: function() { - if (this.isFinished) - return false; - this.flush(); - try { - this.emit("end"), this.cleanUp(), this.isFinished = true; - } catch (e2) { - this.emit("error", e2); - } - return true; - }, error: function(e2) { - return !this.isFinished && (this.isPaused ? this.generatedError = e2 : (this.isFinished = true, this.emit("error", e2), this.previous && this.previous.error(e2), this.cleanUp()), true); - }, on: function(e2, t2) { - return this._listeners[e2].push(t2), this; - }, cleanUp: function() { - this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; - }, emit: function(e2, t2) { - if (this._listeners[e2]) - for (var r2 = 0; r2 < this._listeners[e2].length; r2++) - this._listeners[e2][r2].call(this, t2); - }, pipe: function(e2) { - return e2.registerPrevious(this); - }, registerPrevious: function(e2) { - if (this.isLocked) - throw new Error("The stream '" + this + "' has already been used."); - this.streamInfo = e2.streamInfo, this.mergeStreamInfo(), this.previous = e2; - var t2 = this; - return e2.on("data", function(e3) { - t2.processChunk(e3); - }), e2.on("end", function() { - t2.end(); - }), e2.on("error", function(e3) { - t2.error(e3); - }), this; - }, pause: function() { - return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); - }, resume: function() { - if (!this.isPaused || this.isFinished) - return false; - var e2 = this.isPaused = false; - return this.generatedError && (this.error(this.generatedError), e2 = true), this.previous && this.previous.resume(), !e2; - }, flush: function() { - }, processChunk: function(e2) { - this.push(e2); - }, withStreamInfo: function(e2, t2) { - return this.extraStreamInfo[e2] = t2, this.mergeStreamInfo(), this; - }, mergeStreamInfo: function() { - for (var e2 in this.extraStreamInfo) - Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e2) && (this.streamInfo[e2] = this.extraStreamInfo[e2]); - }, lock: function() { - if (this.isLocked) - throw new Error("The stream '" + this + "' has already been used."); - this.isLocked = true, this.previous && this.previous.lock(); - }, toString: function() { - var e2 = "Worker " + this.name; - return this.previous ? this.previous + " -> " + e2 : e2; - } }, t.exports = n; - }, {}], 29: [function(e, t, r) { - "use strict"; - var h = e("../utils"), i = e("./ConvertWorker"), s = e("./GenericWorker"), u = e("../base64"), n = e("../support"), a = e("../external"), o = null; - if (n.nodestream) - try { - o = e("../nodejs/NodejsStreamOutputAdapter"); - } catch (e2) { - } - function l(e2, o2) { - return new a.Promise(function(t2, r2) { - var n2 = [], i2 = e2._internalType, s2 = e2._outputType, a2 = e2._mimeType; - e2.on("data", function(e3, t3) { - n2.push(e3), o2 && o2(t3); - }).on("error", function(e3) { - n2 = [], r2(e3); - }).on("end", function() { - try { - var e3 = function(e4, t3, r3) { - switch (e4) { - case "blob": - return h.newBlob(h.transformTo("arraybuffer", t3), r3); - case "base64": - return u.encode(t3); - default: - return h.transformTo(e4, t3); - } - }(s2, function(e4, t3) { - var r3, n3 = 0, i3 = null, s3 = 0; - for (r3 = 0; r3 < t3.length; r3++) - s3 += t3[r3].length; - switch (e4) { - case "string": - return t3.join(""); - case "array": - return Array.prototype.concat.apply([], t3); - case "uint8array": - for (i3 = new Uint8Array(s3), r3 = 0; r3 < t3.length; r3++) - i3.set(t3[r3], n3), n3 += t3[r3].length; - return i3; - case "nodebuffer": - return Buffer.concat(t3); - default: - throw new Error("concat : unsupported type '" + e4 + "'"); - } - }(i2, n2), a2); - t2(e3); - } catch (e4) { - r2(e4); - } - n2 = []; - }).resume(); - }); - } - function f(e2, t2, r2) { - var n2 = t2; - switch (t2) { - case "blob": - case "arraybuffer": - n2 = "uint8array"; - break; - case "base64": - n2 = "string"; - } - try { - this._internalType = n2, this._outputType = t2, this._mimeType = r2, h.checkSupport(n2), this._worker = e2.pipe(new i(n2)), e2.lock(); - } catch (e3) { - this._worker = new s("error"), this._worker.error(e3); - } - } - f.prototype = { accumulate: function(e2) { - return l(this, e2); - }, on: function(e2, t2) { - var r2 = this; - return "data" === e2 ? this._worker.on(e2, function(e3) { - t2.call(r2, e3.data, e3.meta); - }) : this._worker.on(e2, function() { - h.delay(t2, arguments, r2); - }), this; - }, resume: function() { - return h.delay(this._worker.resume, [], this._worker), this; - }, pause: function() { - return this._worker.pause(), this; - }, toNodejsStream: function(e2) { - if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) - throw new Error(this._outputType + " is not supported by this method"); - return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e2); - } }, t.exports = f; - }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e, t, r) { - "use strict"; - if (r.base64 = true, r.array = true, r.string = true, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) - r.blob = false; - else { - var n = new ArrayBuffer(0); - try { - r.blob = 0 === new Blob([n], { type: "application/zip" }).size; - } catch (e2) { - try { - var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); - i.append(n), r.blob = 0 === i.getBlob("application/zip").size; - } catch (e3) { - r.blob = false; - } - } - } - try { - r.nodestream = !!e("readable-stream").Readable; - } catch (e2) { - r.nodestream = false; - } - }, { "readable-stream": 16 }], 31: [function(e, t, s) { - "use strict"; - for (var o = e("./utils"), h = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), u = new Array(256), i = 0; i < 256; i++) - u[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1; - u[254] = u[254] = 1; - function a() { - n.call(this, "utf-8 decode"), this.leftOver = null; - } - function l() { - n.call(this, "utf-8 encode"); - } - s.utf8encode = function(e2) { - return h.nodebuffer ? r.newBufferFrom(e2, "utf-8") : function(e3) { - var t2, r2, n2, i2, s2, a2 = e3.length, o2 = 0; - for (i2 = 0; i2 < a2; i2++) - 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o2 += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; - for (t2 = h.uint8array ? new Uint8Array(o2) : new Array(o2), i2 = s2 = 0; s2 < o2; i2++) - 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); - return t2; - }(e2); - }, s.utf8decode = function(e2) { - return h.nodebuffer ? o.transformTo("nodebuffer", e2).toString("utf-8") : function(e3) { - var t2, r2, n2, i2, s2 = e3.length, a2 = new Array(2 * s2); - for (t2 = r2 = 0; t2 < s2; ) - if ((n2 = e3[t2++]) < 128) - a2[r2++] = n2; - else if (4 < (i2 = u[n2])) - a2[r2++] = 65533, t2 += i2 - 1; - else { - for (n2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && t2 < s2; ) - n2 = n2 << 6 | 63 & e3[t2++], i2--; - 1 < i2 ? a2[r2++] = 65533 : n2 < 65536 ? a2[r2++] = n2 : (n2 -= 65536, a2[r2++] = 55296 | n2 >> 10 & 1023, a2[r2++] = 56320 | 1023 & n2); - } - return a2.length !== r2 && (a2.subarray ? a2 = a2.subarray(0, r2) : a2.length = r2), o.applyFromCharCode(a2); - }(e2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2)); - }, o.inherits(a, n), a.prototype.processChunk = function(e2) { - var t2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2.data); - if (this.leftOver && this.leftOver.length) { - if (h.uint8array) { - var r2 = t2; - (t2 = new Uint8Array(r2.length + this.leftOver.length)).set(this.leftOver, 0), t2.set(r2, this.leftOver.length); - } else - t2 = this.leftOver.concat(t2); - this.leftOver = null; - } - var n2 = function(e3, t3) { - var r3; - for ((t3 = t3 || e3.length) > e3.length && (t3 = e3.length), r3 = t3 - 1; 0 <= r3 && 128 == (192 & e3[r3]); ) - r3--; - return r3 < 0 ? t3 : 0 === r3 ? t3 : r3 + u[e3[r3]] > t3 ? r3 : t3; - }(t2), i2 = t2; - n2 !== t2.length && (h.uint8array ? (i2 = t2.subarray(0, n2), this.leftOver = t2.subarray(n2, t2.length)) : (i2 = t2.slice(0, n2), this.leftOver = t2.slice(n2, t2.length))), this.push({ data: s.utf8decode(i2), meta: e2.meta }); - }, a.prototype.flush = function() { - this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); - }, s.Utf8DecodeWorker = a, o.inherits(l, n), l.prototype.processChunk = function(e2) { - this.push({ data: s.utf8encode(e2.data), meta: e2.meta }); - }, s.Utf8EncodeWorker = l; - }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e, t, a) { - "use strict"; - var o = e("./support"), h = e("./base64"), r = e("./nodejsUtils"), u = e("./external"); - function n(e2) { - return e2; - } - function l(e2, t2) { - for (var r2 = 0; r2 < e2.length; ++r2) - t2[r2] = 255 & e2.charCodeAt(r2); - return t2; - } - e("setimmediate"), a.newBlob = function(t2, r2) { - a.checkSupport("blob"); - try { - return new Blob([t2], { type: r2 }); - } catch (e2) { - try { - var n2 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); - return n2.append(t2), n2.getBlob(r2); - } catch (e3) { - throw new Error("Bug : can't construct the Blob."); - } - } - }; - var i = { stringifyByChunk: function(e2, t2, r2) { - var n2 = [], i2 = 0, s2 = e2.length; - if (s2 <= r2) - return String.fromCharCode.apply(null, e2); - for (; i2 < s2; ) - "array" === t2 || "nodebuffer" === t2 ? n2.push(String.fromCharCode.apply(null, e2.slice(i2, Math.min(i2 + r2, s2)))) : n2.push(String.fromCharCode.apply(null, e2.subarray(i2, Math.min(i2 + r2, s2)))), i2 += r2; - return n2.join(""); - }, stringifyByChar: function(e2) { - for (var t2 = "", r2 = 0; r2 < e2.length; r2++) - t2 += String.fromCharCode(e2[r2]); - return t2; - }, applyCanBeUsed: { uint8array: function() { - try { - return o.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; - } catch (e2) { - return false; - } - }(), nodebuffer: function() { - try { - return o.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length; - } catch (e2) { - return false; - } - }() } }; - function s(e2) { - var t2 = 65536, r2 = a.getTypeOf(e2), n2 = true; - if ("uint8array" === r2 ? n2 = i.applyCanBeUsed.uint8array : "nodebuffer" === r2 && (n2 = i.applyCanBeUsed.nodebuffer), n2) - for (; 1 < t2; ) - try { - return i.stringifyByChunk(e2, r2, t2); - } catch (e3) { - t2 = Math.floor(t2 / 2); - } - return i.stringifyByChar(e2); - } - function f(e2, t2) { - for (var r2 = 0; r2 < e2.length; r2++) - t2[r2] = e2[r2]; - return t2; - } - a.applyFromCharCode = s; - var c = {}; - c.string = { string: n, array: function(e2) { - return l(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return c.string.uint8array(e2).buffer; - }, uint8array: function(e2) { - return l(e2, new Uint8Array(e2.length)); - }, nodebuffer: function(e2) { - return l(e2, r.allocBuffer(e2.length)); - } }, c.array = { string: s, array: n, arraybuffer: function(e2) { - return new Uint8Array(e2).buffer; - }, uint8array: function(e2) { - return new Uint8Array(e2); - }, nodebuffer: function(e2) { - return r.newBufferFrom(e2); - } }, c.arraybuffer = { string: function(e2) { - return s(new Uint8Array(e2)); - }, array: function(e2) { - return f(new Uint8Array(e2), new Array(e2.byteLength)); - }, arraybuffer: n, uint8array: function(e2) { - return new Uint8Array(e2); - }, nodebuffer: function(e2) { - return r.newBufferFrom(new Uint8Array(e2)); - } }, c.uint8array = { string: s, array: function(e2) { - return f(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return e2.buffer; - }, uint8array: n, nodebuffer: function(e2) { - return r.newBufferFrom(e2); - } }, c.nodebuffer = { string: s, array: function(e2) { - return f(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return c.nodebuffer.uint8array(e2).buffer; - }, uint8array: function(e2) { - return f(e2, new Uint8Array(e2.length)); - }, nodebuffer: n }, a.transformTo = function(e2, t2) { - if (t2 = t2 || "", !e2) - return t2; - a.checkSupport(e2); - var r2 = a.getTypeOf(t2); - return c[r2][e2](t2); - }, a.resolve = function(e2) { - for (var t2 = e2.split("/"), r2 = [], n2 = 0; n2 < t2.length; n2++) { - var i2 = t2[n2]; - "." === i2 || "" === i2 && 0 !== n2 && n2 !== t2.length - 1 || (".." === i2 ? r2.pop() : r2.push(i2)); - } - return r2.join("/"); - }, a.getTypeOf = function(e2) { - return "string" == typeof e2 ? "string" : "[object Array]" === Object.prototype.toString.call(e2) ? "array" : o.nodebuffer && r.isBuffer(e2) ? "nodebuffer" : o.uint8array && e2 instanceof Uint8Array ? "uint8array" : o.arraybuffer && e2 instanceof ArrayBuffer ? "arraybuffer" : void 0; - }, a.checkSupport = function(e2) { - if (!o[e2.toLowerCase()]) - throw new Error(e2 + " is not supported by this platform"); - }, a.MAX_VALUE_16BITS = 65535, a.MAX_VALUE_32BITS = -1, a.pretty = function(e2) { - var t2, r2, n2 = ""; - for (r2 = 0; r2 < (e2 || "").length; r2++) - n2 += "\\x" + ((t2 = e2.charCodeAt(r2)) < 16 ? "0" : "") + t2.toString(16).toUpperCase(); - return n2; - }, a.delay = function(e2, t2, r2) { - setImmediate(function() { - e2.apply(r2 || null, t2 || []); - }); - }, a.inherits = function(e2, t2) { - function r2() { - } - r2.prototype = t2.prototype, e2.prototype = new r2(); - }, a.extend = function() { - var e2, t2, r2 = {}; - for (e2 = 0; e2 < arguments.length; e2++) - for (t2 in arguments[e2]) - Object.prototype.hasOwnProperty.call(arguments[e2], t2) && void 0 === r2[t2] && (r2[t2] = arguments[e2][t2]); - return r2; - }, a.prepareContent = function(r2, e2, n2, i2, s2) { - return u.Promise.resolve(e2).then(function(n3) { - return o.blob && (n3 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n3))) && "undefined" != typeof FileReader ? new u.Promise(function(t2, r3) { - var e3 = new FileReader(); - e3.onload = function(e4) { - t2(e4.target.result); - }, e3.onerror = function(e4) { - r3(e4.target.error); - }, e3.readAsArrayBuffer(n3); - }) : n3; - }).then(function(e3) { - var t2 = a.getTypeOf(e3); - return t2 ? ("arraybuffer" === t2 ? e3 = a.transformTo("uint8array", e3) : "string" === t2 && (s2 ? e3 = h.decode(e3) : n2 && true !== i2 && (e3 = function(e4) { - return l(e4, o.uint8array ? new Uint8Array(e4.length) : new Array(e4.length)); - }(e3))), e3) : u.Promise.reject(new Error("Can't read the data of '" + r2 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); - }); - }; - }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e, t, r) { - "use strict"; - var n = e("./reader/readerFor"), i = e("./utils"), s = e("./signature"), a = e("./zipEntry"), o = e("./support"); - function h(e2) { - this.files = [], this.loadOptions = e2; - } - h.prototype = { checkSignature: function(e2) { - if (!this.reader.readAndCheckSignature(e2)) { - this.reader.index -= 4; - var t2 = this.reader.readString(4); - throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t2) + ", expected " + i.pretty(e2) + ")"); - } - }, isSignature: function(e2, t2) { - var r2 = this.reader.index; - this.reader.setIndex(e2); - var n2 = this.reader.readString(4) === t2; - return this.reader.setIndex(r2), n2; - }, readBlockEndOfCentral: function() { - this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); - var e2 = this.reader.readData(this.zipCommentLength), t2 = o.uint8array ? "uint8array" : "array", r2 = i.transformTo(t2, e2); - this.zipComment = this.loadOptions.decodeFileName(r2); - }, readBlockZip64EndOfCentral: function() { - this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; - for (var e2, t2, r2, n2 = this.zip64EndOfCentralSize - 44; 0 < n2; ) - e2 = this.reader.readInt(2), t2 = this.reader.readInt(4), r2 = this.reader.readData(t2), this.zip64ExtensibleData[e2] = { id: e2, length: t2, value: r2 }; - }, readBlockZip64EndOfCentralLocator: function() { - if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) - throw new Error("Multi-volumes zip are not supported"); - }, readLocalFiles: function() { - var e2, t2; - for (e2 = 0; e2 < this.files.length; e2++) - t2 = this.files[e2], this.reader.setIndex(t2.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t2.readLocalPart(this.reader), t2.handleUTF8(), t2.processAttributes(); - }, readCentralDir: function() { - var e2; - for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER); ) - (e2 = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e2); - if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) - throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); - }, readEndOfCentral: function() { - var e2 = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END); - if (e2 < 0) - throw !this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); - this.reader.setIndex(e2); - var t2 = e2; - if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) { - if (this.zip64 = true, (e2 = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) - throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); - if (this.reader.setIndex(e2), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) - throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); - this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); - } - var r2 = this.centralDirOffset + this.centralDirSize; - this.zip64 && (r2 += 20, r2 += 12 + this.zip64EndOfCentralSize); - var n2 = t2 - r2; - if (0 < n2) - this.isSignature(t2, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n2); - else if (n2 < 0) - throw new Error("Corrupted zip: missing " + Math.abs(n2) + " bytes."); - }, prepareReader: function(e2) { - this.reader = n(e2); - }, load: function(e2) { - this.prepareReader(e2), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); - } }, t.exports = h; - }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e, t, r) { - "use strict"; - var n = e("./reader/readerFor"), s = e("./utils"), i = e("./compressedObject"), a = e("./crc32"), o = e("./utf8"), h = e("./compressions"), u = e("./support"); - function l(e2, t2) { - this.options = e2, this.loadOptions = t2; - } - l.prototype = { isEncrypted: function() { - return 1 == (1 & this.bitFlag); - }, useUTF8: function() { - return 2048 == (2048 & this.bitFlag); - }, readLocalPart: function(e2) { - var t2, r2; - if (e2.skip(22), this.fileNameLength = e2.readInt(2), r2 = e2.readInt(2), this.fileName = e2.readData(this.fileNameLength), e2.skip(r2), -1 === this.compressedSize || -1 === this.uncompressedSize) - throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); - if (null === (t2 = function(e3) { - for (var t3 in h) - if (Object.prototype.hasOwnProperty.call(h, t3) && h[t3].magic === e3) - return h[t3]; - return null; - }(this.compressionMethod))) - throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")"); - this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t2, e2.readData(this.compressedSize)); - }, readCentralPart: function(e2) { - this.versionMadeBy = e2.readInt(2), e2.skip(2), this.bitFlag = e2.readInt(2), this.compressionMethod = e2.readString(2), this.date = e2.readDate(), this.crc32 = e2.readInt(4), this.compressedSize = e2.readInt(4), this.uncompressedSize = e2.readInt(4); - var t2 = e2.readInt(2); - if (this.extraFieldsLength = e2.readInt(2), this.fileCommentLength = e2.readInt(2), this.diskNumberStart = e2.readInt(2), this.internalFileAttributes = e2.readInt(2), this.externalFileAttributes = e2.readInt(4), this.localHeaderOffset = e2.readInt(4), this.isEncrypted()) - throw new Error("Encrypted zip are not supported"); - e2.skip(t2), this.readExtraFields(e2), this.parseZIP64ExtraField(e2), this.fileComment = e2.readData(this.fileCommentLength); - }, processAttributes: function() { - this.unixPermissions = null, this.dosPermissions = null; - var e2 = this.versionMadeBy >> 8; - this.dir = !!(16 & this.externalFileAttributes), 0 == e2 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e2 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); - }, parseZIP64ExtraField: function() { - if (this.extraFields[1]) { - var e2 = n(this.extraFields[1].value); - this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = e2.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = e2.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = e2.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = e2.readInt(4)); - } - }, readExtraFields: function(e2) { - var t2, r2, n2, i2 = e2.index + this.extraFieldsLength; - for (this.extraFields || (this.extraFields = {}); e2.index + 4 < i2; ) - t2 = e2.readInt(2), r2 = e2.readInt(2), n2 = e2.readData(r2), this.extraFields[t2] = { id: t2, length: r2, value: n2 }; - e2.setIndex(i2); - }, handleUTF8: function() { - var e2 = u.uint8array ? "uint8array" : "array"; - if (this.useUTF8()) - this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment); - else { - var t2 = this.findExtraFieldUnicodePath(); - if (null !== t2) - this.fileNameStr = t2; - else { - var r2 = s.transformTo(e2, this.fileName); - this.fileNameStr = this.loadOptions.decodeFileName(r2); - } - var n2 = this.findExtraFieldUnicodeComment(); - if (null !== n2) - this.fileCommentStr = n2; - else { - var i2 = s.transformTo(e2, this.fileComment); - this.fileCommentStr = this.loadOptions.decodeFileName(i2); - } - } - }, findExtraFieldUnicodePath: function() { - var e2 = this.extraFields[28789]; - if (e2) { - var t2 = n(e2.value); - return 1 !== t2.readInt(1) ? null : a(this.fileName) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); - } - return null; - }, findExtraFieldUnicodeComment: function() { - var e2 = this.extraFields[25461]; - if (e2) { - var t2 = n(e2.value); - return 1 !== t2.readInt(1) ? null : a(this.fileComment) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); - } - return null; - } }, t.exports = l; - }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e, t, r) { - "use strict"; - function n(e2, t2, r2) { - this.name = e2, this.dir = r2.dir, this.date = r2.date, this.comment = r2.comment, this.unixPermissions = r2.unixPermissions, this.dosPermissions = r2.dosPermissions, this._data = t2, this._dataBinary = r2.binary, this.options = { compression: r2.compression, compressionOptions: r2.compressionOptions }; - } - var s = e("./stream/StreamHelper"), i = e("./stream/DataWorker"), a = e("./utf8"), o = e("./compressedObject"), h = e("./stream/GenericWorker"); - n.prototype = { internalStream: function(e2) { - var t2 = null, r2 = "string"; - try { - if (!e2) - throw new Error("No output type specified."); - var n2 = "string" === (r2 = e2.toLowerCase()) || "text" === r2; - "binarystring" !== r2 && "text" !== r2 || (r2 = "string"), t2 = this._decompressWorker(); - var i2 = !this._dataBinary; - i2 && !n2 && (t2 = t2.pipe(new a.Utf8EncodeWorker())), !i2 && n2 && (t2 = t2.pipe(new a.Utf8DecodeWorker())); - } catch (e3) { - (t2 = new h("error")).error(e3); - } - return new s(t2, r2, ""); - }, async: function(e2, t2) { - return this.internalStream(e2).accumulate(t2); - }, nodeStream: function(e2, t2) { - return this.internalStream(e2 || "nodebuffer").toNodejsStream(t2); - }, _compressWorker: function(e2, t2) { - if (this._data instanceof o && this._data.compression.magic === e2.magic) - return this._data.getCompressedWorker(); - var r2 = this._decompressWorker(); - return this._dataBinary || (r2 = r2.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r2, e2, t2); - }, _decompressWorker: function() { - return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof h ? this._data : new i(this._data); - } }; - for (var u = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, f = 0; f < u.length; f++) - n.prototype[u[f]] = l; - t.exports = n; - }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e, l, t) { - (function(t2) { - "use strict"; - var r, n, e2 = t2.MutationObserver || t2.WebKitMutationObserver; - if (e2) { - var i = 0, s = new e2(u), a = t2.document.createTextNode(""); - s.observe(a, { characterData: true }), r = function() { - a.data = i = ++i % 2; - }; - } else if (t2.setImmediate || void 0 === t2.MessageChannel) - r = "document" in t2 && "onreadystatechange" in t2.document.createElement("script") ? function() { - var e3 = t2.document.createElement("script"); - e3.onreadystatechange = function() { - u(), e3.onreadystatechange = null, e3.parentNode.removeChild(e3), e3 = null; - }, t2.document.documentElement.appendChild(e3); - } : function() { - setTimeout(u, 0); - }; - else { - var o = new t2.MessageChannel(); - o.port1.onmessage = u, r = function() { - o.port2.postMessage(0); - }; - } - var h = []; - function u() { - var e3, t3; - n = true; - for (var r2 = h.length; r2; ) { - for (t3 = h, h = [], e3 = -1; ++e3 < r2; ) - t3[e3](); - r2 = h.length; - } - n = false; - } - l.exports = function(e3) { - 1 !== h.push(e3) || n || r(); - }; - }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); - }, {}], 37: [function(e, t, r) { - "use strict"; - var i = e("immediate"); - function u() { - } - var l = {}, s = ["REJECTED"], a = ["FULFILLED"], n = ["PENDING"]; - function o(e2) { - if ("function" != typeof e2) - throw new TypeError("resolver must be a function"); - this.state = n, this.queue = [], this.outcome = void 0, e2 !== u && d(this, e2); - } - function h(e2, t2, r2) { - this.promise = e2, "function" == typeof t2 && (this.onFulfilled = t2, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r2 && (this.onRejected = r2, this.callRejected = this.otherCallRejected); - } - function f(t2, r2, n2) { - i(function() { - var e2; - try { - e2 = r2(n2); - } catch (e3) { - return l.reject(t2, e3); - } - e2 === t2 ? l.reject(t2, new TypeError("Cannot resolve promise with itself")) : l.resolve(t2, e2); - }); - } - function c(e2) { - var t2 = e2 && e2.then; - if (e2 && ("object" == typeof e2 || "function" == typeof e2) && "function" == typeof t2) - return function() { - t2.apply(e2, arguments); - }; - } - function d(t2, e2) { - var r2 = false; - function n2(e3) { - r2 || (r2 = true, l.reject(t2, e3)); - } - function i2(e3) { - r2 || (r2 = true, l.resolve(t2, e3)); - } - var s2 = p(function() { - e2(i2, n2); - }); - "error" === s2.status && n2(s2.value); - } - function p(e2, t2) { - var r2 = {}; - try { - r2.value = e2(t2), r2.status = "success"; - } catch (e3) { - r2.status = "error", r2.value = e3; - } - return r2; - } - (t.exports = o).prototype.finally = function(t2) { - if ("function" != typeof t2) - return this; - var r2 = this.constructor; - return this.then(function(e2) { - return r2.resolve(t2()).then(function() { - return e2; - }); - }, function(e2) { - return r2.resolve(t2()).then(function() { - throw e2; - }); - }); - }, o.prototype.catch = function(e2) { - return this.then(null, e2); - }, o.prototype.then = function(e2, t2) { - if ("function" != typeof e2 && this.state === a || "function" != typeof t2 && this.state === s) - return this; - var r2 = new this.constructor(u); - this.state !== n ? f(r2, this.state === a ? e2 : t2, this.outcome) : this.queue.push(new h(r2, e2, t2)); - return r2; - }, h.prototype.callFulfilled = function(e2) { - l.resolve(this.promise, e2); - }, h.prototype.otherCallFulfilled = function(e2) { - f(this.promise, this.onFulfilled, e2); - }, h.prototype.callRejected = function(e2) { - l.reject(this.promise, e2); - }, h.prototype.otherCallRejected = function(e2) { - f(this.promise, this.onRejected, e2); - }, l.resolve = function(e2, t2) { - var r2 = p(c, t2); - if ("error" === r2.status) - return l.reject(e2, r2.value); - var n2 = r2.value; - if (n2) - d(e2, n2); - else { - e2.state = a, e2.outcome = t2; - for (var i2 = -1, s2 = e2.queue.length; ++i2 < s2; ) - e2.queue[i2].callFulfilled(t2); - } - return e2; - }, l.reject = function(e2, t2) { - e2.state = s, e2.outcome = t2; - for (var r2 = -1, n2 = e2.queue.length; ++r2 < n2; ) - e2.queue[r2].callRejected(t2); - return e2; - }, o.resolve = function(e2) { - if (e2 instanceof this) - return e2; - return l.resolve(new this(u), e2); - }, o.reject = function(e2) { - var t2 = new this(u); - return l.reject(t2, e2); - }, o.all = function(e2) { - var r2 = this; - if ("[object Array]" !== Object.prototype.toString.call(e2)) - return this.reject(new TypeError("must be an array")); - var n2 = e2.length, i2 = false; - if (!n2) - return this.resolve([]); - var s2 = new Array(n2), a2 = 0, t2 = -1, o2 = new this(u); - for (; ++t2 < n2; ) - h2(e2[t2], t2); - return o2; - function h2(e3, t3) { - r2.resolve(e3).then(function(e4) { - s2[t3] = e4, ++a2 !== n2 || i2 || (i2 = true, l.resolve(o2, s2)); - }, function(e4) { - i2 || (i2 = true, l.reject(o2, e4)); - }); - } - }, o.race = function(e2) { - var t2 = this; - if ("[object Array]" !== Object.prototype.toString.call(e2)) - return this.reject(new TypeError("must be an array")); - var r2 = e2.length, n2 = false; - if (!r2) - return this.resolve([]); - var i2 = -1, s2 = new this(u); - for (; ++i2 < r2; ) - a2 = e2[i2], t2.resolve(a2).then(function(e3) { - n2 || (n2 = true, l.resolve(s2, e3)); - }, function(e3) { - n2 || (n2 = true, l.reject(s2, e3)); - }); - var a2; - return s2; - }; - }, { immediate: 36 }], 38: [function(e, t, r) { - "use strict"; - var n = {}; - (0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n; - }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e, t, r) { - "use strict"; - var a = e("./zlib/deflate"), o = e("./utils/common"), h = e("./utils/strings"), i = e("./zlib/messages"), s = e("./zlib/zstream"), u = Object.prototype.toString, l = 0, f = -1, c = 0, d = 8; - function p(e2) { - if (!(this instanceof p)) - return new p(e2); - this.options = o.assign({ level: f, method: d, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c, to: "" }, e2 || {}); - var t2 = this.options; - t2.raw && 0 < t2.windowBits ? t2.windowBits = -t2.windowBits : t2.gzip && 0 < t2.windowBits && t2.windowBits < 16 && (t2.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0; - var r2 = a.deflateInit2(this.strm, t2.level, t2.method, t2.windowBits, t2.memLevel, t2.strategy); - if (r2 !== l) - throw new Error(i[r2]); - if (t2.header && a.deflateSetHeader(this.strm, t2.header), t2.dictionary) { - var n2; - if (n2 = "string" == typeof t2.dictionary ? h.string2buf(t2.dictionary) : "[object ArrayBuffer]" === u.call(t2.dictionary) ? new Uint8Array(t2.dictionary) : t2.dictionary, (r2 = a.deflateSetDictionary(this.strm, n2)) !== l) - throw new Error(i[r2]); - this._dict_set = true; - } - } - function n(e2, t2) { - var r2 = new p(t2); - if (r2.push(e2, true), r2.err) - throw r2.msg || i[r2.err]; - return r2.result; - } - p.prototype.push = function(e2, t2) { - var r2, n2, i2 = this.strm, s2 = this.options.chunkSize; - if (this.ended) - return false; - n2 = t2 === ~~t2 ? t2 : true === t2 ? 4 : 0, "string" == typeof e2 ? i2.input = h.string2buf(e2) : "[object ArrayBuffer]" === u.call(e2) ? i2.input = new Uint8Array(e2) : i2.input = e2, i2.next_in = 0, i2.avail_in = i2.input.length; - do { - if (0 === i2.avail_out && (i2.output = new o.Buf8(s2), i2.next_out = 0, i2.avail_out = s2), 1 !== (r2 = a.deflate(i2, n2)) && r2 !== l) - return this.onEnd(r2), !(this.ended = true); - 0 !== i2.avail_out && (0 !== i2.avail_in || 4 !== n2 && 2 !== n2) || ("string" === this.options.to ? this.onData(h.buf2binstring(o.shrinkBuf(i2.output, i2.next_out))) : this.onData(o.shrinkBuf(i2.output, i2.next_out))); - } while ((0 < i2.avail_in || 0 === i2.avail_out) && 1 !== r2); - return 4 === n2 ? (r2 = a.deflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === l) : 2 !== n2 || (this.onEnd(l), !(i2.avail_out = 0)); - }, p.prototype.onData = function(e2) { - this.chunks.push(e2); - }, p.prototype.onEnd = function(e2) { - e2 === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; - }, r.Deflate = p, r.deflate = n, r.deflateRaw = function(e2, t2) { - return (t2 = t2 || {}).raw = true, n(e2, t2); - }, r.gzip = function(e2, t2) { - return (t2 = t2 || {}).gzip = true, n(e2, t2); - }; - }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e, t, r) { - "use strict"; - var c = e("./zlib/inflate"), d = e("./utils/common"), p = e("./utils/strings"), m = e("./zlib/constants"), n = e("./zlib/messages"), i = e("./zlib/zstream"), s = e("./zlib/gzheader"), _ = Object.prototype.toString; - function a(e2) { - if (!(this instanceof a)) - return new a(e2); - this.options = d.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {}); - var t2 = this.options; - t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0; - var r2 = c.inflateInit2(this.strm, t2.windowBits); - if (r2 !== m.Z_OK) - throw new Error(n[r2]); - this.header = new s(), c.inflateGetHeader(this.strm, this.header); - } - function o(e2, t2) { - var r2 = new a(t2); - if (r2.push(e2, true), r2.err) - throw r2.msg || n[r2.err]; - return r2.result; - } - a.prototype.push = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h = this.strm, u = this.options.chunkSize, l = this.options.dictionary, f = false; - if (this.ended) - return false; - n2 = t2 === ~~t2 ? t2 : true === t2 ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e2 ? h.input = p.binstring2buf(e2) : "[object ArrayBuffer]" === _.call(e2) ? h.input = new Uint8Array(e2) : h.input = e2, h.next_in = 0, h.avail_in = h.input.length; - do { - if (0 === h.avail_out && (h.output = new d.Buf8(u), h.next_out = 0, h.avail_out = u), (r2 = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && l && (o2 = "string" == typeof l ? p.string2buf(l) : "[object ArrayBuffer]" === _.call(l) ? new Uint8Array(l) : l, r2 = c.inflateSetDictionary(this.strm, o2)), r2 === m.Z_BUF_ERROR && true === f && (r2 = m.Z_OK, f = false), r2 !== m.Z_STREAM_END && r2 !== m.Z_OK) - return this.onEnd(r2), !(this.ended = true); - h.next_out && (0 !== h.avail_out && r2 !== m.Z_STREAM_END && (0 !== h.avail_in || n2 !== m.Z_FINISH && n2 !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i2 = p.utf8border(h.output, h.next_out), s2 = h.next_out - i2, a2 = p.buf2string(h.output, i2), h.next_out = s2, h.avail_out = u - s2, s2 && d.arraySet(h.output, h.output, i2, s2, 0), this.onData(a2)) : this.onData(d.shrinkBuf(h.output, h.next_out)))), 0 === h.avail_in && 0 === h.avail_out && (f = true); - } while ((0 < h.avail_in || 0 === h.avail_out) && r2 !== m.Z_STREAM_END); - return r2 === m.Z_STREAM_END && (n2 = m.Z_FINISH), n2 === m.Z_FINISH ? (r2 = c.inflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === m.Z_OK) : n2 !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(h.avail_out = 0)); - }, a.prototype.onData = function(e2) { - this.chunks.push(e2); - }, a.prototype.onEnd = function(e2) { - e2 === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; - }, r.Inflate = a, r.inflate = o, r.inflateRaw = function(e2, t2) { - return (t2 = t2 || {}).raw = true, o(e2, t2); - }, r.ungzip = o; - }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e, t, r) { - "use strict"; - var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; - r.assign = function(e2) { - for (var t2 = Array.prototype.slice.call(arguments, 1); t2.length; ) { - var r2 = t2.shift(); - if (r2) { - if ("object" != typeof r2) - throw new TypeError(r2 + "must be non-object"); - for (var n2 in r2) - r2.hasOwnProperty(n2) && (e2[n2] = r2[n2]); - } - } - return e2; - }, r.shrinkBuf = function(e2, t2) { - return e2.length === t2 ? e2 : e2.subarray ? e2.subarray(0, t2) : (e2.length = t2, e2); - }; - var i = { arraySet: function(e2, t2, r2, n2, i2) { - if (t2.subarray && e2.subarray) - e2.set(t2.subarray(r2, r2 + n2), i2); - else - for (var s2 = 0; s2 < n2; s2++) - e2[i2 + s2] = t2[r2 + s2]; - }, flattenChunks: function(e2) { - var t2, r2, n2, i2, s2, a; - for (t2 = n2 = 0, r2 = e2.length; t2 < r2; t2++) - n2 += e2[t2].length; - for (a = new Uint8Array(n2), t2 = i2 = 0, r2 = e2.length; t2 < r2; t2++) - s2 = e2[t2], a.set(s2, i2), i2 += s2.length; - return a; - } }, s = { arraySet: function(e2, t2, r2, n2, i2) { - for (var s2 = 0; s2 < n2; s2++) - e2[i2 + s2] = t2[r2 + s2]; - }, flattenChunks: function(e2) { - return [].concat.apply([], e2); - } }; - r.setTyped = function(e2) { - e2 ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s)); - }, r.setTyped(n); - }, {}], 42: [function(e, t, r) { - "use strict"; - var h = e("./common"), i = true, s = true; - try { - String.fromCharCode.apply(null, [0]); - } catch (e2) { - i = false; - } - try { - String.fromCharCode.apply(null, new Uint8Array(1)); - } catch (e2) { - s = false; - } - for (var u = new h.Buf8(256), n = 0; n < 256; n++) - u[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; - function l(e2, t2) { - if (t2 < 65537 && (e2.subarray && s || !e2.subarray && i)) - return String.fromCharCode.apply(null, h.shrinkBuf(e2, t2)); - for (var r2 = "", n2 = 0; n2 < t2; n2++) - r2 += String.fromCharCode(e2[n2]); - return r2; - } - u[254] = u[254] = 1, r.string2buf = function(e2) { - var t2, r2, n2, i2, s2, a = e2.length, o = 0; - for (i2 = 0; i2 < a; i2++) - 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; - for (t2 = new h.Buf8(o), i2 = s2 = 0; s2 < o; i2++) - 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); - return t2; - }, r.buf2binstring = function(e2) { - return l(e2, e2.length); - }, r.binstring2buf = function(e2) { - for (var t2 = new h.Buf8(e2.length), r2 = 0, n2 = t2.length; r2 < n2; r2++) - t2[r2] = e2.charCodeAt(r2); - return t2; - }, r.buf2string = function(e2, t2) { - var r2, n2, i2, s2, a = t2 || e2.length, o = new Array(2 * a); - for (r2 = n2 = 0; r2 < a; ) - if ((i2 = e2[r2++]) < 128) - o[n2++] = i2; - else if (4 < (s2 = u[i2])) - o[n2++] = 65533, r2 += s2 - 1; - else { - for (i2 &= 2 === s2 ? 31 : 3 === s2 ? 15 : 7; 1 < s2 && r2 < a; ) - i2 = i2 << 6 | 63 & e2[r2++], s2--; - 1 < s2 ? o[n2++] = 65533 : i2 < 65536 ? o[n2++] = i2 : (i2 -= 65536, o[n2++] = 55296 | i2 >> 10 & 1023, o[n2++] = 56320 | 1023 & i2); - } - return l(o, n2); - }, r.utf8border = function(e2, t2) { - var r2; - for ((t2 = t2 || e2.length) > e2.length && (t2 = e2.length), r2 = t2 - 1; 0 <= r2 && 128 == (192 & e2[r2]); ) - r2--; - return r2 < 0 ? t2 : 0 === r2 ? t2 : r2 + u[e2[r2]] > t2 ? r2 : t2; - }; - }, { "./common": 41 }], 43: [function(e, t, r) { - "use strict"; - t.exports = function(e2, t2, r2, n) { - for (var i = 65535 & e2 | 0, s = e2 >>> 16 & 65535 | 0, a = 0; 0 !== r2; ) { - for (r2 -= a = 2e3 < r2 ? 2e3 : r2; s = s + (i = i + t2[n++] | 0) | 0, --a; ) - ; - i %= 65521, s %= 65521; - } - return i | s << 16 | 0; - }; - }, {}], 44: [function(e, t, r) { - "use strict"; - t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; - }, {}], 45: [function(e, t, r) { - "use strict"; - var o = function() { - for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { - e2 = r2; - for (var n = 0; n < 8; n++) - e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; - t2[r2] = e2; - } - return t2; - }(); - t.exports = function(e2, t2, r2, n) { - var i = o, s = n + r2; - e2 ^= -1; - for (var a = n; a < s; a++) - e2 = e2 >>> 8 ^ i[255 & (e2 ^ t2[a])]; - return -1 ^ e2; - }; - }, {}], 46: [function(e, t, r) { - "use strict"; - var h, c = e("../utils/common"), u = e("./trees"), d = e("./adler32"), p = e("./crc32"), n = e("./messages"), l = 0, f = 4, m = 0, _ = -2, g = -1, b = 4, i = 2, v = 8, y = 9, s = 286, a = 30, o = 19, w = 2 * s + 1, k = 15, x = 3, S = 258, z = S + x + 1, C = 42, E = 113, A = 1, I = 2, O = 3, B = 4; - function R(e2, t2) { - return e2.msg = n[t2], t2; - } - function T(e2) { - return (e2 << 1) - (4 < e2 ? 9 : 0); - } - function D(e2) { - for (var t2 = e2.length; 0 <= --t2; ) - e2[t2] = 0; - } - function F(e2) { - var t2 = e2.state, r2 = t2.pending; - r2 > e2.avail_out && (r2 = e2.avail_out), 0 !== r2 && (c.arraySet(e2.output, t2.pending_buf, t2.pending_out, r2, e2.next_out), e2.next_out += r2, t2.pending_out += r2, e2.total_out += r2, e2.avail_out -= r2, t2.pending -= r2, 0 === t2.pending && (t2.pending_out = 0)); - } - function N(e2, t2) { - u._tr_flush_block(e2, 0 <= e2.block_start ? e2.block_start : -1, e2.strstart - e2.block_start, t2), e2.block_start = e2.strstart, F(e2.strm); - } - function U(e2, t2) { - e2.pending_buf[e2.pending++] = t2; - } - function P(e2, t2) { - e2.pending_buf[e2.pending++] = t2 >>> 8 & 255, e2.pending_buf[e2.pending++] = 255 & t2; - } - function L(e2, t2) { - var r2, n2, i2 = e2.max_chain_length, s2 = e2.strstart, a2 = e2.prev_length, o2 = e2.nice_match, h2 = e2.strstart > e2.w_size - z ? e2.strstart - (e2.w_size - z) : 0, u2 = e2.window, l2 = e2.w_mask, f2 = e2.prev, c2 = e2.strstart + S, d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; - e2.prev_length >= e2.good_match && (i2 >>= 2), o2 > e2.lookahead && (o2 = e2.lookahead); - do { - if (u2[(r2 = t2) + a2] === p2 && u2[r2 + a2 - 1] === d2 && u2[r2] === u2[s2] && u2[++r2] === u2[s2 + 1]) { - s2 += 2, r2++; - do { - } while (u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && s2 < c2); - if (n2 = S - (c2 - s2), s2 = c2 - S, a2 < n2) { - if (e2.match_start = t2, o2 <= (a2 = n2)) - break; - d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; - } - } - } while ((t2 = f2[t2 & l2]) > h2 && 0 != --i2); - return a2 <= e2.lookahead ? a2 : e2.lookahead; - } - function j(e2) { - var t2, r2, n2, i2, s2, a2, o2, h2, u2, l2, f2 = e2.w_size; - do { - if (i2 = e2.window_size - e2.lookahead - e2.strstart, e2.strstart >= f2 + (f2 - z)) { - for (c.arraySet(e2.window, e2.window, f2, f2, 0), e2.match_start -= f2, e2.strstart -= f2, e2.block_start -= f2, t2 = r2 = e2.hash_size; n2 = e2.head[--t2], e2.head[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) - ; - for (t2 = r2 = f2; n2 = e2.prev[--t2], e2.prev[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) - ; - i2 += f2; - } - if (0 === e2.strm.avail_in) - break; - if (a2 = e2.strm, o2 = e2.window, h2 = e2.strstart + e2.lookahead, u2 = i2, l2 = void 0, l2 = a2.avail_in, u2 < l2 && (l2 = u2), r2 = 0 === l2 ? 0 : (a2.avail_in -= l2, c.arraySet(o2, a2.input, a2.next_in, l2, h2), 1 === a2.state.wrap ? a2.adler = d(a2.adler, o2, l2, h2) : 2 === a2.state.wrap && (a2.adler = p(a2.adler, o2, l2, h2)), a2.next_in += l2, a2.total_in += l2, l2), e2.lookahead += r2, e2.lookahead + e2.insert >= x) - for (s2 = e2.strstart - e2.insert, e2.ins_h = e2.window[s2], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + 1]) & e2.hash_mask; e2.insert && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + x - 1]) & e2.hash_mask, e2.prev[s2 & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = s2, s2++, e2.insert--, !(e2.lookahead + e2.insert < x)); ) - ; - } while (e2.lookahead < z && 0 !== e2.strm.avail_in); - } - function Z(e2, t2) { - for (var r2, n2; ; ) { - if (e2.lookahead < z) { - if (j(e2), e2.lookahead < z && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 !== r2 && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2)), e2.match_length >= x) - if (n2 = u._tr_tally(e2, e2.strstart - e2.match_start, e2.match_length - x), e2.lookahead -= e2.match_length, e2.match_length <= e2.max_lazy_match && e2.lookahead >= x) { - for (e2.match_length--; e2.strstart++, e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart, 0 != --e2.match_length; ) - ; - e2.strstart++; - } else - e2.strstart += e2.match_length, e2.match_length = 0, e2.ins_h = e2.window[e2.strstart], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + 1]) & e2.hash_mask; - else - n2 = u._tr_tally(e2, 0, e2.window[e2.strstart]), e2.lookahead--, e2.strstart++; - if (n2 && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } - return e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; - } - function W(e2, t2) { - for (var r2, n2, i2; ; ) { - if (e2.lookahead < z) { - if (j(e2), e2.lookahead < z && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), e2.prev_length = e2.match_length, e2.prev_match = e2.match_start, e2.match_length = x - 1, 0 !== r2 && e2.prev_length < e2.max_lazy_match && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2), e2.match_length <= 5 && (1 === e2.strategy || e2.match_length === x && 4096 < e2.strstart - e2.match_start) && (e2.match_length = x - 1)), e2.prev_length >= x && e2.match_length <= e2.prev_length) { - for (i2 = e2.strstart + e2.lookahead - x, n2 = u._tr_tally(e2, e2.strstart - 1 - e2.prev_match, e2.prev_length - x), e2.lookahead -= e2.prev_length - 1, e2.prev_length -= 2; ++e2.strstart <= i2 && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 != --e2.prev_length; ) - ; - if (e2.match_available = 0, e2.match_length = x - 1, e2.strstart++, n2 && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } else if (e2.match_available) { - if ((n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1])) && N(e2, false), e2.strstart++, e2.lookahead--, 0 === e2.strm.avail_out) - return A; - } else - e2.match_available = 1, e2.strstart++, e2.lookahead--; - } - return e2.match_available && (n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1]), e2.match_available = 0), e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; - } - function M(e2, t2, r2, n2, i2) { - this.good_length = e2, this.max_lazy = t2, this.nice_length = r2, this.max_chain = n2, this.func = i2; - } - function H() { - this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c.Buf16(2 * w), this.dyn_dtree = new c.Buf16(2 * (2 * a + 1)), this.bl_tree = new c.Buf16(2 * (2 * o + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c.Buf16(k + 1), this.heap = new c.Buf16(2 * s + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c.Buf16(2 * s + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; - } - function G(e2) { - var t2; - return e2 && e2.state ? (e2.total_in = e2.total_out = 0, e2.data_type = i, (t2 = e2.state).pending = 0, t2.pending_out = 0, t2.wrap < 0 && (t2.wrap = -t2.wrap), t2.status = t2.wrap ? C : E, e2.adler = 2 === t2.wrap ? 0 : 1, t2.last_flush = l, u._tr_init(t2), m) : R(e2, _); - } - function K(e2) { - var t2 = G(e2); - return t2 === m && function(e3) { - e3.window_size = 2 * e3.w_size, D(e3.head), e3.max_lazy_match = h[e3.level].max_lazy, e3.good_match = h[e3.level].good_length, e3.nice_match = h[e3.level].nice_length, e3.max_chain_length = h[e3.level].max_chain, e3.strstart = 0, e3.block_start = 0, e3.lookahead = 0, e3.insert = 0, e3.match_length = e3.prev_length = x - 1, e3.match_available = 0, e3.ins_h = 0; - }(e2.state), t2; - } - function Y(e2, t2, r2, n2, i2, s2) { - if (!e2) - return _; - var a2 = 1; - if (t2 === g && (t2 = 6), n2 < 0 ? (a2 = 0, n2 = -n2) : 15 < n2 && (a2 = 2, n2 -= 16), i2 < 1 || y < i2 || r2 !== v || n2 < 8 || 15 < n2 || t2 < 0 || 9 < t2 || s2 < 0 || b < s2) - return R(e2, _); - 8 === n2 && (n2 = 9); - var o2 = new H(); - return (e2.state = o2).strm = e2, o2.wrap = a2, o2.gzhead = null, o2.w_bits = n2, o2.w_size = 1 << o2.w_bits, o2.w_mask = o2.w_size - 1, o2.hash_bits = i2 + 7, o2.hash_size = 1 << o2.hash_bits, o2.hash_mask = o2.hash_size - 1, o2.hash_shift = ~~((o2.hash_bits + x - 1) / x), o2.window = new c.Buf8(2 * o2.w_size), o2.head = new c.Buf16(o2.hash_size), o2.prev = new c.Buf16(o2.w_size), o2.lit_bufsize = 1 << i2 + 6, o2.pending_buf_size = 4 * o2.lit_bufsize, o2.pending_buf = new c.Buf8(o2.pending_buf_size), o2.d_buf = 1 * o2.lit_bufsize, o2.l_buf = 3 * o2.lit_bufsize, o2.level = t2, o2.strategy = s2, o2.method = r2, K(e2); - } - h = [new M(0, 0, 0, 0, function(e2, t2) { - var r2 = 65535; - for (r2 > e2.pending_buf_size - 5 && (r2 = e2.pending_buf_size - 5); ; ) { - if (e2.lookahead <= 1) { - if (j(e2), 0 === e2.lookahead && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - e2.strstart += e2.lookahead, e2.lookahead = 0; - var n2 = e2.block_start + r2; - if ((0 === e2.strstart || e2.strstart >= n2) && (e2.lookahead = e2.strstart - n2, e2.strstart = n2, N(e2, false), 0 === e2.strm.avail_out)) - return A; - if (e2.strstart - e2.block_start >= e2.w_size - z && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } - return e2.insert = 0, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : (e2.strstart > e2.block_start && (N(e2, false), e2.strm.avail_out), A); - }), new M(4, 4, 8, 4, Z), new M(4, 5, 16, 8, Z), new M(4, 6, 32, 32, Z), new M(4, 4, 16, 16, W), new M(8, 16, 32, 32, W), new M(8, 16, 128, 128, W), new M(8, 32, 128, 256, W), new M(32, 128, 258, 1024, W), new M(32, 258, 258, 4096, W)], r.deflateInit = function(e2, t2) { - return Y(e2, t2, v, 15, 8, 0); - }, r.deflateInit2 = Y, r.deflateReset = K, r.deflateResetKeep = G, r.deflateSetHeader = function(e2, t2) { - return e2 && e2.state ? 2 !== e2.state.wrap ? _ : (e2.state.gzhead = t2, m) : _; - }, r.deflate = function(e2, t2) { - var r2, n2, i2, s2; - if (!e2 || !e2.state || 5 < t2 || t2 < 0) - return e2 ? R(e2, _) : _; - if (n2 = e2.state, !e2.output || !e2.input && 0 !== e2.avail_in || 666 === n2.status && t2 !== f) - return R(e2, 0 === e2.avail_out ? -5 : _); - if (n2.strm = e2, r2 = n2.last_flush, n2.last_flush = t2, n2.status === C) - if (2 === n2.wrap) - e2.adler = 0, U(n2, 31), U(n2, 139), U(n2, 8), n2.gzhead ? (U(n2, (n2.gzhead.text ? 1 : 0) + (n2.gzhead.hcrc ? 2 : 0) + (n2.gzhead.extra ? 4 : 0) + (n2.gzhead.name ? 8 : 0) + (n2.gzhead.comment ? 16 : 0)), U(n2, 255 & n2.gzhead.time), U(n2, n2.gzhead.time >> 8 & 255), U(n2, n2.gzhead.time >> 16 & 255), U(n2, n2.gzhead.time >> 24 & 255), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 255 & n2.gzhead.os), n2.gzhead.extra && n2.gzhead.extra.length && (U(n2, 255 & n2.gzhead.extra.length), U(n2, n2.gzhead.extra.length >> 8 & 255)), n2.gzhead.hcrc && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending, 0)), n2.gzindex = 0, n2.status = 69) : (U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 3), n2.status = E); - else { - var a2 = v + (n2.w_bits - 8 << 4) << 8; - a2 |= (2 <= n2.strategy || n2.level < 2 ? 0 : n2.level < 6 ? 1 : 6 === n2.level ? 2 : 3) << 6, 0 !== n2.strstart && (a2 |= 32), a2 += 31 - a2 % 31, n2.status = E, P(n2, a2), 0 !== n2.strstart && (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), e2.adler = 1; - } - if (69 === n2.status) - if (n2.gzhead.extra) { - for (i2 = n2.pending; n2.gzindex < (65535 & n2.gzhead.extra.length) && (n2.pending !== n2.pending_buf_size || (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending !== n2.pending_buf_size)); ) - U(n2, 255 & n2.gzhead.extra[n2.gzindex]), n2.gzindex++; - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), n2.gzindex === n2.gzhead.extra.length && (n2.gzindex = 0, n2.status = 73); - } else - n2.status = 73; - if (73 === n2.status) - if (n2.gzhead.name) { - i2 = n2.pending; - do { - if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { - s2 = 1; - break; - } - s2 = n2.gzindex < n2.gzhead.name.length ? 255 & n2.gzhead.name.charCodeAt(n2.gzindex++) : 0, U(n2, s2); - } while (0 !== s2); - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.gzindex = 0, n2.status = 91); - } else - n2.status = 91; - if (91 === n2.status) - if (n2.gzhead.comment) { - i2 = n2.pending; - do { - if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { - s2 = 1; - break; - } - s2 = n2.gzindex < n2.gzhead.comment.length ? 255 & n2.gzhead.comment.charCodeAt(n2.gzindex++) : 0, U(n2, s2); - } while (0 !== s2); - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.status = 103); - } else - n2.status = 103; - if (103 === n2.status && (n2.gzhead.hcrc ? (n2.pending + 2 > n2.pending_buf_size && F(e2), n2.pending + 2 <= n2.pending_buf_size && (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), e2.adler = 0, n2.status = E)) : n2.status = E), 0 !== n2.pending) { - if (F(e2), 0 === e2.avail_out) - return n2.last_flush = -1, m; - } else if (0 === e2.avail_in && T(t2) <= T(r2) && t2 !== f) - return R(e2, -5); - if (666 === n2.status && 0 !== e2.avail_in) - return R(e2, -5); - if (0 !== e2.avail_in || 0 !== n2.lookahead || t2 !== l && 666 !== n2.status) { - var o2 = 2 === n2.strategy ? function(e3, t3) { - for (var r3; ; ) { - if (0 === e3.lookahead && (j(e3), 0 === e3.lookahead)) { - if (t3 === l) - return A; - break; - } - if (e3.match_length = 0, r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++, r3 && (N(e3, false), 0 === e3.strm.avail_out)) - return A; - } - return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; - }(n2, t2) : 3 === n2.strategy ? function(e3, t3) { - for (var r3, n3, i3, s3, a3 = e3.window; ; ) { - if (e3.lookahead <= S) { - if (j(e3), e3.lookahead <= S && t3 === l) - return A; - if (0 === e3.lookahead) - break; - } - if (e3.match_length = 0, e3.lookahead >= x && 0 < e3.strstart && (n3 = a3[i3 = e3.strstart - 1]) === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3]) { - s3 = e3.strstart + S; - do { - } while (n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && i3 < s3); - e3.match_length = S - (s3 - i3), e3.match_length > e3.lookahead && (e3.match_length = e3.lookahead); - } - if (e3.match_length >= x ? (r3 = u._tr_tally(e3, 1, e3.match_length - x), e3.lookahead -= e3.match_length, e3.strstart += e3.match_length, e3.match_length = 0) : (r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++), r3 && (N(e3, false), 0 === e3.strm.avail_out)) - return A; - } - return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; - }(n2, t2) : h[n2.level].func(n2, t2); - if (o2 !== O && o2 !== B || (n2.status = 666), o2 === A || o2 === O) - return 0 === e2.avail_out && (n2.last_flush = -1), m; - if (o2 === I && (1 === t2 ? u._tr_align(n2) : 5 !== t2 && (u._tr_stored_block(n2, 0, 0, false), 3 === t2 && (D(n2.head), 0 === n2.lookahead && (n2.strstart = 0, n2.block_start = 0, n2.insert = 0))), F(e2), 0 === e2.avail_out)) - return n2.last_flush = -1, m; - } - return t2 !== f ? m : n2.wrap <= 0 ? 1 : (2 === n2.wrap ? (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), U(n2, e2.adler >> 16 & 255), U(n2, e2.adler >> 24 & 255), U(n2, 255 & e2.total_in), U(n2, e2.total_in >> 8 & 255), U(n2, e2.total_in >> 16 & 255), U(n2, e2.total_in >> 24 & 255)) : (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), F(e2), 0 < n2.wrap && (n2.wrap = -n2.wrap), 0 !== n2.pending ? m : 1); - }, r.deflateEnd = function(e2) { - var t2; - return e2 && e2.state ? (t2 = e2.state.status) !== C && 69 !== t2 && 73 !== t2 && 91 !== t2 && 103 !== t2 && t2 !== E && 666 !== t2 ? R(e2, _) : (e2.state = null, t2 === E ? R(e2, -3) : m) : _; - }, r.deflateSetDictionary = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h2, u2, l2 = t2.length; - if (!e2 || !e2.state) - return _; - if (2 === (s2 = (r2 = e2.state).wrap) || 1 === s2 && r2.status !== C || r2.lookahead) - return _; - for (1 === s2 && (e2.adler = d(e2.adler, t2, l2, 0)), r2.wrap = 0, l2 >= r2.w_size && (0 === s2 && (D(r2.head), r2.strstart = 0, r2.block_start = 0, r2.insert = 0), u2 = new c.Buf8(r2.w_size), c.arraySet(u2, t2, l2 - r2.w_size, r2.w_size, 0), t2 = u2, l2 = r2.w_size), a2 = e2.avail_in, o2 = e2.next_in, h2 = e2.input, e2.avail_in = l2, e2.next_in = 0, e2.input = t2, j(r2); r2.lookahead >= x; ) { - for (n2 = r2.strstart, i2 = r2.lookahead - (x - 1); r2.ins_h = (r2.ins_h << r2.hash_shift ^ r2.window[n2 + x - 1]) & r2.hash_mask, r2.prev[n2 & r2.w_mask] = r2.head[r2.ins_h], r2.head[r2.ins_h] = n2, n2++, --i2; ) - ; - r2.strstart = n2, r2.lookahead = x - 1, j(r2); - } - return r2.strstart += r2.lookahead, r2.block_start = r2.strstart, r2.insert = r2.lookahead, r2.lookahead = 0, r2.match_length = r2.prev_length = x - 1, r2.match_available = 0, e2.next_in = o2, e2.input = h2, e2.avail_in = a2, r2.wrap = s2, m; - }, r.deflateInfo = "pako deflate (from Nodeca project)"; - }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e, t, r) { - "use strict"; - t.exports = function() { - this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; - }; - }, {}], 48: [function(e, t, r) { - "use strict"; - t.exports = function(e2, t2) { - var r2, n, i, s, a, o, h, u, l, f, c, d, p, m, _, g, b, v, y, w, k, x, S, z, C; - r2 = e2.state, n = e2.next_in, z = e2.input, i = n + (e2.avail_in - 5), s = e2.next_out, C = e2.output, a = s - (t2 - e2.avail_out), o = s + (e2.avail_out - 257), h = r2.dmax, u = r2.wsize, l = r2.whave, f = r2.wnext, c = r2.window, d = r2.hold, p = r2.bits, m = r2.lencode, _ = r2.distcode, g = (1 << r2.lenbits) - 1, b = (1 << r2.distbits) - 1; - e: - do { - p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = m[d & g]; - t: - for (; ; ) { - if (d >>>= y = v >>> 24, p -= y, 0 === (y = v >>> 16 & 255)) - C[s++] = 65535 & v; - else { - if (!(16 & y)) { - if (0 == (64 & y)) { - v = m[(65535 & v) + (d & (1 << y) - 1)]; - continue t; - } - if (32 & y) { - r2.mode = 12; - break e; - } - e2.msg = "invalid literal/length code", r2.mode = 30; - break e; - } - w = 65535 & v, (y &= 15) && (p < y && (d += z[n++] << p, p += 8), w += d & (1 << y) - 1, d >>>= y, p -= y), p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = _[d & b]; - r: - for (; ; ) { - if (d >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) { - if (0 == (64 & y)) { - v = _[(65535 & v) + (d & (1 << y) - 1)]; - continue r; - } - e2.msg = "invalid distance code", r2.mode = 30; - break e; - } - if (k = 65535 & v, p < (y &= 15) && (d += z[n++] << p, (p += 8) < y && (d += z[n++] << p, p += 8)), h < (k += d & (1 << y) - 1)) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break e; - } - if (d >>>= y, p -= y, (y = s - a) < k) { - if (l < (y = k - y) && r2.sane) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break e; - } - if (S = c, (x = 0) === f) { - if (x += u - y, y < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - } else if (f < y) { - if (x += u + f - y, (y -= f) < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - if (x = 0, f < w) { - for (w -= y = f; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - } - } else if (x += f - y, y < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - for (; 2 < w; ) - C[s++] = S[x++], C[s++] = S[x++], C[s++] = S[x++], w -= 3; - w && (C[s++] = S[x++], 1 < w && (C[s++] = S[x++])); - } else { - for (x = s - k; C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], 2 < (w -= 3); ) - ; - w && (C[s++] = C[x++], 1 < w && (C[s++] = C[x++])); - } - break; - } - } - break; - } - } while (n < i && s < o); - n -= w = p >> 3, d &= (1 << (p -= w << 3)) - 1, e2.next_in = n, e2.next_out = s, e2.avail_in = n < i ? i - n + 5 : 5 - (n - i), e2.avail_out = s < o ? o - s + 257 : 257 - (s - o), r2.hold = d, r2.bits = p; - }; - }, {}], 49: [function(e, t, r) { - "use strict"; - var I = e("../utils/common"), O = e("./adler32"), B = e("./crc32"), R = e("./inffast"), T = e("./inftrees"), D = 1, F = 2, N = 0, U = -2, P = 1, n = 852, i = 592; - function L(e2) { - return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24); - } - function s() { - this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; - } - function a(e2) { - var t2; - return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = P, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new I.Buf32(n), t2.distcode = t2.distdyn = new I.Buf32(i), t2.sane = 1, t2.back = -1, N) : U; - } - function o(e2) { - var t2; - return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, a(e2)) : U; - } - function h(e2, t2) { - var r2, n2; - return e2 && e2.state ? (n2 = e2.state, t2 < 0 ? (r2 = 0, t2 = -t2) : (r2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? U : (null !== n2.window && n2.wbits !== t2 && (n2.window = null), n2.wrap = r2, n2.wbits = t2, o(e2))) : U; - } - function u(e2, t2) { - var r2, n2; - return e2 ? (n2 = new s(), (e2.state = n2).window = null, (r2 = h(e2, t2)) !== N && (e2.state = null), r2) : U; - } - var l, f, c = true; - function j(e2) { - if (c) { - var t2; - for (l = new I.Buf32(512), f = new I.Buf32(32), t2 = 0; t2 < 144; ) - e2.lens[t2++] = 8; - for (; t2 < 256; ) - e2.lens[t2++] = 9; - for (; t2 < 280; ) - e2.lens[t2++] = 7; - for (; t2 < 288; ) - e2.lens[t2++] = 8; - for (T(D, e2.lens, 0, 288, l, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; ) - e2.lens[t2++] = 5; - T(F, e2.lens, 0, 32, f, 0, e2.work, { bits: 5 }), c = false; - } - e2.lencode = l, e2.lenbits = 9, e2.distcode = f, e2.distbits = 5; - } - function Z(e2, t2, r2, n2) { - var i2, s2 = e2.state; - return null === s2.window && (s2.wsize = 1 << s2.wbits, s2.wnext = 0, s2.whave = 0, s2.window = new I.Buf8(s2.wsize)), n2 >= s2.wsize ? (I.arraySet(s2.window, t2, r2 - s2.wsize, s2.wsize, 0), s2.wnext = 0, s2.whave = s2.wsize) : (n2 < (i2 = s2.wsize - s2.wnext) && (i2 = n2), I.arraySet(s2.window, t2, r2 - n2, i2, s2.wnext), (n2 -= i2) ? (I.arraySet(s2.window, t2, r2 - n2, n2, 0), s2.wnext = n2, s2.whave = s2.wsize) : (s2.wnext += i2, s2.wnext === s2.wsize && (s2.wnext = 0), s2.whave < s2.wsize && (s2.whave += i2))), 0; - } - r.inflateReset = o, r.inflateReset2 = h, r.inflateResetKeep = a, r.inflateInit = function(e2) { - return u(e2, 15); - }, r.inflateInit2 = u, r.inflate = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h2, u2, l2, f2, c2, d, p, m, _, g, b, v, y, w, k, x, S, z, C = 0, E = new I.Buf8(4), A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in) - return U; - 12 === (r2 = e2.state).mode && (r2.mode = 13), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, f2 = o2, c2 = h2, x = N; - e: - for (; ; ) - switch (r2.mode) { - case P: - if (0 === r2.wrap) { - r2.mode = 13; - break; - } - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (2 & r2.wrap && 35615 === u2) { - E[r2.check = 0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0), l2 = u2 = 0, r2.mode = 2; - break; - } - if (r2.flags = 0, r2.head && (r2.head.done = false), !(1 & r2.wrap) || (((255 & u2) << 8) + (u2 >> 8)) % 31) { - e2.msg = "incorrect header check", r2.mode = 30; - break; - } - if (8 != (15 & u2)) { - e2.msg = "unknown compression method", r2.mode = 30; - break; - } - if (l2 -= 4, k = 8 + (15 & (u2 >>>= 4)), 0 === r2.wbits) - r2.wbits = k; - else if (k > r2.wbits) { - e2.msg = "invalid window size", r2.mode = 30; - break; - } - r2.dmax = 1 << k, e2.adler = r2.check = 1, r2.mode = 512 & u2 ? 10 : 12, l2 = u2 = 0; - break; - case 2: - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (r2.flags = u2, 8 != (255 & r2.flags)) { - e2.msg = "unknown compression method", r2.mode = 30; - break; - } - if (57344 & r2.flags) { - e2.msg = "unknown header flags set", r2.mode = 30; - break; - } - r2.head && (r2.head.text = u2 >> 8 & 1), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 3; - case 3: - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.head && (r2.head.time = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, E[2] = u2 >>> 16 & 255, E[3] = u2 >>> 24 & 255, r2.check = B(r2.check, E, 4, 0)), l2 = u2 = 0, r2.mode = 4; - case 4: - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.head && (r2.head.xflags = 255 & u2, r2.head.os = u2 >> 8), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 5; - case 5: - if (1024 & r2.flags) { - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.length = u2, r2.head && (r2.head.extra_len = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0; - } else - r2.head && (r2.head.extra = null); - r2.mode = 6; - case 6: - if (1024 & r2.flags && (o2 < (d = r2.length) && (d = o2), d && (r2.head && (k = r2.head.extra_len - r2.length, r2.head.extra || (r2.head.extra = new Array(r2.head.extra_len)), I.arraySet(r2.head.extra, n2, s2, d, k)), 512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, r2.length -= d), r2.length)) - break e; - r2.length = 0, r2.mode = 7; - case 7: - if (2048 & r2.flags) { - if (0 === o2) - break e; - for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.name += String.fromCharCode(k)), k && d < o2; ) - ; - if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) - break e; - } else - r2.head && (r2.head.name = null); - r2.length = 0, r2.mode = 8; - case 8: - if (4096 & r2.flags) { - if (0 === o2) - break e; - for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.comment += String.fromCharCode(k)), k && d < o2; ) - ; - if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) - break e; - } else - r2.head && (r2.head.comment = null); - r2.mode = 9; - case 9: - if (512 & r2.flags) { - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 !== (65535 & r2.check)) { - e2.msg = "header crc mismatch", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.head && (r2.head.hcrc = r2.flags >> 9 & 1, r2.head.done = true), e2.adler = r2.check = 0, r2.mode = 12; - break; - case 10: - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - e2.adler = r2.check = L(u2), l2 = u2 = 0, r2.mode = 11; - case 11: - if (0 === r2.havedict) - return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, 2; - e2.adler = r2.check = 1, r2.mode = 12; - case 12: - if (5 === t2 || 6 === t2) - break e; - case 13: - if (r2.last) { - u2 >>>= 7 & l2, l2 -= 7 & l2, r2.mode = 27; - break; - } - for (; l2 < 3; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - switch (r2.last = 1 & u2, l2 -= 1, 3 & (u2 >>>= 1)) { - case 0: - r2.mode = 14; - break; - case 1: - if (j(r2), r2.mode = 20, 6 !== t2) - break; - u2 >>>= 2, l2 -= 2; - break e; - case 2: - r2.mode = 17; - break; - case 3: - e2.msg = "invalid block type", r2.mode = 30; - } - u2 >>>= 2, l2 -= 2; - break; - case 14: - for (u2 >>>= 7 & l2, l2 -= 7 & l2; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if ((65535 & u2) != (u2 >>> 16 ^ 65535)) { - e2.msg = "invalid stored block lengths", r2.mode = 30; - break; - } - if (r2.length = 65535 & u2, l2 = u2 = 0, r2.mode = 15, 6 === t2) - break e; - case 15: - r2.mode = 16; - case 16: - if (d = r2.length) { - if (o2 < d && (d = o2), h2 < d && (d = h2), 0 === d) - break e; - I.arraySet(i2, n2, s2, d, a2), o2 -= d, s2 += d, h2 -= d, a2 += d, r2.length -= d; - break; - } - r2.mode = 12; - break; - case 17: - for (; l2 < 14; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (r2.nlen = 257 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ndist = 1 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ncode = 4 + (15 & u2), u2 >>>= 4, l2 -= 4, 286 < r2.nlen || 30 < r2.ndist) { - e2.msg = "too many length or distance symbols", r2.mode = 30; - break; - } - r2.have = 0, r2.mode = 18; - case 18: - for (; r2.have < r2.ncode; ) { - for (; l2 < 3; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.lens[A[r2.have++]] = 7 & u2, u2 >>>= 3, l2 -= 3; - } - for (; r2.have < 19; ) - r2.lens[A[r2.have++]] = 0; - if (r2.lencode = r2.lendyn, r2.lenbits = 7, S = { bits: r2.lenbits }, x = T(0, r2.lens, 0, 19, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { - e2.msg = "invalid code lengths set", r2.mode = 30; - break; - } - r2.have = 0, r2.mode = 19; - case 19: - for (; r2.have < r2.nlen + r2.ndist; ) { - for (; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (b < 16) - u2 >>>= _, l2 -= _, r2.lens[r2.have++] = b; - else { - if (16 === b) { - for (z = _ + 2; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 >>>= _, l2 -= _, 0 === r2.have) { - e2.msg = "invalid bit length repeat", r2.mode = 30; - break; - } - k = r2.lens[r2.have - 1], d = 3 + (3 & u2), u2 >>>= 2, l2 -= 2; - } else if (17 === b) { - for (z = _ + 3; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - l2 -= _, k = 0, d = 3 + (7 & (u2 >>>= _)), u2 >>>= 3, l2 -= 3; - } else { - for (z = _ + 7; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - l2 -= _, k = 0, d = 11 + (127 & (u2 >>>= _)), u2 >>>= 7, l2 -= 7; - } - if (r2.have + d > r2.nlen + r2.ndist) { - e2.msg = "invalid bit length repeat", r2.mode = 30; - break; - } - for (; d--; ) - r2.lens[r2.have++] = k; - } - } - if (30 === r2.mode) - break; - if (0 === r2.lens[256]) { - e2.msg = "invalid code -- missing end-of-block", r2.mode = 30; - break; - } - if (r2.lenbits = 9, S = { bits: r2.lenbits }, x = T(D, r2.lens, 0, r2.nlen, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { - e2.msg = "invalid literal/lengths set", r2.mode = 30; - break; - } - if (r2.distbits = 6, r2.distcode = r2.distdyn, S = { bits: r2.distbits }, x = T(F, r2.lens, r2.nlen, r2.ndist, r2.distcode, 0, r2.work, S), r2.distbits = S.bits, x) { - e2.msg = "invalid distances set", r2.mode = 30; - break; - } - if (r2.mode = 20, 6 === t2) - break e; - case 20: - r2.mode = 21; - case 21: - if (6 <= o2 && 258 <= h2) { - e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, R(e2, c2), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, 12 === r2.mode && (r2.back = -1); - break; - } - for (r2.back = 0; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (g && 0 == (240 & g)) { - for (v = _, y = g, w = b; g = (C = r2.lencode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - u2 >>>= v, l2 -= v, r2.back += v; - } - if (u2 >>>= _, l2 -= _, r2.back += _, r2.length = b, 0 === g) { - r2.mode = 26; - break; - } - if (32 & g) { - r2.back = -1, r2.mode = 12; - break; - } - if (64 & g) { - e2.msg = "invalid literal/length code", r2.mode = 30; - break; - } - r2.extra = 15 & g, r2.mode = 22; - case 22: - if (r2.extra) { - for (z = r2.extra; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.length += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; - } - r2.was = r2.length, r2.mode = 23; - case 23: - for (; g = (C = r2.distcode[u2 & (1 << r2.distbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (0 == (240 & g)) { - for (v = _, y = g, w = b; g = (C = r2.distcode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - u2 >>>= v, l2 -= v, r2.back += v; - } - if (u2 >>>= _, l2 -= _, r2.back += _, 64 & g) { - e2.msg = "invalid distance code", r2.mode = 30; - break; - } - r2.offset = b, r2.extra = 15 & g, r2.mode = 24; - case 24: - if (r2.extra) { - for (z = r2.extra; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.offset += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; - } - if (r2.offset > r2.dmax) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break; - } - r2.mode = 25; - case 25: - if (0 === h2) - break e; - if (d = c2 - h2, r2.offset > d) { - if ((d = r2.offset - d) > r2.whave && r2.sane) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break; - } - p = d > r2.wnext ? (d -= r2.wnext, r2.wsize - d) : r2.wnext - d, d > r2.length && (d = r2.length), m = r2.window; - } else - m = i2, p = a2 - r2.offset, d = r2.length; - for (h2 < d && (d = h2), h2 -= d, r2.length -= d; i2[a2++] = m[p++], --d; ) - ; - 0 === r2.length && (r2.mode = 21); - break; - case 26: - if (0 === h2) - break e; - i2[a2++] = r2.length, h2--, r2.mode = 21; - break; - case 27: - if (r2.wrap) { - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 |= n2[s2++] << l2, l2 += 8; - } - if (c2 -= h2, e2.total_out += c2, r2.total += c2, c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, a2 - c2) : O(r2.check, i2, c2, a2 - c2)), c2 = h2, (r2.flags ? u2 : L(u2)) !== r2.check) { - e2.msg = "incorrect data check", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.mode = 28; - case 28: - if (r2.wrap && r2.flags) { - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 !== (4294967295 & r2.total)) { - e2.msg = "incorrect length check", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.mode = 29; - case 29: - x = 1; - break e; - case 30: - x = -3; - break e; - case 31: - return -4; - case 32: - default: - return U; - } - return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, (r2.wsize || c2 !== e2.avail_out && r2.mode < 30 && (r2.mode < 27 || 4 !== t2)) && Z(e2, e2.output, e2.next_out, c2 - e2.avail_out) ? (r2.mode = 31, -4) : (f2 -= e2.avail_in, c2 -= e2.avail_out, e2.total_in += f2, e2.total_out += c2, r2.total += c2, r2.wrap && c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, e2.next_out - c2) : O(r2.check, i2, c2, e2.next_out - c2)), e2.data_type = r2.bits + (r2.last ? 64 : 0) + (12 === r2.mode ? 128 : 0) + (20 === r2.mode || 15 === r2.mode ? 256 : 0), (0 == f2 && 0 === c2 || 4 === t2) && x === N && (x = -5), x); - }, r.inflateEnd = function(e2) { - if (!e2 || !e2.state) - return U; - var t2 = e2.state; - return t2.window && (t2.window = null), e2.state = null, N; - }, r.inflateGetHeader = function(e2, t2) { - var r2; - return e2 && e2.state ? 0 == (2 & (r2 = e2.state).wrap) ? U : ((r2.head = t2).done = false, N) : U; - }, r.inflateSetDictionary = function(e2, t2) { - var r2, n2 = t2.length; - return e2 && e2.state ? 0 !== (r2 = e2.state).wrap && 11 !== r2.mode ? U : 11 === r2.mode && O(1, t2, n2, 0) !== r2.check ? -3 : Z(e2, t2, n2, n2) ? (r2.mode = 31, -4) : (r2.havedict = 1, N) : U; - }, r.inflateInfo = "pako inflate (from Nodeca project)"; - }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e, t, r) { - "use strict"; - var D = e("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; - t.exports = function(e2, t2, r2, n, i, s, a, o) { - var h, u, l, f, c, d, p, m, _, g = o.bits, b = 0, v = 0, y = 0, w = 0, k = 0, x = 0, S = 0, z = 0, C = 0, E = 0, A = null, I = 0, O = new D.Buf16(16), B = new D.Buf16(16), R = null, T = 0; - for (b = 0; b <= 15; b++) - O[b] = 0; - for (v = 0; v < n; v++) - O[t2[r2 + v]]++; - for (k = g, w = 15; 1 <= w && 0 === O[w]; w--) - ; - if (w < k && (k = w), 0 === w) - return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0; - for (y = 1; y < w && 0 === O[y]; y++) - ; - for (k < y && (k = y), b = z = 1; b <= 15; b++) - if (z <<= 1, (z -= O[b]) < 0) - return -1; - if (0 < z && (0 === e2 || 1 !== w)) - return -1; - for (B[1] = 0, b = 1; b < 15; b++) - B[b + 1] = B[b] + O[b]; - for (v = 0; v < n; v++) - 0 !== t2[r2 + v] && (a[B[t2[r2 + v]]++] = v); - if (d = 0 === e2 ? (A = R = a, 19) : 1 === e2 ? (A = F, I -= 257, R = N, T -= 257, 256) : (A = U, R = P, -1), b = y, c = s, S = v = E = 0, l = -1, f = (C = 1 << (x = k)) - 1, 1 === e2 && 852 < C || 2 === e2 && 592 < C) - return 1; - for (; ; ) { - for (p = b - S, _ = a[v] < d ? (m = 0, a[v]) : a[v] > d ? (m = R[T + a[v]], A[I + a[v]]) : (m = 96, 0), h = 1 << b - S, y = u = 1 << x; i[c + (E >> S) + (u -= h)] = p << 24 | m << 16 | _ | 0, 0 !== u; ) - ; - for (h = 1 << b - 1; E & h; ) - h >>= 1; - if (0 !== h ? (E &= h - 1, E += h) : E = 0, v++, 0 == --O[b]) { - if (b === w) - break; - b = t2[r2 + a[v]]; - } - if (k < b && (E & f) !== l) { - for (0 === S && (S = k), c += y, z = 1 << (x = b - S); x + S < w && !((z -= O[x + S]) <= 0); ) - x++, z <<= 1; - if (C += 1 << x, 1 === e2 && 852 < C || 2 === e2 && 592 < C) - return 1; - i[l = E & f] = k << 24 | x << 16 | c - s | 0; - } - } - return 0 !== E && (i[c + E] = b - S << 24 | 64 << 16 | 0), o.bits = k, 0; - }; - }, { "../utils/common": 41 }], 51: [function(e, t, r) { - "use strict"; - t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; - }, {}], 52: [function(e, t, r) { - "use strict"; - var i = e("../utils/common"), o = 0, h = 1; - function n(e2) { - for (var t2 = e2.length; 0 <= --t2; ) - e2[t2] = 0; - } - var s = 0, a = 29, u = 256, l = u + 1 + a, f = 30, c = 19, _ = 2 * l + 1, g = 15, d = 16, p = 7, m = 256, b = 16, v = 17, y = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z = new Array(2 * (l + 2)); - n(z); - var C = new Array(2 * f); - n(C); - var E = new Array(512); - n(E); - var A = new Array(256); - n(A); - var I = new Array(a); - n(I); - var O, B, R, T = new Array(f); - function D(e2, t2, r2, n2, i2) { - this.static_tree = e2, this.extra_bits = t2, this.extra_base = r2, this.elems = n2, this.max_length = i2, this.has_stree = e2 && e2.length; - } - function F(e2, t2) { - this.dyn_tree = e2, this.max_code = 0, this.stat_desc = t2; - } - function N(e2) { - return e2 < 256 ? E[e2] : E[256 + (e2 >>> 7)]; - } - function U(e2, t2) { - e2.pending_buf[e2.pending++] = 255 & t2, e2.pending_buf[e2.pending++] = t2 >>> 8 & 255; - } - function P(e2, t2, r2) { - e2.bi_valid > d - r2 ? (e2.bi_buf |= t2 << e2.bi_valid & 65535, U(e2, e2.bi_buf), e2.bi_buf = t2 >> d - e2.bi_valid, e2.bi_valid += r2 - d) : (e2.bi_buf |= t2 << e2.bi_valid & 65535, e2.bi_valid += r2); - } - function L(e2, t2, r2) { - P(e2, r2[2 * t2], r2[2 * t2 + 1]); - } - function j(e2, t2) { - for (var r2 = 0; r2 |= 1 & e2, e2 >>>= 1, r2 <<= 1, 0 < --t2; ) - ; - return r2 >>> 1; - } - function Z(e2, t2, r2) { - var n2, i2, s2 = new Array(g + 1), a2 = 0; - for (n2 = 1; n2 <= g; n2++) - s2[n2] = a2 = a2 + r2[n2 - 1] << 1; - for (i2 = 0; i2 <= t2; i2++) { - var o2 = e2[2 * i2 + 1]; - 0 !== o2 && (e2[2 * i2] = j(s2[o2]++, o2)); - } - } - function W(e2) { - var t2; - for (t2 = 0; t2 < l; t2++) - e2.dyn_ltree[2 * t2] = 0; - for (t2 = 0; t2 < f; t2++) - e2.dyn_dtree[2 * t2] = 0; - for (t2 = 0; t2 < c; t2++) - e2.bl_tree[2 * t2] = 0; - e2.dyn_ltree[2 * m] = 1, e2.opt_len = e2.static_len = 0, e2.last_lit = e2.matches = 0; - } - function M(e2) { - 8 < e2.bi_valid ? U(e2, e2.bi_buf) : 0 < e2.bi_valid && (e2.pending_buf[e2.pending++] = e2.bi_buf), e2.bi_buf = 0, e2.bi_valid = 0; - } - function H(e2, t2, r2, n2) { - var i2 = 2 * t2, s2 = 2 * r2; - return e2[i2] < e2[s2] || e2[i2] === e2[s2] && n2[t2] <= n2[r2]; - } - function G(e2, t2, r2) { - for (var n2 = e2.heap[r2], i2 = r2 << 1; i2 <= e2.heap_len && (i2 < e2.heap_len && H(t2, e2.heap[i2 + 1], e2.heap[i2], e2.depth) && i2++, !H(t2, n2, e2.heap[i2], e2.depth)); ) - e2.heap[r2] = e2.heap[i2], r2 = i2, i2 <<= 1; - e2.heap[r2] = n2; - } - function K(e2, t2, r2) { - var n2, i2, s2, a2, o2 = 0; - if (0 !== e2.last_lit) - for (; n2 = e2.pending_buf[e2.d_buf + 2 * o2] << 8 | e2.pending_buf[e2.d_buf + 2 * o2 + 1], i2 = e2.pending_buf[e2.l_buf + o2], o2++, 0 === n2 ? L(e2, i2, t2) : (L(e2, (s2 = A[i2]) + u + 1, t2), 0 !== (a2 = w[s2]) && P(e2, i2 -= I[s2], a2), L(e2, s2 = N(--n2), r2), 0 !== (a2 = k[s2]) && P(e2, n2 -= T[s2], a2)), o2 < e2.last_lit; ) - ; - L(e2, m, t2); - } - function Y(e2, t2) { - var r2, n2, i2, s2 = t2.dyn_tree, a2 = t2.stat_desc.static_tree, o2 = t2.stat_desc.has_stree, h2 = t2.stat_desc.elems, u2 = -1; - for (e2.heap_len = 0, e2.heap_max = _, r2 = 0; r2 < h2; r2++) - 0 !== s2[2 * r2] ? (e2.heap[++e2.heap_len] = u2 = r2, e2.depth[r2] = 0) : s2[2 * r2 + 1] = 0; - for (; e2.heap_len < 2; ) - s2[2 * (i2 = e2.heap[++e2.heap_len] = u2 < 2 ? ++u2 : 0)] = 1, e2.depth[i2] = 0, e2.opt_len--, o2 && (e2.static_len -= a2[2 * i2 + 1]); - for (t2.max_code = u2, r2 = e2.heap_len >> 1; 1 <= r2; r2--) - G(e2, s2, r2); - for (i2 = h2; r2 = e2.heap[1], e2.heap[1] = e2.heap[e2.heap_len--], G(e2, s2, 1), n2 = e2.heap[1], e2.heap[--e2.heap_max] = r2, e2.heap[--e2.heap_max] = n2, s2[2 * i2] = s2[2 * r2] + s2[2 * n2], e2.depth[i2] = (e2.depth[r2] >= e2.depth[n2] ? e2.depth[r2] : e2.depth[n2]) + 1, s2[2 * r2 + 1] = s2[2 * n2 + 1] = i2, e2.heap[1] = i2++, G(e2, s2, 1), 2 <= e2.heap_len; ) - ; - e2.heap[--e2.heap_max] = e2.heap[1], function(e3, t3) { - var r3, n3, i3, s3, a3, o3, h3 = t3.dyn_tree, u3 = t3.max_code, l2 = t3.stat_desc.static_tree, f2 = t3.stat_desc.has_stree, c2 = t3.stat_desc.extra_bits, d2 = t3.stat_desc.extra_base, p2 = t3.stat_desc.max_length, m2 = 0; - for (s3 = 0; s3 <= g; s3++) - e3.bl_count[s3] = 0; - for (h3[2 * e3.heap[e3.heap_max] + 1] = 0, r3 = e3.heap_max + 1; r3 < _; r3++) - p2 < (s3 = h3[2 * h3[2 * (n3 = e3.heap[r3]) + 1] + 1] + 1) && (s3 = p2, m2++), h3[2 * n3 + 1] = s3, u3 < n3 || (e3.bl_count[s3]++, a3 = 0, d2 <= n3 && (a3 = c2[n3 - d2]), o3 = h3[2 * n3], e3.opt_len += o3 * (s3 + a3), f2 && (e3.static_len += o3 * (l2[2 * n3 + 1] + a3))); - if (0 !== m2) { - do { - for (s3 = p2 - 1; 0 === e3.bl_count[s3]; ) - s3--; - e3.bl_count[s3]--, e3.bl_count[s3 + 1] += 2, e3.bl_count[p2]--, m2 -= 2; - } while (0 < m2); - for (s3 = p2; 0 !== s3; s3--) - for (n3 = e3.bl_count[s3]; 0 !== n3; ) - u3 < (i3 = e3.heap[--r3]) || (h3[2 * i3 + 1] !== s3 && (e3.opt_len += (s3 - h3[2 * i3 + 1]) * h3[2 * i3], h3[2 * i3 + 1] = s3), n3--); - } - }(e2, t2), Z(s2, u2, e2.bl_count); - } - function X(e2, t2, r2) { - var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; - for (0 === a2 && (h2 = 138, u2 = 3), t2[2 * (r2 + 1) + 1] = 65535, n2 = 0; n2 <= r2; n2++) - i2 = a2, a2 = t2[2 * (n2 + 1) + 1], ++o2 < h2 && i2 === a2 || (o2 < u2 ? e2.bl_tree[2 * i2] += o2 : 0 !== i2 ? (i2 !== s2 && e2.bl_tree[2 * i2]++, e2.bl_tree[2 * b]++) : o2 <= 10 ? e2.bl_tree[2 * v]++ : e2.bl_tree[2 * y]++, s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4)); - } - function V(e2, t2, r2) { - var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; - for (0 === a2 && (h2 = 138, u2 = 3), n2 = 0; n2 <= r2; n2++) - if (i2 = a2, a2 = t2[2 * (n2 + 1) + 1], !(++o2 < h2 && i2 === a2)) { - if (o2 < u2) - for (; L(e2, i2, e2.bl_tree), 0 != --o2; ) - ; - else - 0 !== i2 ? (i2 !== s2 && (L(e2, i2, e2.bl_tree), o2--), L(e2, b, e2.bl_tree), P(e2, o2 - 3, 2)) : o2 <= 10 ? (L(e2, v, e2.bl_tree), P(e2, o2 - 3, 3)) : (L(e2, y, e2.bl_tree), P(e2, o2 - 11, 7)); - s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4); - } - } - n(T); - var q = false; - function J(e2, t2, r2, n2) { - P(e2, (s << 1) + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { - M(e3), n3 && (U(e3, r3), U(e3, ~r3)), i.arraySet(e3.pending_buf, e3.window, t3, r3, e3.pending), e3.pending += r3; - }(e2, t2, r2, true); - } - r._tr_init = function(e2) { - q || (function() { - var e3, t2, r2, n2, i2, s2 = new Array(g + 1); - for (n2 = r2 = 0; n2 < a - 1; n2++) - for (I[n2] = r2, e3 = 0; e3 < 1 << w[n2]; e3++) - A[r2++] = n2; - for (A[r2 - 1] = n2, n2 = i2 = 0; n2 < 16; n2++) - for (T[n2] = i2, e3 = 0; e3 < 1 << k[n2]; e3++) - E[i2++] = n2; - for (i2 >>= 7; n2 < f; n2++) - for (T[n2] = i2 << 7, e3 = 0; e3 < 1 << k[n2] - 7; e3++) - E[256 + i2++] = n2; - for (t2 = 0; t2 <= g; t2++) - s2[t2] = 0; - for (e3 = 0; e3 <= 143; ) - z[2 * e3 + 1] = 8, e3++, s2[8]++; - for (; e3 <= 255; ) - z[2 * e3 + 1] = 9, e3++, s2[9]++; - for (; e3 <= 279; ) - z[2 * e3 + 1] = 7, e3++, s2[7]++; - for (; e3 <= 287; ) - z[2 * e3 + 1] = 8, e3++, s2[8]++; - for (Z(z, l + 1, s2), e3 = 0; e3 < f; e3++) - C[2 * e3 + 1] = 5, C[2 * e3] = j(e3, 5); - O = new D(z, w, u + 1, l, g), B = new D(C, k, 0, f, g), R = new D(new Array(0), x, 0, c, p); - }(), q = true), e2.l_desc = new F(e2.dyn_ltree, O), e2.d_desc = new F(e2.dyn_dtree, B), e2.bl_desc = new F(e2.bl_tree, R), e2.bi_buf = 0, e2.bi_valid = 0, W(e2); - }, r._tr_stored_block = J, r._tr_flush_block = function(e2, t2, r2, n2) { - var i2, s2, a2 = 0; - 0 < e2.level ? (2 === e2.strm.data_type && (e2.strm.data_type = function(e3) { - var t3, r3 = 4093624447; - for (t3 = 0; t3 <= 31; t3++, r3 >>>= 1) - if (1 & r3 && 0 !== e3.dyn_ltree[2 * t3]) - return o; - if (0 !== e3.dyn_ltree[18] || 0 !== e3.dyn_ltree[20] || 0 !== e3.dyn_ltree[26]) - return h; - for (t3 = 32; t3 < u; t3++) - if (0 !== e3.dyn_ltree[2 * t3]) - return h; - return o; - }(e2)), Y(e2, e2.l_desc), Y(e2, e2.d_desc), a2 = function(e3) { - var t3; - for (X(e3, e3.dyn_ltree, e3.l_desc.max_code), X(e3, e3.dyn_dtree, e3.d_desc.max_code), Y(e3, e3.bl_desc), t3 = c - 1; 3 <= t3 && 0 === e3.bl_tree[2 * S[t3] + 1]; t3--) - ; - return e3.opt_len += 3 * (t3 + 1) + 5 + 5 + 4, t3; - }(e2), i2 = e2.opt_len + 3 + 7 >>> 3, (s2 = e2.static_len + 3 + 7 >>> 3) <= i2 && (i2 = s2)) : i2 = s2 = r2 + 5, r2 + 4 <= i2 && -1 !== t2 ? J(e2, t2, r2, n2) : 4 === e2.strategy || s2 === i2 ? (P(e2, 2 + (n2 ? 1 : 0), 3), K(e2, z, C)) : (P(e2, 4 + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { - var i3; - for (P(e3, t3 - 257, 5), P(e3, r3 - 1, 5), P(e3, n3 - 4, 4), i3 = 0; i3 < n3; i3++) - P(e3, e3.bl_tree[2 * S[i3] + 1], 3); - V(e3, e3.dyn_ltree, t3 - 1), V(e3, e3.dyn_dtree, r3 - 1); - }(e2, e2.l_desc.max_code + 1, e2.d_desc.max_code + 1, a2 + 1), K(e2, e2.dyn_ltree, e2.dyn_dtree)), W(e2), n2 && M(e2); - }, r._tr_tally = function(e2, t2, r2) { - return e2.pending_buf[e2.d_buf + 2 * e2.last_lit] = t2 >>> 8 & 255, e2.pending_buf[e2.d_buf + 2 * e2.last_lit + 1] = 255 & t2, e2.pending_buf[e2.l_buf + e2.last_lit] = 255 & r2, e2.last_lit++, 0 === t2 ? e2.dyn_ltree[2 * r2]++ : (e2.matches++, t2--, e2.dyn_ltree[2 * (A[r2] + u + 1)]++, e2.dyn_dtree[2 * N(t2)]++), e2.last_lit === e2.lit_bufsize - 1; - }, r._tr_align = function(e2) { - P(e2, 2, 3), L(e2, m, z), function(e3) { - 16 === e3.bi_valid ? (U(e3, e3.bi_buf), e3.bi_buf = 0, e3.bi_valid = 0) : 8 <= e3.bi_valid && (e3.pending_buf[e3.pending++] = 255 & e3.bi_buf, e3.bi_buf >>= 8, e3.bi_valid -= 8); - }(e2); - }; - }, { "../utils/common": 41 }], 53: [function(e, t, r) { - "use strict"; - t.exports = function() { - this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; - }; - }, {}], 54: [function(e, t, r) { - (function(e2) { - !function(r2, n) { - "use strict"; - if (!r2.setImmediate) { - var i, s, t2, a, o = 1, h = {}, u = false, l = r2.document, e3 = Object.getPrototypeOf && Object.getPrototypeOf(r2); - e3 = e3 && e3.setTimeout ? e3 : r2, i = "[object process]" === {}.toString.call(r2.process) ? function(e4) { - process.nextTick(function() { - c(e4); - }); - } : function() { - if (r2.postMessage && !r2.importScripts) { - var e4 = true, t3 = r2.onmessage; - return r2.onmessage = function() { - e4 = false; - }, r2.postMessage("", "*"), r2.onmessage = t3, e4; - } - }() ? (a = "setImmediate$" + Math.random() + "$", r2.addEventListener ? r2.addEventListener("message", d, false) : r2.attachEvent("onmessage", d), function(e4) { - r2.postMessage(a + e4, "*"); - }) : r2.MessageChannel ? ((t2 = new MessageChannel()).port1.onmessage = function(e4) { - c(e4.data); - }, function(e4) { - t2.port2.postMessage(e4); - }) : l && "onreadystatechange" in l.createElement("script") ? (s = l.documentElement, function(e4) { - var t3 = l.createElement("script"); - t3.onreadystatechange = function() { - c(e4), t3.onreadystatechange = null, s.removeChild(t3), t3 = null; - }, s.appendChild(t3); - }) : function(e4) { - setTimeout(c, 0, e4); - }, e3.setImmediate = function(e4) { - "function" != typeof e4 && (e4 = new Function("" + e4)); - for (var t3 = new Array(arguments.length - 1), r3 = 0; r3 < t3.length; r3++) - t3[r3] = arguments[r3 + 1]; - var n2 = { callback: e4, args: t3 }; - return h[o] = n2, i(o), o++; - }, e3.clearImmediate = f; - } - function f(e4) { - delete h[e4]; - } - function c(e4) { - if (u) - setTimeout(c, 0, e4); - else { - var t3 = h[e4]; - if (t3) { - u = true; - try { - !function(e5) { - var t4 = e5.callback, r3 = e5.args; - switch (r3.length) { - case 0: - t4(); - break; - case 1: - t4(r3[0]); - break; - case 2: - t4(r3[0], r3[1]); - break; - case 3: - t4(r3[0], r3[1], r3[2]); - break; - default: - t4.apply(n, r3); - } - }(t3); - } finally { - f(e4), u = false; - } - } - } - } - function d(e4) { - e4.source === r2 && "string" == typeof e4.data && 0 === e4.data.indexOf(a) && c(+e4.data.slice(a.length)); - } - }("undefined" == typeof self ? void 0 === e2 ? this : e2 : self); - }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); - }, {}] }, {}, [10])(10); - }); - } - }); - - // ../../node_modules/validate.js/validate.js - var require_validate = __commonJS({ - "../../node_modules/validate.js/validate.js"(exports, module) { - (function(exports2, module2, define2) { - "use strict"; - var validate3 = function(attributes, constraints, options) { - options = v.extend({}, v.options, options); - var results = v.runValidations(attributes, constraints, options), attr, validator; - if (results.some(function(r) { - return v.isPromise(r.error); - })) { - throw new Error("Use validate.async if you want support for promises"); - } - return validate3.processValidationResults(results, options); - }; - var v = validate3; - v.extend = function(obj) { - [].slice.call(arguments, 1).forEach(function(source) { - for (var attr in source) { - obj[attr] = source[attr]; - } - }); - return obj; - }; - v.extend(validate3, { - // This is the version of the library as a semver. - // The toString function will allow it to be coerced into a string - version: { - major: 0, - minor: 13, - patch: 1, - metadata: null, - toString: function() { - var version2 = v.format("%{major}.%{minor}.%{patch}", v.version); - if (!v.isEmpty(v.version.metadata)) { - version2 += "+" + v.version.metadata; - } - return version2; - } - }, - // Below is the dependencies that are used in validate.js - // The constructor of the Promise implementation. - // If you are using Q.js, RSVP or any other A+ compatible implementation - // override this attribute to be the constructor of that promise. - // Since jQuery promises aren't A+ compatible they won't work. - Promise: typeof Promise !== "undefined" ? Promise : ( - /* istanbul ignore next */ - null - ), - EMPTY_STRING_REGEXP: /^\s*$/, - // Runs the validators specified by the constraints object. - // Will return an array of the format: - // [{attribute: "", error: ""}, ...] - runValidations: function(attributes, constraints, options) { - var results = [], attr, validatorName, value, validators, validator, validatorOptions, error; - if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) { - attributes = v.collectFormValues(attributes); - } - for (attr in constraints) { - value = v.getDeepObjectValue(attributes, attr); - validators = v.result(constraints[attr], value, attributes, attr, options, constraints); - for (validatorName in validators) { - validator = v.validators[validatorName]; - if (!validator) { - error = v.format("Unknown validator %{name}", { name: validatorName }); - throw new Error(error); - } - validatorOptions = validators[validatorName]; - validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints); - if (!validatorOptions) { - continue; - } - results.push({ - attribute: attr, - value, - validator: validatorName, - globalOptions: options, - attributes, - options: validatorOptions, - error: validator.call( - validator, - value, - validatorOptions, - attr, - attributes, - options - ) - }); - } - } - return results; - }, - // Takes the output from runValidations and converts it to the correct - // output format. - processValidationResults: function(errors, options) { - errors = v.pruneEmptyErrors(errors, options); - errors = v.expandMultipleErrors(errors, options); - errors = v.convertErrorMessages(errors, options); - var format = options.format || "grouped"; - if (typeof v.formatters[format] === "function") { - errors = v.formatters[format](errors); - } else { - throw new Error(v.format("Unknown format %{format}", options)); - } - return v.isEmpty(errors) ? void 0 : errors; - }, - // Runs the validations with support for promises. - // This function will return a promise that is settled when all the - // validation promises have been completed. - // It can be called even if no validations returned a promise. - async: function(attributes, constraints, options) { - options = v.extend({}, v.async.options, options); - var WrapErrors = options.wrapErrors || function(errors) { - return errors; - }; - if (options.cleanAttributes !== false) { - attributes = v.cleanAttributes(attributes, constraints); - } - var results = v.runValidations(attributes, constraints, options); - return new v.Promise(function(resolve, reject) { - v.waitForResults(results).then(function() { - var errors = v.processValidationResults(results, options); - if (errors) { - reject(new WrapErrors(errors, options, attributes, constraints)); - } else { - resolve(attributes); - } - }, function(err) { - reject(err); - }); - }); - }, - single: function(value, constraints, options) { - options = v.extend({}, v.single.options, options, { - format: "flat", - fullMessages: false - }); - return v({ single: value }, { single: constraints }, options); - }, - // Returns a promise that is resolved when all promises in the results array - // are settled. The promise returned from this function is always resolved, - // never rejected. - // This function modifies the input argument, it replaces the promises - // with the value returned from the promise. - waitForResults: function(results) { - return results.reduce(function(memo, result) { - if (!v.isPromise(result.error)) { - return memo; - } - return memo.then(function() { - return result.error.then(function(error) { - result.error = error || null; - }); - }); - }, new v.Promise(function(r) { - r(); - })); - }, - // If the given argument is a call: function the and: function return the value - // otherwise just return the value. Additional arguments will be passed as - // arguments to the function. - // Example: - // ``` - // result('foo') // 'foo' - // result(Math.max, 1, 2) // 2 - // ``` - result: function(value) { - var args = [].slice.call(arguments, 1); - if (typeof value === "function") { - value = value.apply(null, args); - } - return value; - }, - // Checks if the value is a number. This function does not consider NaN a - // number like many other `isNumber` functions do. - isNumber: function(value) { - return typeof value === "number" && !isNaN(value); - }, - // Returns false if the object is not a function - isFunction: function(value) { - return typeof value === "function"; - }, - // A simple check to verify that the value is an integer. Uses `isNumber` - // and a simple modulo check. - isInteger: function(value) { - return v.isNumber(value) && value % 1 === 0; - }, - // Checks if the value is a boolean - isBoolean: function(value) { - return typeof value === "boolean"; - }, - // Uses the `Object` function to check if the given argument is an object. - isObject: function(obj) { - return obj === Object(obj); - }, - // Simply checks if the object is an instance of a date - isDate: function(obj) { - return obj instanceof Date; - }, - // Returns false if the object is `null` of `undefined` - isDefined: function(obj) { - return obj !== null && obj !== void 0; - }, - // Checks if the given argument is a promise. Anything with a `then` - // function is considered a promise. - isPromise: function(p) { - return !!p && v.isFunction(p.then); - }, - isJqueryElement: function(o) { - return o && v.isString(o.jquery); - }, - isDomElement: function(o) { - if (!o) { - return false; - } - if (!o.querySelectorAll || !o.querySelector) { - return false; - } - if (v.isObject(document) && o === document) { - return true; - } - if (typeof HTMLElement === "object") { - return o instanceof HTMLElement; - } else { - return o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string"; - } - }, - isEmpty: function(value) { - var attr; - if (!v.isDefined(value)) { - return true; - } - if (v.isFunction(value)) { - return false; - } - if (v.isString(value)) { - return v.EMPTY_STRING_REGEXP.test(value); - } - if (v.isArray(value)) { - return value.length === 0; - } - if (v.isDate(value)) { - return false; - } - if (v.isObject(value)) { - for (attr in value) { - return false; - } - return true; - } - return false; - }, - // Formats the specified strings with the given values like so: - // ``` - // format("Foo: %{foo}", {foo: "bar"}) // "Foo bar" - // ``` - // If you want to write %{...} without having it replaced simply - // prefix it with % like this `Foo: %%{foo}` and it will be returned - // as `"Foo: %{foo}"` - format: v.extend(function(str, vals) { - if (!v.isString(str)) { - return str; - } - return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) { - if (m1 === "%") { - return "%{" + m2 + "}"; - } else { - return String(vals[m2]); - } - }); - }, { - // Finds %{key} style patterns in the given string - FORMAT_REGEXP: /(%?)%\{([^\}]+)\}/g - }), - // "Prettifies" the given string. - // Prettifying means replacing [.\_-] with spaces as well as splitting - // camel case words. - prettify: function(str) { - if (v.isNumber(str)) { - if (str * 100 % 1 === 0) { - return "" + str; - } else { - return parseFloat(Math.round(str * 100) / 100).toFixed(2); - } - } - if (v.isArray(str)) { - return str.map(function(s) { - return v.prettify(s); - }).join(", "); - } - if (v.isObject(str)) { - if (!v.isDefined(str.toString)) { - return JSON.stringify(str); - } - return str.toString(); - } - str = "" + str; - return str.replace(/([^\s])\.([^\s])/g, "$1 $2").replace(/\\+/g, "").replace(/[_-]/g, " ").replace(/([a-z])([A-Z])/g, function(m0, m1, m2) { - return "" + m1 + " " + m2.toLowerCase(); - }).toLowerCase(); - }, - stringifyValue: function(value, options) { - var prettify = options && options.prettify || v.prettify; - return prettify(value); - }, - isString: function(value) { - return typeof value === "string"; - }, - isArray: function(value) { - return {}.toString.call(value) === "[object Array]"; - }, - // Checks if the object is a hash, which is equivalent to an object that - // is neither an array nor a function. - isHash: function(value) { - return v.isObject(value) && !v.isArray(value) && !v.isFunction(value); - }, - contains: function(obj, value) { - if (!v.isDefined(obj)) { - return false; - } - if (v.isArray(obj)) { - return obj.indexOf(value) !== -1; - } - return value in obj; - }, - unique: function(array) { - if (!v.isArray(array)) { - return array; - } - return array.filter(function(el, index, array2) { - return array2.indexOf(el) == index; - }); - }, - forEachKeyInKeypath: function(object, keypath, callback) { - if (!v.isString(keypath)) { - return void 0; - } - var key = "", i, escape = false; - for (i = 0; i < keypath.length; ++i) { - switch (keypath[i]) { - case ".": - if (escape) { - escape = false; - key += "."; - } else { - object = callback(object, key, false); - key = ""; - } - break; - case "\\": - if (escape) { - escape = false; - key += "\\"; - } else { - escape = true; - } - break; - default: - escape = false; - key += keypath[i]; - break; - } - } - return callback(object, key, true); - }, - getDeepObjectValue: function(obj, keypath) { - if (!v.isObject(obj)) { - return void 0; - } - return v.forEachKeyInKeypath(obj, keypath, function(obj2, key) { - if (v.isObject(obj2)) { - return obj2[key]; - } - }); - }, - // This returns an object with all the values of the form. - // It uses the input name as key and the value as value - // So for example this: - // - // would return: - // {email: "foo@bar.com"} - collectFormValues: function(form, options) { - var values = {}, i, j, input, inputs, option, value; - if (v.isJqueryElement(form)) { - form = form[0]; - } - if (!form) { - return values; - } - options = options || {}; - inputs = form.querySelectorAll("input[name], textarea[name]"); - for (i = 0; i < inputs.length; ++i) { - input = inputs.item(i); - if (v.isDefined(input.getAttribute("data-ignored"))) { - continue; - } - var name = input.name.replace(/\./g, "\\\\."); - value = v.sanitizeFormValue(input.value, options); - if (input.type === "number") { - value = value ? +value : null; - } else if (input.type === "checkbox") { - if (input.attributes.value) { - if (!input.checked) { - value = values[name] || null; - } - } else { - value = input.checked; - } - } else if (input.type === "radio") { - if (!input.checked) { - value = values[name] || null; - } - } - values[name] = value; - } - inputs = form.querySelectorAll("select[name]"); - for (i = 0; i < inputs.length; ++i) { - input = inputs.item(i); - if (v.isDefined(input.getAttribute("data-ignored"))) { - continue; - } - if (input.multiple) { - value = []; - for (j in input.options) { - option = input.options[j]; - if (option && option.selected) { - value.push(v.sanitizeFormValue(option.value, options)); - } - } - } else { - var _val = typeof input.options[input.selectedIndex] !== "undefined" ? input.options[input.selectedIndex].value : ( - /* istanbul ignore next */ - "" - ); - value = v.sanitizeFormValue(_val, options); - } - values[input.name] = value; - } - return values; - }, - sanitizeFormValue: function(value, options) { - if (options.trim && v.isString(value)) { - value = value.trim(); - } - if (options.nullify !== false && value === "") { - return null; - } - return value; - }, - capitalize: function(str) { - if (!v.isString(str)) { - return str; - } - return str[0].toUpperCase() + str.slice(1); - }, - // Remove all errors who's error attribute is empty (null or undefined) - pruneEmptyErrors: function(errors) { - return errors.filter(function(error) { - return !v.isEmpty(error.error); - }); - }, - // In - // [{error: ["err1", "err2"], ...}] - // Out - // [{error: "err1", ...}, {error: "err2", ...}] - // - // All attributes in an error with multiple messages are duplicated - // when expanding the errors. - expandMultipleErrors: function(errors) { - var ret = []; - errors.forEach(function(error) { - if (v.isArray(error.error)) { - error.error.forEach(function(msg) { - ret.push(v.extend({}, error, { error: msg })); - }); - } else { - ret.push(error); - } - }); - return ret; - }, - // Converts the error mesages by prepending the attribute name unless the - // message is prefixed by ^ - convertErrorMessages: function(errors, options) { - options = options || {}; - var ret = [], prettify = options.prettify || v.prettify; - errors.forEach(function(errorInfo) { - var error = v.result( - errorInfo.error, - errorInfo.value, - errorInfo.attribute, - errorInfo.options, - errorInfo.attributes, - errorInfo.globalOptions - ); - if (!v.isString(error)) { - ret.push(errorInfo); - return; - } - if (error[0] === "^") { - error = error.slice(1); - } else if (options.fullMessages !== false) { - error = v.capitalize(prettify(errorInfo.attribute)) + " " + error; - } - error = error.replace(/\\\^/g, "^"); - error = v.format(error, { - value: v.stringifyValue(errorInfo.value, options) - }); - ret.push(v.extend({}, errorInfo, { error })); - }); - return ret; - }, - // In: - // [{attribute: "", ...}] - // Out: - // {"": [{attribute: "", ...}]} - groupErrorsByAttribute: function(errors) { - var ret = {}; - errors.forEach(function(error) { - var list = ret[error.attribute]; - if (list) { - list.push(error); - } else { - ret[error.attribute] = [error]; - } - }); - return ret; - }, - // In: - // [{error: "", ...}, {error: "", ...}] - // Out: - // ["", ""] - flattenErrorsToArray: function(errors) { - return errors.map(function(error) { - return error.error; - }).filter(function(value, index, self2) { - return self2.indexOf(value) === index; - }); - }, - cleanAttributes: function(attributes, whitelist) { - function whitelistCreator(obj, key, last) { - if (v.isObject(obj[key])) { - return obj[key]; - } - return obj[key] = last ? true : {}; - } - function buildObjectWhitelist(whitelist2) { - var ow = {}, lastObject, attr; - for (attr in whitelist2) { - if (!whitelist2[attr]) { - continue; - } - v.forEachKeyInKeypath(ow, attr, whitelistCreator); - } - return ow; - } - function cleanRecursive(attributes2, whitelist2) { - if (!v.isObject(attributes2)) { - return attributes2; - } - var ret = v.extend({}, attributes2), w, attribute; - for (attribute in attributes2) { - w = whitelist2[attribute]; - if (v.isObject(w)) { - ret[attribute] = cleanRecursive(ret[attribute], w); - } else if (!w) { - delete ret[attribute]; - } - } - return ret; - } - if (!v.isObject(whitelist) || !v.isObject(attributes)) { - return {}; - } - whitelist = buildObjectWhitelist(whitelist); - return cleanRecursive(attributes, whitelist); - }, - exposeModule: function(validate4, root, exports3, module3, define3) { - if (exports3) { - if (module3 && module3.exports) { - exports3 = module3.exports = validate4; - } - exports3.validate = validate4; - } else { - root.validate = validate4; - if (validate4.isFunction(define3) && define3.amd) { - define3([], function() { - return validate4; - }); - } - } - }, - warn: function(msg) { - if (typeof console !== "undefined" && console.warn) { - console.warn("[validate.js] " + msg); - } - }, - error: function(msg) { - if (typeof console !== "undefined" && console.error) { - console.error("[validate.js] " + msg); - } - } - }); - validate3.validators = { - // Presence validates that the value isn't empty - presence: function(value, options) { - options = v.extend({}, this.options, options); - if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) { - return options.message || this.message || "can't be blank"; - } - }, - length: function(value, options, attribute) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var is = options.is, maximum = options.maximum, minimum = options.minimum, tokenizer = options.tokenizer || function(val) { - return val; - }, err, errors = []; - value = tokenizer(value); - var length = value.length; - if (!v.isNumber(length)) { - return options.message || this.notValid || "has an incorrect length"; - } - if (v.isNumber(is) && length !== is) { - err = options.wrongLength || this.wrongLength || "is the wrong length (should be %{count} characters)"; - errors.push(v.format(err, { count: is })); - } - if (v.isNumber(minimum) && length < minimum) { - err = options.tooShort || this.tooShort || "is too short (minimum is %{count} characters)"; - errors.push(v.format(err, { count: minimum })); - } - if (v.isNumber(maximum) && length > maximum) { - err = options.tooLong || this.tooLong || "is too long (maximum is %{count} characters)"; - errors.push(v.format(err, { count: maximum })); - } - if (errors.length > 0) { - return options.message || errors; - } - }, - numericality: function(value, options, attribute, attributes, globalOptions) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var errors = [], name, count, checks = { - greaterThan: function(v2, c) { - return v2 > c; - }, - greaterThanOrEqualTo: function(v2, c) { - return v2 >= c; - }, - equalTo: function(v2, c) { - return v2 === c; - }, - lessThan: function(v2, c) { - return v2 < c; - }, - lessThanOrEqualTo: function(v2, c) { - return v2 <= c; - }, - divisibleBy: function(v2, c) { - return v2 % c === 0; - } - }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; - if (v.isString(value) && options.strict) { - var pattern = "^-?(0|[1-9]\\d*)"; - if (!options.onlyInteger) { - pattern += "(\\.\\d+)?"; - } - pattern += "$"; - if (!new RegExp(pattern).test(value)) { - return options.message || options.notValid || this.notValid || this.message || "must be a valid number"; - } - } - if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) { - value = +value; - } - if (!v.isNumber(value)) { - return options.message || options.notValid || this.notValid || this.message || "is not a number"; - } - if (options.onlyInteger && !v.isInteger(value)) { - return options.message || options.notInteger || this.notInteger || this.message || "must be an integer"; - } - for (name in checks) { - count = options[name]; - if (v.isNumber(count) && !checks[name](value, count)) { - var key = "not" + v.capitalize(name); - var msg = options[key] || this[key] || this.message || "must be %{type} %{count}"; - errors.push(v.format(msg, { - count, - type: prettify(name) - })); - } - } - if (options.odd && value % 2 !== 1) { - errors.push(options.notOdd || this.notOdd || this.message || "must be odd"); - } - if (options.even && value % 2 !== 0) { - errors.push(options.notEven || this.notEven || this.message || "must be even"); - } - if (errors.length) { - return options.message || errors; - } - }, - datetime: v.extend(function(value, options) { - if (!v.isFunction(this.parse) || !v.isFunction(this.format)) { - throw new Error("Both the parse and format functions needs to be set to use the datetime/date validator"); - } - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var err, errors = [], earliest = options.earliest ? this.parse(options.earliest, options) : NaN, latest = options.latest ? this.parse(options.latest, options) : NaN; - value = this.parse(value, options); - if (isNaN(value) || options.dateOnly && value % 864e5 !== 0) { - err = options.notValid || options.message || this.notValid || "must be a valid date"; - return v.format(err, { value: arguments[0] }); - } - if (!isNaN(earliest) && value < earliest) { - err = options.tooEarly || options.message || this.tooEarly || "must be no earlier than %{date}"; - err = v.format(err, { - value: this.format(value, options), - date: this.format(earliest, options) - }); - errors.push(err); - } - if (!isNaN(latest) && value > latest) { - err = options.tooLate || options.message || this.tooLate || "must be no later than %{date}"; - err = v.format(err, { - date: this.format(latest, options), - value: this.format(value, options) - }); - errors.push(err); - } - if (errors.length) { - return v.unique(errors); - } - }, { - parse: null, - format: null - }), - date: function(value, options) { - options = v.extend({}, options, { dateOnly: true }); - return v.validators.datetime.call(v.validators.datetime, value, options); - }, - format: function(value, options) { - if (v.isString(options) || options instanceof RegExp) { - options = { pattern: options }; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is invalid", pattern = options.pattern, match; - if (!v.isDefined(value)) { - return; - } - if (!v.isString(value)) { - return message; - } - if (v.isString(pattern)) { - pattern = new RegExp(options.pattern, options.flags); - } - match = pattern.exec(value); - if (!match || match[0].length != value.length) { - return message; - } - }, - inclusion: function(value, options) { - if (!v.isDefined(value)) { - return; - } - if (v.isArray(options)) { - options = { within: options }; - } - options = v.extend({}, this.options, options); - if (v.contains(options.within, value)) { - return; - } - var message = options.message || this.message || "^%{value} is not included in the list"; - return v.format(message, { value }); - }, - exclusion: function(value, options) { - if (!v.isDefined(value)) { - return; - } - if (v.isArray(options)) { - options = { within: options }; - } - options = v.extend({}, this.options, options); - if (!v.contains(options.within, value)) { - return; - } - var message = options.message || this.message || "^%{value} is restricted"; - if (v.isString(options.within[value])) { - value = options.within[value]; - } - return v.format(message, { value }); - }, - email: v.extend(function(value, options) { - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not a valid email"; - if (!v.isDefined(value)) { - return; - } - if (!v.isString(value)) { - return message; - } - if (!this.PATTERN.exec(value)) { - return message; - } - }, { - PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i - }), - equality: function(value, options, attribute, attributes, globalOptions) { - if (!v.isDefined(value)) { - return; - } - if (v.isString(options)) { - options = { attribute: options }; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not equal to %{attribute}"; - if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) { - throw new Error("The attribute must be a non empty string"); - } - var otherValue = v.getDeepObjectValue(attributes, options.attribute), comparator = options.comparator || function(v1, v2) { - return v1 === v2; - }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; - if (!comparator(value, otherValue, options, attribute, attributes)) { - return v.format(message, { attribute: prettify(options.attribute) }); - } - }, - // A URL validator that is used to validate URLs with the ability to - // restrict schemes and some domains. - url: function(value, options) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not a valid url", schemes = options.schemes || this.schemes || ["http", "https"], allowLocal = options.allowLocal || this.allowLocal || false, allowDataUrl = options.allowDataUrl || this.allowDataUrl || false; - if (!v.isString(value)) { - return message; - } - var regex = "^(?:(?:" + schemes.join("|") + ")://)(?:\\S+(?::\\S*)?@)?(?:"; - var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"; - if (allowLocal) { - tld += "?"; - } else { - regex += // IP address exclusion - // private & local networks - "(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})"; - } - regex += // IP address dotted notation octets - // excludes loopback network 0.0.0.0 - // excludes reserved space >= 224.0.0.0 - // excludes network & broacast addresses - // (first & last IP address of each class) - "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + tld + ")(?::\\d{2,5})?(?:[/?#]\\S*)?$"; - if (allowDataUrl) { - var mediaType = "\\w+\\/[-+.\\w]+(?:;[\\w=]+)*"; - var urlchar = "[A-Za-z0-9-_.!~\\*'();\\/?:@&=+$,%]*"; - var dataurl = "data:(?:" + mediaType + ")?(?:;base64)?," + urlchar; - regex = "(?:" + regex + ")|(?:^" + dataurl + "$)"; - } - var PATTERN = new RegExp(regex, "i"); - if (!PATTERN.exec(value)) { - return message; - } - }, - type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) { - if (v.isString(originalOptions)) { - originalOptions = { type: originalOptions }; - } - if (!v.isDefined(value)) { - return; - } - var options = v.extend({}, this.options, originalOptions); - var type = options.type; - if (!v.isDefined(type)) { - throw new Error("No type was specified"); - } - var check; - if (v.isFunction(type)) { - check = type; - } else { - check = this.types[type]; - } - if (!v.isFunction(check)) { - throw new Error("validate.validators.type.types." + type + " must be a function."); - } - if (!check(value, options, attribute, attributes, globalOptions)) { - var message = originalOptions.message || this.messages[type] || this.message || options.message || (v.isFunction(type) ? "must be of the correct type" : "must be of type %{type}"); - if (v.isFunction(message)) { - message = message(value, originalOptions, attribute, attributes, globalOptions); - } - return v.format(message, { attribute: v.prettify(attribute), type }); - } - }, { - types: { - object: function(value) { - return v.isObject(value) && !v.isArray(value); - }, - array: v.isArray, - integer: v.isInteger, - number: v.isNumber, - string: v.isString, - date: v.isDate, - boolean: v.isBoolean - }, - messages: {} - }) - }; - validate3.formatters = { - detailed: function(errors) { - return errors; - }, - flat: v.flattenErrorsToArray, - grouped: function(errors) { - var attr; - errors = v.groupErrorsByAttribute(errors); - for (attr in errors) { - errors[attr] = v.flattenErrorsToArray(errors[attr]); - } - return errors; - }, - constraint: function(errors) { - var attr; - errors = v.groupErrorsByAttribute(errors); - for (attr in errors) { - errors[attr] = errors[attr].map(function(result) { - return result.validator; - }).sort(); - } - return errors; - } - }; - validate3.exposeModule(validate3, this, exports2, module2, define2); - }).call( - exports, - typeof exports !== "undefined" ? ( - /* istanbul ignore next */ - exports - ) : null, - typeof module !== "undefined" ? ( - /* istanbul ignore next */ - module - ) : null, - typeof define !== "undefined" ? ( - /* istanbul ignore next */ - define - ) : null - ); - } - }); - - // src/js/biometric-kyc.js - var import_jszip = __toESM(require_jszip_min(), 1); - var import_validate2 = __toESM(require_validate(), 1); - - // ../components/smart-camera-web.js - var VERSION = "1.0.2"; - var DEFAULT_NO_OF_LIVENESS_FRAMES = 8; - var PORTRAIT_ID_PREVIEW_WIDTH = 396; - var PORTRAIT_ID_PREVIEW_HEIGHT = 527; - function isSamsungMultiCameraDevice() { - const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\d{3}/); - if (!matchedModelNumber) { - return false; - } - const modelNumber = parseInt(matchedModelNumber[0].match(/\d{3}/)[0], 10); - const smallerModelNumber = 970; - return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber; - } - function getLivenessFramesIndices(totalNoOfFrames, numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES) { - const selectedFrames = []; - if (totalNoOfFrames < numberOfFramesRequired) { - throw new Error("SmartCameraWeb: Minimum required no of frames is ", numberOfFramesRequired); - } - const frameDivisor = numberOfFramesRequired - 1; - const frameInterval = Math.floor(totalNoOfFrames / frameDivisor); - let replacementFrameIndex = 1; - for (let i = 0; i < totalNoOfFrames; i += frameInterval) { - if (selectedFrames.length < 8) { - selectedFrames.push(i); - } else { - selectedFrames[replacementFrameIndex] = i; - selectedFrames.sort((a, b) => a - b); - replacementFrameIndex += 1; - } - } - const lastFrameIndex = totalNoOfFrames - 1; - if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) { - selectedFrames.push(lastFrameIndex); - } - return selectedFrames; - } - var SmartFileUpload = class _SmartFileUpload { - static memoryLimit = 1024e4; - static supportedTypes = ["image/jpeg", "image/png"]; - static getHumanSize(numberOfBytes) { - const units = [ - "B", - "kB", - "MB", - "GB", - "TB", - "PB", - "EB", - "ZB", - "YB" - ]; - const exponent = Math.min( - Math.floor(Math.log(numberOfBytes) / Math.log(1024)), - units.length - 1 - ); - const approx = numberOfBytes / 1024 ** exponent; - const output = exponent === 0 ? `${numberOfBytes} bytes` : `${approx.toFixed(0)} ${units[exponent]}`; - return output; - } - static getData(file) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = (e) => { - resolve(e.target.result); - }; - reader.onerror = () => { - reject(new Error("An error occurred reading the file. Please check the file, and try again")); - }; - reader.readAsDataURL(file); - }); - } - static async retrieve(files) { - if (files.length > 1) { - throw new Error("Only one file upload is permitted at a time"); - } - const file = files[0]; - if (!_SmartFileUpload.supportedTypes.includes(file.type)) { - throw new Error("Unsupported file format. Please ensure that you are providing a JPG or PNG image"); - } - if (file.size > _SmartFileUpload.memoryLimit) { - throw new Error(`${file.name} is too large. Please ensure that the file is less than ${_SmartFileUpload.getHumanSize(_SmartFileUpload.memoryLimit)}.`); - } - const imageAsDataUrl = await _SmartFileUpload.getData(file); - return imageAsDataUrl; - } - }; - function scwTemplateString() { - return ` - - - - - - - - - - - - - - - -
-

-

-
- -
- ${this.showNavigation ? ` - - ` : ""} -
-

- We need access to your camera so that we can take selfie and proof-of-life images. -

- - - - ${this.hideAttribution ? "" : ` - - `} -
-
- - - - - - - - - - - - - - - - - - - - - - `; - } - var PoweredBySmileId = class extends HTMLElement { - constructor() { - super(); - const template = document.createElement("template"); - template.innerHTML = ` -

- - - - - - - - - - - - - - - - - - - -

- `; - this.attachShadow({ mode: "open" }).appendChild(template.content.cloneNode(true)); - } - }; - function hasMoreThanNColors(data, n = 16) { - const colors = /* @__PURE__ */ new Set(); - for (let i = 0; i < Math.min(data.length, 1e4); i += 4) { - colors.add(data[i] << 16 | data[i + 1] << 8 | data[i + 2]); - if (colors.size > n) { - return true; - } - } - return false; - } - window.customElements.define("powered-by-smile-id", PoweredBySmileId); - var SmartCameraWeb = class extends HTMLElement { - constructor() { - super(); - this.scwTemplateString = scwTemplateString.bind(this); - this.render = () => this.scwTemplateString(); - this.attachShadow({ mode: "open" }); - this.activeScreen = null; - } - setActiveScreen(element) { - this.activeScreen.hidden = true; - element.hidden = false; - this.activeScreen = element; - } - connectedCallback() { - this.shadowRoot.innerHTML = this.render(); - if ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices) { - this.setUpEventListeners(); - } else { - const heading = document.createElement("h1"); - heading.classList.add("error-message"); - heading.textContent = "Your browser does not support this integration"; - this.shadowRoot.innerHTML = heading; - } - } - disconnectedCallback() { - if (this.activeScreen) { - this.activeScreen.hidden = true; - } - this.activeScreen = null; - this.shadowRoot.innerHTML = ""; - } - static get observedAttributes() { - return ["document-capture-modes", "document-type", "hide-back-to-host", "show-navigation"]; - } - attributeChangedCallback(name) { - switch (name) { - case "document-capture-modes": - case "document-type": - case "hide-back-to-host": - case "show-navigation": - this.shadowRoot.innerHTML = this.render(); - this.setUpEventListeners(); - break; - default: - break; - } - } - setUpEventListeners() { - this.errorMessage = this.shadowRoot.querySelector("#error"); - this.requestScreen = this.shadowRoot.querySelector("#request-screen"); - this.activeScreen = this.requestScreen; - this.cameraScreen = this.shadowRoot.querySelector("#camera-screen"); - this.failedImageTestScreen = this.shadowRoot.querySelector("#failed-image-test-screen"); - this.reviewScreen = this.shadowRoot.querySelector("#review-screen"); - this.idEntryScreen = this.shadowRoot.querySelector("#id-entry-screen"); - this.IDCameraScreen = this.shadowRoot.querySelector("#id-camera-screen"); - this.IDReviewScreen = this.shadowRoot.querySelector("#id-review-screen"); - this.backOfIdEntryScreen = this.shadowRoot.querySelector("#back-of-id-entry-screen"); - this.backOfIDCameraScreen = this.shadowRoot.querySelector("#back-of-id-camera-screen"); - this.backOfIDReviewScreen = this.shadowRoot.querySelector("#back-of-id-review-screen"); - this.thanksScreen = this.shadowRoot.querySelector("#thanks-screen"); - this.videoContainer = this.shadowRoot.querySelector(".video-container > .video"); - this.smileCTA = this.shadowRoot.querySelector("#smile-cta"); - this.imageOutline = this.shadowRoot.querySelector("#image-outline path"); - this.startImageCapture = this.shadowRoot.querySelector("#start-image-capture"); - this.captureIDImage = this.shadowRoot.querySelector("#capture-id-image"); - this.captureBackOfIDImage = this.shadowRoot.querySelector("#capture-back-of-id-image"); - this.reviewImage = this.shadowRoot.querySelector("#review-image"); - this.IDReviewImage = this.shadowRoot.querySelector("#id-review-image"); - this.backOfIDReviewImage = this.shadowRoot.querySelector("#back-of-id-review-image"); - this.reStartImageCapture = this.shadowRoot.querySelector("#restart-image-capture"); - this.reCaptureIDImage = this.shadowRoot.querySelector("#re-capture-id-image"); - this.reCaptureBackOfIDImage = this.shadowRoot.querySelector("#re-capture-back-of-id-image"); - this.selectSelfie = this.shadowRoot.querySelector("#select-selfie"); - this.selectIDImage = this.shadowRoot.querySelector("#select-id-image"); - this.selectBackOfIDImage = this.shadowRoot.querySelector("#select-back-of-id-image"); - this.takeDocumentPhotoButton = this.idEntryScreen.querySelector("#take-photo"); - this.uploadDocumentPhotoButton = this.idEntryScreen.querySelector("#upload-photo"); - this.skipBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#skip-this-step"); - this.takeBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#take-photo"); - this.uploadBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#upload-photo"); - this.shadowRoot.querySelector("#request-camera-access").addEventListener("click", () => this.init()); - if (this.showNavigation) { - const backButtons = this.shadowRoot.querySelectorAll(".back-button-exit"); - backButtons.forEach((button) => { - button.addEventListener("click", () => { - this._backAndExit(); - }); - }); - const closeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - closeButtons.forEach((button) => { - button.addEventListener("click", () => { - this._exitSmartCamera(); - }); - }); - } - if (this.takeDocumentPhotoButton) - this.takeDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); - if (this.skipBackOfDocumentPhotoButton) - this.skipBackOfDocumentPhotoButton.addEventListener("click", () => this._skipBackDocument()); - if (this.takeBackOfDocumentPhotoButton) - this.takeBackOfDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); - if (this.uploadDocumentPhotoButton) - this.uploadDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); - if (this.uploadBackOfDocumentPhotoButton) - this.uploadBackOfDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); - this.backToSelfie = this.shadowRoot.querySelector("#back-button-selfie"); - this.backToIdEntryButton = this.shadowRoot.querySelector("#back-button-id-entry"); - this.backToBackIdEntryButton = this.shadowRoot.querySelector("#back-button-back-id-entry"); - this.backToIdImageButton = this.shadowRoot.querySelector("#back-button-id-image"); - if (this.backToSelfie) { - this.backToSelfie.addEventListener("click", () => { - this._reStartImageCapture(); - }); - } - if (this.backToIdEntryButton) { - this.backToIdEntryButton.addEventListener("click", () => { - this.setActiveScreen(this.idEntryScreen); - }); - } - if (this.backToBackIdEntryButton) { - this.backToBackIdEntryButton.addEventListener("click", () => { - this.setActiveScreen(this.backOfIdEntryScreen); - }); - } - if (this.backToIdImageButton) { - this.backToIdImageButton.addEventListener("click", () => { - this.setActiveScreen(this.IDReviewScreen); - }); - } - this.startImageCapture.addEventListener("click", () => { - this._startImageCapture(); - }); - this.selectSelfie.addEventListener("click", () => { - this._selectSelfie(); - }); - this.selectIDImage.addEventListener("click", () => { - this._selectIDImage(); - }); - this.selectBackOfIDImage.addEventListener("click", () => { - this._selectIDImage(true); - }); - this.captureIDImage.addEventListener("click", () => { - this._captureIDImage(); - }); - this.captureBackOfIDImage.addEventListener("click", () => { - this._captureIDImage(); - }); - this.reStartImageCapture.addEventListener("click", () => { - this._reStartImageCapture(); - }); - this.reCaptureIDImage.addEventListener("click", () => { - this._reCaptureIDImage(); - }); - this.reCaptureBackOfIDImage.addEventListener("click", () => { - this._reCaptureIDImage(); - }); - } - init() { - this._videoStreamDurationInMS = 7800; - this._imageCaptureIntervalInMS = 200; - this._data = { - images: [], - partner_params: { - libraryVersion: VERSION, - permissionGranted: false - } - }; - this._rawImages = []; - navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { - this.handleSuccess(stream); - }).catch((e) => { - this.handleError(e); - }); - } - reset() { - this.disconnectedCallback(); - this.connectedCallback(); - } - resetErrorMessage() { - this.errorMessage.textContent = ""; - } - handleSuccess(stream) { - const videoExists = !!this.videoContainer.querySelector("video"); - const video = videoExists ? this.videoContainer.querySelector("video") : document.createElement("video"); - video.autoplay = true; - video.playsInline = true; - video.muted = true; - if ("srcObject" in video) { - video.srcObject = stream; - } else { - video.src = window.URL.createObjectURL(stream); - } - video.play(); - if (!videoExists) - this.videoContainer.prepend(video); - this._data.partner_params.permissionGranted = true; - this.setActiveScreen(this.cameraScreen); - this._stream = stream; - this._video = video; - } - handleIDStream(stream) { - const videoExists = this.activeScreen === this.IDCameraScreen ? !!this.IDCameraScreen.querySelector("video") : !!this.backOfIDCameraScreen.querySelector("video"); - let video = null; - if (videoExists) { - if (this.activeScreen === this.IDCameraScreen) { - video = this.IDCameraScreen.querySelector("video"); - } else { - video = this.backOfIDCameraScreen.querySelector("video"); - } - } else { - video = document.createElement("video"); - } - video.autoplay = true; - video.playsInline = true; - video.muted = true; - if ("srcObject" in video) { - video.srcObject = stream; - } else { - video.src = window.URL.createObjectURL(stream); - } - video.play(); - const videoContainer = this.activeScreen === this.IDCameraScreen ? this.IDCameraScreen.querySelector(".id-video-container") : this.backOfIDCameraScreen.querySelector(".id-video-container"); - video.onloadedmetadata = () => { - videoContainer.querySelector(".actions").hidden = false; - }; - if (!videoExists) { - videoContainer.prepend(video); - } - this._IDStream = stream; - this._IDVideo = video; - } - handleError(e) { - switch (e.name) { - case "NotAllowedError": - case "SecurityError": - this.errorMessage.textContent = ` - Looks like camera access was not granted, or was blocked by a browser - level setting / extension. Please follow the prompt from the URL bar, - or extensions, and enable access. - You may need to refresh to start all over again - `; - break; - case "AbortError": - this.errorMessage.textContent = ` - Oops! Something happened, and we lost access to your stream. - Please refresh to start all over again - `; - break; - case "NotReadableError": - this.errorMessage.textContent = ` - There seems to be a problem with your device's camera, or its connection. - Please check this, and when resolved, try again. Or try another device. - `; - break; - case "NotFoundError": - this.errorMessage.textContent = ` - We are unable to find a video stream. - You may need to refresh to start all over again - `; - break; - case "TypeError": - this.errorMessage.textContent = ` - This site is insecure, and as such cannot have access to your camera. - Try to navigate to a secure version of this page, or contact the owner. - `; - break; - default: - this.errorMessage.textContent = e.message; - } - } - _startImageCapture() { - this.startImageCapture.disabled = true; - const imageOutlineLength = this.imageOutline.getTotalLength(); - this.imageOutline.style.transition = "none"; - this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`; - this.imageOutline.style.strokeDashoffset = imageOutlineLength; - this.imageOutline.getBoundingClientRect(); - this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1e3}s ease-in-out`; - this.imageOutline.style.strokeDashoffset = "0"; - this.smileCTA.style.animation = `fadeInOut ease ${this._videoStreamDurationInMS / 1e3}s`; - this._imageCaptureInterval = setInterval(() => { - this._capturePOLPhoto(); - }, this._imageCaptureIntervalInMS); - this._videoStreamTimeout = setTimeout(() => { - this._stopVideoStream(this._stream); - }, this._videoStreamDurationInMS); - } - _captureIDImage() { - const image = this._drawIDImage(); - if (this.activeScreen === this.IDCameraScreen) { - this.IDReviewImage.src = image; - } else { - this.backOfIDReviewImage.src = image; - } - this._data.images.push({ - image: image.split(",")[1], - image_type_id: this.activeScreen === this.IDCameraScreen ? 3 : 7 - }); - this._stopIDVideoStream(); - if (this.activeScreen === this.IDCameraScreen) { - this.setActiveScreen(this.IDReviewScreen); - } else { - this.setActiveScreen(this.backOfIDReviewScreen); - } - } - _drawImage(canvas, enableImageTests = true, video = this._video) { - this.resetErrorMessage(); - const context = canvas.getContext("2d"); - context.drawImage( - video, - 0, - 0, - video.videoWidth, - video.videoHeight, - 0, - 0, - canvas.width, - canvas.height - ); - if (enableImageTests) { - const imageData = context.getImageData(0, 0, canvas.width, canvas.height); - const hasEnoughColors = hasMoreThanNColors(imageData.data); - if (hasEnoughColors) { - return context; - } - throw new Error("Unable to capture webcam images - Please try another device"); - } else { - return context; - } - } - _capturePOLPhoto() { - const canvas = document.createElement("canvas"); - canvas.width = 240; - canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; - this._drawImage(canvas, false); - this._rawImages.push(canvas.toDataURL("image/jpeg")); - } - _captureReferencePhoto() { - const canvas = document.createElement("canvas"); - canvas.width = 480; - canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; - this._drawImage(canvas, !this.disableImageTests); - const image = canvas.toDataURL("image/jpeg"); - this._referenceImage = image; - this._data.images.push({ - image: image.split(",")[1], - image_type_id: 2 - }); - } - _skipBackDocument() { - this._publishSelectedImages(); - } - async _uploadDocument(event) { - this.resetErrorMessage(); - try { - const { files } = event.target; - const fileData = await SmartFileUpload.retrieve(files); - this._data.images.push({ - // NOTE: data URLs start with a file type before the base64 data, - // separated by a comma. - // - // we are only interested in the base64 segment, so we extract it - image: fileData.split(",")[1], - image_type_id: this.activeScreen === this.idEntryScreen ? 3 : 7 - }); - const nextScreen = this.activeScreen === this.idEntryScreen ? this.IDReviewScreen : this.backOfIDReviewScreen; - const previewImage = nextScreen.querySelector("img"); - previewImage.src = fileData; - this.setActiveScreen(nextScreen); - } catch (error) { - this.handleError(error); - } - } - _drawIDImage(video = this._IDVideo) { - const canvas = document.createElement("canvas"); - if (this.isPortraitCaptureView) { - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - const ctx = canvas.getContext("2d"); - ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - const previewWidth = PORTRAIT_ID_PREVIEW_WIDTH; - const previewHeight = PORTRAIT_ID_PREVIEW_HEIGHT; - const paddingPercent = 0.5; - const paddedWidth = previewWidth * (1 + paddingPercent); - const paddedHeight = previewHeight * (1 + paddingPercent); - const cropWidth = paddedWidth; - const cropHeight = paddedHeight; - const cropLeft = (canvas.width - cropWidth) / 2; - const cropTop = (canvas.height - cropHeight) / 2; - const croppedCanvas = document.createElement("canvas"); - croppedCanvas.width = cropWidth; - croppedCanvas.height = cropHeight; - const croppedCtx = croppedCanvas.getContext("2d"); - croppedCtx.drawImage(canvas, cropLeft, cropTop, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); - return croppedCanvas.toDataURL("image/jpeg"); - } - canvas.width = 2240; - canvas.height = 1260; - const context = canvas.getContext("2d"); - const aspectRatio = video.videoWidth / video.videoHeight; - if (aspectRatio < 1) { - const imageFrame = this.activeScreen.querySelector('[class*="image-frame"]:not([hidden]) [href*="image-frame"]'); - const videoBox = video.getBoundingClientRect(); - const frameBox = imageFrame.getBoundingClientRect(); - const sourceXOffset = (frameBox.left - videoBox.left) / videoBox.width * video.videoWidth; - const sourceYOffset = (frameBox.top - videoBox.top) / videoBox.height * video.videoHeight; - const sourceWidth = frameBox.width * (video.videoWidth / videoBox.width); - const sourceHeight = frameBox.height * (video.videoHeight / videoBox.height); - canvas.height = canvas.width * frameBox.height / frameBox.width; - context.drawImage(video, sourceXOffset, sourceYOffset, sourceWidth, sourceHeight, 0, 0, canvas.width, canvas.height); - return canvas.toDataURL("image/jpeg"); - } - context.drawImage(video, 0, 0, canvas.width, canvas.height); - return canvas.toDataURL("image/jpeg"); - } - _stopVideoStream(stream) { - try { - clearTimeout(this._videoStreamTimeout); - clearInterval(this._imageCaptureInterval); - clearInterval(this._drawingInterval); - this.smileCTA.style.animation = "none"; - this._capturePOLPhoto(); - this._captureReferencePhoto(); - stream.getTracks().forEach((track) => track.stop()); - this.reviewImage.src = this._referenceImage; - const totalNoOfFrames = this._rawImages.length; - const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames); - this._data.images = this._data.images.concat(livenessFramesIndices.map((imageIndex) => ({ - image: this._rawImages[imageIndex].split(",")[1], - image_type_id: 6 - }))); - this.setActiveScreen(this.reviewScreen); - } catch (error) { - this.setActiveScreen(this.failedImageTestScreen); - } - } - _stopIDVideoStream(stream = this._IDStream) { - stream.getTracks().forEach((track) => track.stop()); - } - async _startIDCamera() { - try { - const stream = await navigator.mediaDevices.getUserMedia({ - audio: false, - video: { - facingMode: "environment", - width: { min: 1280 }, - // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant) - // "We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges. - // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it." - zoom: isSamsungMultiCameraDevice() ? 2 : 1 - } - }); - if (this.activeScreen === this.idEntryScreen) { - this.setActiveScreen(this.IDCameraScreen); - } else if (this.activeScreen === this.backOfIdEntryScreen) { - this.setActiveScreen(this.backOfIDCameraScreen); - } - this.handleIDStream(stream); - } catch (e) { - this.handleError(e); - } - } - _selectSelfie() { - if (!this.captureID) { - this._publishSelectedImages(); - } else { - this.setActiveScreen(this.idEntryScreen); - } - } - _selectIDImage(backOfIDCaptured = false) { - if (!this.captureBackOfID || backOfIDCaptured) { - this._publishSelectedImages(); - } else { - this.setActiveScreen(this.backOfIdEntryScreen); - } - } - _publishSelectedImages() { - this.dispatchEvent( - new CustomEvent("imagesComputed", { detail: this._data }) - ); - this.setActiveScreen(this.thanksScreen); - } - _exitSmartCamera() { - this.dispatchEvent( - new CustomEvent("close", { detail: {} }) - ); - } - _backAndExit() { - this.dispatchEvent( - new CustomEvent("backExit", { detail: {} }) - ); - } - async _reStartImageCapture() { - this.startImageCapture.disabled = false; - this._rawImages = []; - this._data.images = []; - try { - const stream = await navigator.mediaDevices.getUserMedia({ - audio: false, - video: true - }); - this.handleSuccess(stream); - } catch (e) { - this.handleError(e); - } - } - async _reCaptureIDImage() { - const previousScreen = this.activeScreen === this.IDReviewScreen ? this.idEntryScreen : this.backOfIdEntryScreen; - this.setActiveScreen(previousScreen); - this._data.images.pop(); - } - get captureID() { - return this.hasAttribute("capture-id"); - } - get captureBackOfID() { - return this.getAttribute("capture-id") === "back" || false; - } - get hideAttribution() { - return this.hasAttribute("hide-attribution"); - } - get showNavigation() { - return this.hasAttribute("show-navigation"); - } - get hideBackToHost() { - return this.hasAttribute("hide-back-to-host"); - } - get documentType() { - return this.getAttribute("document-type"); - } - get isPortraitCaptureView() { - return this.getAttribute("document-type") === "GREEN_BOOK"; - } - get documentCaptureModes() { - return this.getAttribute("document-capture-modes") || "camera"; - } - get supportBothCaptureModes() { - const value = this.documentCaptureModes; - return value.includes("camera") && value.includes("upload"); - } - get disableImageTests() { - return this.hasAttribute("disable-image-tests"); - } - get doNotUpload() { - return this.getAttribute("document-capture-modes") === "camera"; - } - }; - window.customElements.define("smart-camera-web", SmartCameraWeb); - - // src/js/components/ConsentScreen.js - function templateString() { - return ` - - - - - - - - `; - } - var EndUserConsent = class extends HTMLElement { - constructor() { - super(); - this.idRequiresTotpConsent = ["BVN_MFA"]; - this.templateString = templateString.bind(this); - this.render = () => { - return this.templateString(); - }; - this.attachShadow({ mode: "open" }); - } - connectedCallback() { - this.pages = []; - const template = document.createElement("template"); - template.innerHTML = this.render(); - this.shadowRoot.appendChild(template.content.cloneNode(true)); - this.consentScreen = this.shadowRoot.querySelector("#consent-screen"); - this.totpConsentApp = this.shadowRoot.querySelector("totp-consent-app"); - this.consentRejectedScreen = this.shadowRoot.querySelector( - "#consent-rejected-screen" - ); - this.allowButton = this.shadowRoot.querySelector("#allow"); - this.rejectButton = this.shadowRoot.querySelector("#cancel"); - this.backToConsentButton = this.shadowRoot.querySelector("#back-to-consent"); - this.confirmConsentRejectionButton = this.shadowRoot.querySelector( - "#confirm-consent-rejection" - ); - this.backButton = this.shadowRoot.querySelector("#back-button"); - const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - this.allowButton.addEventListener( - "click", - (e) => this.handleConsentGrant(e) - ); - this.rejectButton.addEventListener( - "click", - (e) => this.handleConsentGrant(e) - ); - this.backToConsentButton.addEventListener( - "click", - () => this.setActiveScreen(this.consentScreen) - ); - this.confirmConsentRejectionButton.addEventListener( - "click", - (e) => this.handleConsentRejection(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", - (e) => this.handleTotpConsentEvents(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentGranted::TOTP", - (e) => this.handleTotpConsentEvents(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentDenied::Back", - (e) => this.handleBackEvents(e) - ); - this.backButton.addEventListener("click", (e) => { - this.handleBackEvents(e); - }); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - this.closeWindow(); - }, - false - ); - }); - this.activeScreen = this.consentScreen; - } - setActiveScreen(screen) { - this.activeScreen.hidden = true; - screen.hidden = false; - this.activeScreen = screen; - } - get baseUrl() { - return this.getAttribute("base-url"); - } - get country() { - return this.getAttribute("country"); - } - get demoMode() { - return !!this.hasAttribute("demo-mode"); - } - get hideBack() { - return this.hasAttribute("hide-back-to-host"); - } - get idHint() { - return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; - } - get idRegex() { - return this.getAttribute("id-regex"); - } - get idType() { - return this.getAttribute("id-type"); - } - get idTypeLabel() { - return this.getAttribute("id-type-label"); - } - get partnerId() { - return this.getAttribute("partner-id"); - } - get partnerName() { - return this.getAttribute("partner-name"); - } - get partnerLogoURL() { - return this.getAttribute("partner-logo"); - } - get partnerPolicyURL() { - return this.getAttribute("policy-url"); - } - get themeColor() { - return this.getAttribute("theme-color") || "#043C93"; - } - get token() { - return this.getAttribute("token"); - } - handleConsentGrant(e) { - const granted = e.target === this.allowButton; - if (granted) { - if (this.idRequiresTotpConsent.includes(this.idType)) { - this.setActiveScreen(this.totpConsentApp); - this.pages.push(this.consentScreen); - } else { - this.dispatchEvent( - new CustomEvent("SmileIdentity::ConsentGranted", { - detail: { - consented: { - personal_details: granted, - contact_information: granted, - document_information: granted - } - } - }) - ); - } - } else { - this.setActiveScreen(this.consentRejectedScreen); - } - } - handleConsentRejection() { - this.dispatchEvent(new CustomEvent("SmileIdentity::ConsentDenied")); - } - handleTotpConsentEvents(e) { - const customEvent = new CustomEvent(e.type, { - detail: { - ...e.detail - } - }); - this.dispatchEvent(customEvent); - } - handleBackEvents() { - const page = this.pages.pop(); - if (page) { - this.setActiveScreen(page); - } else { - this.dispatchEvent(new CustomEvent("SmileIdentity::Exit")); - } - } - closeWindow() { - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - }; - var ConsentScreen_default = EndUserConsent; - - // src/js/components/TotpConsentApp.js - var import_validate = __toESM(require_validate(), 1); - function postData(url, data) { - return fetch(url, { - method: "POST", - mode: "cors", - cache: "no-cache", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - body: JSON.stringify(data) - }); - } - function markup() { - return ` - - -
- -

- Enter your ${this.idTypeLabel} -

- -
-
- - - - -

- ${this.idHint} -

-
- - -
-
- - - - - `; - } - var TotpBasedConsent = class extends HTMLElement { - constructor() { - super(); - this.templateString = markup.bind(this); - this.render = () => { - return this.templateString(); - }; - this.attachShadow({ mode: "open" }); - this.modes = []; - this["otp-delivery-mode"] = ""; - this.queryOtpModes = this.queryOtpModes.bind(this); - this.selectOtpMode = this.selectOtpMode.bind(this); - this.submitOtp = this.submitOtp.bind(this); - this.switchContactMethod = this.switchContactMethod.bind(this); - this.handleTotpConsentGrant = this.handleTotpConsentGrant.bind(this); - this.handleTotpConsentContactMethodsOutdated = this.handleTotpConsentContactMethodsOutdated.bind(this); - this.pages = []; - } - static get observedAttributes() { - return ["modes", "otp-delivery-mode"]; - } - attributeChangedCallback(name) { - switch (name) { - case "modes": - case "otp-delivery-mode": { - const updatedTemplate = document.createElement("template"); - updatedTemplate.innerHTML = this.render(); - const updatedNode = updatedTemplate.content.cloneNode(true).querySelector(`#${this.activeScreen.id}`); - updatedNode.hidden = false; - this.shadowRoot.replaceChild(updatedNode, this.activeScreen); - this.setUpEventListeners(); - this.setActiveScreen(updatedNode); - break; - } - default: - break; - } - } - setUpEventListeners() { - this.idEntryScreen = this.shadowRoot.querySelector("#id-entry"); - this.selectModeScreen = this.shadowRoot.querySelector("#select-mode"); - this.otpVerificationScreen = this.shadowRoot.querySelector("#otp-verification"); - if (!this.activeScreen) { - this.activeScreen = this.idEntryScreen; - } - this.queryOtpModesButton = this.idEntryScreen.querySelector("#query-otp-modes"); - this.backButton = this.idEntryScreen.querySelector("#back-button"); - this.selectOtpModeButton = this.selectModeScreen.querySelector("#select-otp-mode"); - this.entryBackbutton = this.selectModeScreen.querySelector( - "#back-to-entry-button" - ); - this.contactMethodsOutdatedButton = this.selectModeScreen.querySelector( - "#contact-methods-outdated" - ); - this.submitOtpButton = this.otpVerificationScreen.querySelector("#submit-otp"); - this.switchContactMethodButton = this.otpVerificationScreen.querySelector( - ".try-another-method" - ); - const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - this.idNumberInput = this.idEntryScreen.querySelector("#id_number"); - this.modeInputs = this.selectModeScreen.querySelectorAll('[name="mode"]'); - this.otpInput = this.otpVerificationScreen.querySelector("#totp-token"); - this.queryOtpModesButton.addEventListener( - "click", - (e) => this.queryOtpModes(e) - ); - this.selectOtpModeButton.addEventListener( - "click", - (e) => this.selectOtpMode(e) - ); - this.submitOtpButton.addEventListener("click", (e) => this.submitOtp(e)); - this.switchContactMethodButton.addEventListener( - "click", - (e) => this.switchContactMethod(e) - ); - this.contactMethodsOutdatedButton.addEventListener( - "click", - (e) => this.handleTotpConsentContactMethodsOutdated(e) - ); - this.entryBackbutton.addEventListener("click", () => { - this.handleBackClick(); - }); - this.backButton.addEventListener("click", () => { - this.handleBackClick(); - }); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - this.closeWindow(); - }, - false - ); - }); - } - closeWindow() { - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - handleBackClick() { - const page = this.pages.pop(); - if (page) { - this.setActiveScreen(page); - } else { - this.dispatchEvent( - new CustomEvent("SmileIdentity::ConsentDenied::Back", {}) - ); - } - } - connectedCallback() { - const template = document.createElement("template"); - template.innerHTML = this.render(); - this.shadowRoot.appendChild(template.content.cloneNode(true)); - this.setUpEventListeners(); - } - switchContactMethod() { - this.queryOtpModes(); - } - resetForm() { - const invalidElements = this.activeScreen.querySelectorAll("[aria-invalid]"); - invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); - const validationMessages = this.activeScreen.querySelectorAll( - ".validation-message" - ); - validationMessages.forEach((el) => el.remove()); - } - handleIdNumberValidationErrors(errors) { - const fields = Object.keys(errors); - fields.forEach((field) => { - const input = this.activeScreen.querySelector(`#${field}`); - input.setAttribute("aria-invalid", "true"); - input.setAttribute("aria-describedby", `${field}-hint`); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("id", `${field}-hint`); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = errors[field][0]; - input.insertAdjacentElement("afterend", errorDiv); - }); - } - handleActiveScreenErrors(error) { - const submitButton = this.activeScreen.querySelector('[type="submit"]'); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = error; - submitButton.insertAdjacentElement("beforebegin", errorDiv); - } - validateIdNumber(idNumber) { - const validationConstraints = { - id_number: { - presence: { - allowEmpty: false, - message: "is required" - }, - format: new RegExp(this.idRegex) - } - }; - const errors = (0, import_validate.default)({ id_number: idNumber }, validationConstraints); - if (errors) { - this.handleIdNumberValidationErrors(errors); - } - return errors; - } - async queryOtpModes(event) { - if (event) { - event.preventDefault(); - this.resetForm(); - } - const validationErrors = this.validateIdNumber(this.idNumberInput.value); - localStorage.setItem("idNumber", this.idNumberInput.value || this.idNumber); - if (!validationErrors) { - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - partner_id: this.partnerId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.sessionId = json.session_id; - this.modes = json.modes; - this.setActiveScreen(this.selectModeScreen); - this.setAttribute("modes", json.modes); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - } - async selectOtpMode(event) { - event.preventDefault(); - this.resetForm(); - this.mode = Array.prototype.find.call( - this.modeInputs, - (node) => node.checked - ).value; - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - mode: this.mode, - partner_id: this.partnerId, - session_id: this.sessionId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent/mode`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.selectedOtpDeliveryMode = this.modes.filter( - (mode) => mode[this.mode] - )[0][this.mode]; - this.setActiveScreen(this.otpVerificationScreen); - this.setAttribute("otp-delivery-mode", this.selectedOtpDeliveryMode); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - async submitOtp(event) { - event.preventDefault(); - this.resetForm(); - this.otp = this.otpInput.value; - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - otp: this.otp, - partner_id: this.partnerId, - session_id: this.sessionId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent/otp`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.handleTotpConsentGrant(event); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - toggleLoading() { - const button = this.activeScreen.querySelector('button[type="submit"]'); - const text = button.querySelector(".text"); - const arrow = button.querySelector("svg"); - const spinner = button.querySelector(".spinner"); - button.toggleAttribute("disabled"); - text.toggleAttribute("hidden"); - arrow.toggleAttribute("hidden"); - spinner.toggleAttribute("hidden"); - } - setActiveScreen(screen) { - this.activeScreen.hidden = true; - screen.hidden = false; - this.activeScreen = screen; - } - get baseUrl() { - return this.getAttribute("base-url"); - } - get country() { - return this.getAttribute("country"); - } - get idHint() { - return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; - } - get idNumber() { - return localStorage.getItem("idNumber"); - } - get idRegex() { - return this.getAttribute("id-regex"); - } - get idType() { - return this.getAttribute("id-type"); - } - get idTypeLabel() { - return this.getAttribute("id-type-label"); - } - get partnerId() { - return this.getAttribute("partner-id"); - } - get partnerName() { - return this.getAttribute("partner-name"); - } - get token() { - return this.getAttribute("token"); - } - handleTotpConsentGrant() { - const customEvent = new CustomEvent("SmileIdentity::ConsentGranted::TOTP", { - detail: { - id_number: this.idNumber, - session_id: this.sessionId, - consented: { - personal_details: true, - contact_information: true, - document_information: true - } - } - }); - this.dispatchEvent(customEvent); - } - handleTotpConsentContactMethodsOutdated() { - const tag = "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated"; - const customEvent = new CustomEvent(tag, { - detail: { - message: tag, - data: { - id_number: this.idNumber, - session_id: this.sessionId - } - } - }); - this.dispatchEvent(customEvent); - } - }; - var TotpConsentApp_default = TotpBasedConsent; - - // package.json - var version = "v1.2.3"; - - // src/js/biometric-kyc.js - (function biometricKyc() { - "use strict"; - const endpoints = { - development: "https://devapi.smileidentity.com/v1", - sandbox: "https://testapi.smileidentity.com/v1", - live: "https://api.smileidentity.com/v1", - production: "https://api.smileidentity.com/v1" - }; - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); - window.customElements.define("end-user-consent", ConsentScreen_default); - window.customElements.define("totp-consent-app", TotpConsentApp_default); - const pages = []; - let activeScreen; - let config; - let consent_information; - let EndUserConsent2; - let id_info; - let images; - let partner_params; - let productConstraints; - const LoadingScreen = document.querySelector("#loading-screen"); - const SelectIDType = document.querySelector("#select-id-type"); - const SmartCameraWeb2 = document.querySelector("smart-camera-web"); - const IDInfoForm = document.querySelector("#id-info"); - const UploadProgressScreen = document.querySelector( - "#upload-progress-screen" - ); - const UploadFailureScreen = document.querySelector("#upload-failure-screen"); - const CompleteScreen = document.querySelector("#complete-screen"); - const CloseIframeButtons = document.querySelectorAll(".close-iframe"); - const RetryUploadButton = document.querySelector("#retry-upload"); - let disableBackOnFirstScreen = false; - let fileToUpload; - let uploadURL; - function postData2(url = "", data = {}) { - return fetch(url, { - method: "POST", - mode: "cors", - cache: "no-cache", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - body: JSON.stringify(data) - }); - } - async function getProductConstraints() { - try { - const productsConfigPayload = { - partner_id: config.partner_details.partner_id, - token: config.token, - partner_params - }; - const productsConfigUrl = `${endpoints[config.environment]}/products_config`; - const productsConfigPromise = postData2( - productsConfigUrl, - productsConfigPayload - ); - const servicesPromise = fetch( - `${endpoints[config.environment]}/services` - ); - const [productsConfigResponse, servicesResponse] = await Promise.all([ - productsConfigPromise, - servicesPromise - ]); - if (productsConfigResponse.ok && servicesResponse.ok) { - const partnerConstraints = await productsConfigResponse.json(); - const generalConstraints = await servicesResponse.json(); - const previewBvnMfa = config.previewBVNMFA; - if (previewBvnMfa) { - generalConstraints.hosted_web.biometric_kyc.NG.id_types.BVN_MFA = { - id_number_regex: "^[0-9]{11}$", - label: "Bank Verification Number (with OTP)", - required_fields: [ - "country", - "id_type", - "session_id", - "user_id", - "job_id" - ], - test_data: "00000000000" - }; - } - return { - partnerConstraints, - generalConstraints: generalConstraints.hosted_web.biometric_kyc - }; - } - throw new Error("Failed to get supported ID types"); - } catch (e) { - throw new Error("Failed to get supported ID types", { cause: e }); - } - } - window.addEventListener( - "message", - async (event) => { - if (event.data && event.data.includes("SmileIdentity::Configuration")) { - config = JSON.parse(event.data); - activeScreen = LoadingScreen; - getPartnerParams(); - const { partnerConstraints, generalConstraints } = await getProductConstraints(); - productConstraints = generalConstraints; - initializeSession(generalConstraints, partnerConstraints); - } - }, - false - ); - function setInitialScreen(partnerConstraints) { - const { country: selectedCountry, id_type: selectedIDType } = id_info; - const selectedIdRequiresConsent = partnerConstraints.consentRequired[selectedCountry] ? partnerConstraints.consentRequired[selectedCountry].includes( - selectedIDType - ) : false; - if (selectedIdRequiresConsent || config.consent_required || config.demo_mode) { - const IDRequiresConsent = selectedIdRequiresConsent || config.consent_required && config.consent_required[selectedCountry] && config.consent_required[selectedCountry].includes(selectedIDType); - if (IDRequiresConsent || config.demo_mode) { - customizeConsentScreen(); - setActiveScreen(EndUserConsent2); - } else { - SmartCameraWeb2.setAttribute("hide-back-to-host", true); - setActiveScreen(SmartCameraWeb2); - } - } else { - SmartCameraWeb2.setAttribute("hide-back-to-host", true); - setActiveScreen(SmartCameraWeb2); - } - customizeForm(); - } - function initializeSession(generalConstraints, partnerConstraints) { - const supportedCountries = Object.keys(generalConstraints).map((countryCode) => ({ - code: countryCode, - name: generalConstraints[countryCode].name - })).sort((a, b) => { - if (a.name < b.name) { - return -1; - } - if (a.name > b.name) { - return 1; - } - return 0; - }).map((item) => item.code); - let validCountries = []; - if (config.id_selection) { - validCountries = supportedCountries.filter( - (value) => Object.keys(config.id_selection).includes(value) - ); - if (validCountries.length === 1) { - const selectedCountry = validCountries[0]; - id_info = { - country: validCountries[0] - }; - const idTypes = config.id_selection[selectedCountry]; - if (idTypes.length === 1 || typeof idTypes === "string") { - id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; - disableBackOnFirstScreen = true; - setInitialScreen(partnerConstraints); - } - } - } else { - validCountries = Object.keys( - partnerConstraints.idSelection.biometric_kyc - ); - } - if (!id_info || !id_info.id_type) { - const selectCountry = SelectIDType.querySelector("#country"); - const selectIDType = SelectIDType.querySelector("#id_type"); - const hostedWebConfigForm = document.querySelector( - 'form[name="hosted-web-config"]' - ); - selectCountry.disabled = false; - setActiveScreen(SelectIDType); - const loadIdTypes = (countryCode) => { - if (countryCode) { - const validIDTypes = config.id_selection ? config.id_selection : partnerConstraints.idSelection.biometric_kyc; - const constrainedIDTypes = Object.keys( - generalConstraints[countryCode].id_types - ); - const selectedIDTypes = validIDTypes[countryCode].filter( - (value) => constrainedIDTypes.includes(value) - ); - selectIDType.innerHTML = ""; - const initialOption = document.createElement("option"); - initialOption.setAttribute("value", ""); - initialOption.textContent = "--Please Select--"; - selectIDType.appendChild(initialOption); - selectedIDTypes.forEach((IDType) => { - const option = document.createElement("option"); - option.setAttribute("value", IDType); - option.textContent = generalConstraints[countryCode].id_types[IDType].label; - selectIDType.appendChild(option); - }); - selectIDType.disabled = false; - } else { - selectIDType.innerHTML = ""; - const option = document.createElement("option"); - option.disabled = true; - option.setAttribute("value", ""); - option.textContent = "--Select Country First--"; - selectIDType.appendChild(option); - } - }; - selectCountry.addEventListener("change", (e) => { - loadIdTypes(e.target.value); - }); - validCountries.forEach((country) => { - const countryObject = generalConstraints[country]; - if (countryObject) { - const option = document.createElement("option"); - option.setAttribute("value", country); - option.textContent = countryObject.name; - if (id_info && id_info.country && country === id_info.country) { - option.setAttribute("selected", true); - selectCountry.value = country; - selectCountry.disabled = true; - loadIdTypes(country); - } - selectCountry.appendChild(option); - } - }); - hostedWebConfigForm.addEventListener("submit", (e) => { - e.preventDefault(); - const selectedCountry = selectCountry.value; - const selectedIDType = selectIDType.value; - id_info = { - country: selectedCountry, - id_type: selectedIDType - }; - setInitialScreen(partnerConstraints); - }); - } - } - function initiateDemoMode() { - const demoTips = document.querySelectorAll(".demo-tip"); - Array.prototype.forEach.call(demoTips, (tip) => { - tip.hidden = false; - }); - const script = document.createElement("script"); - script.type = "text/javascript"; - script.src = "js/demo-ekyc-smartselfie.min.js"; - document.body.appendChild(script); - } - SmartCameraWeb2.addEventListener( - "imagesComputed", - (event) => { - images = event.detail.images; - const idRequiresTOTPConsent = ["BVN_MFA"].includes(id_info.id_type); - if (idRequiresTOTPConsent) { - handleFormSubmit(); - } else { - setActiveScreen(IDInfoForm); - } - }, - false - ); - SmartCameraWeb2.addEventListener( - "backExit", - () => { - SmartCameraWeb2.reset(); - const page = pages.pop(); - setActiveScreen(page); - }, - false - ); - SmartCameraWeb2.addEventListener( - "close", - () => { - closeWindow(true); - }, - false - ); - IDInfoForm.querySelector("#submitForm").addEventListener( - "click", - (event) => { - handleFormSubmit(event); - }, - false - ); - IDInfoForm.querySelector("#back-button").addEventListener( - "click", - (event) => { - event.preventDefault(); - const page = pages.pop(); - if (page === SmartCameraWeb2) { - page.reset(); - } - setActiveScreen(page); - }, - false - ); - RetryUploadButton.addEventListener( - "click", - () => { - retryUpload(); - }, - false - ); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - closeWindow(true); - }, - false - ); - }); - function customizeConsentScreen() { - const partnerDetails = config.partner_details; - const main = document.querySelector("main"); - EndUserConsent2 = document.querySelector("end-user-consent"); - if (EndUserConsent2) { - main.removeChild(EndUserConsent2); - } - EndUserConsent2 = document.createElement("end-user-consent"); - EndUserConsent2.setAttribute( - "base-url", - endpoints[config.environment] || config.environment - ); - EndUserConsent2.setAttribute("country", id_info.country); - EndUserConsent2.setAttribute( - "id-regex", - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ); - EndUserConsent2.setAttribute("id-type", id_info.id_type); - EndUserConsent2.setAttribute( - "id-type-label", - productConstraints[id_info.country].id_types[id_info.id_type].label - ); - EndUserConsent2.setAttribute("partner-id", partnerDetails.partner_id); - EndUserConsent2.setAttribute("partner-name", partnerDetails.name); - EndUserConsent2.setAttribute("partner-logo", partnerDetails.logo_url); - EndUserConsent2.setAttribute("policy-url", partnerDetails.policy_url); - EndUserConsent2.setAttribute("theme-color", partnerDetails.theme_color); - EndUserConsent2.setAttribute("token", config.token); - if (disableBackOnFirstScreen) { - EndUserConsent2.setAttribute("hide-back-to-host", true); - } - if (config.demo_mode) { - EndUserConsent2.setAttribute("demo-mode", config.demo_mode); - localStorage.setItem( - "SmileIdentityConstraints", - JSON.stringify(productConstraints, null, 2) - ); - initiateDemoMode(); - } - EndUserConsent2.addEventListener( - "SmileIdentity::Exit", - () => { - setActiveScreen(SelectIDType); - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentGranted", - (event) => { - consent_information = event.detail; - if (consent_information.consented.personal_details) { - id_info.consent_information = consent_information; - setActiveScreen(SmartCameraWeb2); - } - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentGranted::TOTP", - (event) => { - consent_information = event.detail; - if (consent_information.consented.personal_details) { - id_info.id_number = consent_information.id_number; - id_info.session_id = consent_information.session_id; - id_info.consent_information = consent_information; - setActiveScreen(SmartCameraWeb2); - } - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentDenied", - () => { - referenceWindow.postMessage("SmileIdentity::ConsentDenied", "*"); - closeWindow(); - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", - (event) => { - referenceWindow.postMessage(event.detail, "*"); - closeWindow(); - }, - false - ); - main.appendChild(EndUserConsent2); - } - function customizeForm() { - setGuideTextForIDType(); - setFormInputs(); - } - function setGuideTextForIDType() { - const label = document.querySelector('[for="id_number"]'); - const input = document.querySelector("#id_number"); - label.innerHTML = productConstraints[id_info.country].id_types[id_info.id_type].label; - input.setAttribute( - "placeholder", - productConstraints[id_info.country].id_types[id_info.id_type].test_data - ); - input.setAttribute( - "pattern", - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ); - } - function setFormInputs() { - const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; - const showIdNumber = requiredFields.some( - (fieldName) => fieldName.includes("id_number") - ); - if (showIdNumber) { - const IdNumber = IDInfoForm.querySelector("div#id-number"); - IdNumber.hidden = false; - } - const showNames = requiredFields.some( - (fieldName) => fieldName.includes("name") - ); - if (showNames) { - const Names = IDInfoForm.querySelector("fieldset#names"); - Names.hidden = false; - } - const showDOB = requiredFields.some( - (fieldName) => fieldName.includes("dob") - ); - if (showDOB) { - const DOB = IDInfoForm.querySelector("fieldset#dob"); - DOB.hidden = false; - } - } - function getPartnerParams() { - function parseJWT(token) { - const base64Url = token.split(".")[1]; - const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); - const jsonPayload = decodeURIComponent( - atob(base64).split("").map(function(c) { - return `%${c.charCodeAt(0).toString(16)}`; - }).join("") - ); - return JSON.parse(jsonPayload); - } - const { partner_params: partnerParams } = parseJWT(config.token); - partner_params = { ...partnerParams, ...config.partner_params || {} }; - } - function setActiveScreen(node) { - activeScreen.hidden = true; - pages.push(activeScreen); - node.hidden = false; - activeScreen = node; - } - function resetForm() { - const invalidElements = IDInfoForm.querySelectorAll("[aria-invalid]"); - invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); - const validationMessages = document.querySelectorAll(".validation-message"); - validationMessages.forEach((el) => el.remove()); - } - function validateInputs(payload) { - const validationConstraints = {}; - const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; - const showIdNumber = requiredFields.some( - (fieldName) => fieldName.includes("id_number") - ); - if (showIdNumber) { - validationConstraints.id_number = { - presence: { - allowEmpty: false, - message: "is required" - }, - format: new RegExp( - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ) - }; - } - const showNames = requiredFields.some( - (fieldName) => fieldName.includes("name") - ); - if (showNames) { - validationConstraints.first_name = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.last_name = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const showDOB = requiredFields.some( - (fieldName) => fieldName.includes("dob") - ); - if (showDOB) { - validationConstraints.day = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.month = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.year = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const validation = (0, import_validate2.default)(payload, validationConstraints); - if (validation) { - handleValidationErrors(validation); - const submitButton = IDInfoForm.querySelector('[type="button"]'); - submitButton.removeAttribute("disabled"); - } - return validation; - } - function handleValidationErrors(errors) { - const fields = Object.keys(errors); - fields.forEach((field) => { - const input = IDInfoForm.querySelector(`#${field}`); - input.setAttribute("aria-invalid", "true"); - input.setAttribute("aria-describedby", `${field}-hint`); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("id", `${field}-hint`); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = errors[field][0]; - input.insertAdjacentElement("afterend", errorDiv); - }); - } - async function handleFormSubmit(event) { - if (event) { - event.preventDefault(); - resetForm(); - } - const form = IDInfoForm.querySelector("form"); - const formData = new FormData(form); - const payload = Object.fromEntries(formData.entries()); - const isInvalid = validateInputs(payload); - if (isInvalid) { - return; - } - id_info = { - dob: `${payload.year}-${payload.month}-${payload.day}`, - entered: true, - ...payload, - ...id_info - }; - try { - if (event && event.target) - event.target.disabled = true; - [uploadURL, fileToUpload] = await Promise.all([ - getUploadURL(), - createZip() - ]); - uploadZip(fileToUpload, uploadURL); - if (event && event.target) - event.target.disabled = false; - } catch (error) { - if (event && event.target) - event.target.disabled = false; - displayErrorMessage("Something went wrong"); - console.error( - `SmileIdentity - ${error.name || error.message}: ${error.cause}` - ); - } - } - function displayErrorMessage(message) { - const p = document.createElement("p"); - p.textContent = message; - p.classList.add("validation-message"); - p.style.fontSize = "1.5rem"; - p.style.textAlign = "center"; - const main = document.querySelector("main"); - main.prepend(p); - } - async function createZip() { - const zip = new import_jszip.default(); - zip.file( - "info.json", - JSON.stringify({ - package_information: { - language: "Hosted Web Integration", - apiVersion: { - buildNumber: 0, - majorVersion: 2, - minorVersion: 0 - } - }, - id_info, - images - }) - ); - try { - const zipFile = await zip.generateAsync({ type: "blob" }); - return zipFile; - } catch (error) { - throw new Error("createZip failed", { cause: error }); - } - } - async function getUploadURL() { - const payload = { - source_sdk: config.sdk || "hosted_web", - source_sdk_version: config.sdk_version || version, - file_name: `${config.product}.zip`, - smile_client_id: config.partner_details.partner_id, - callback_url: config.callback_url, - token: config.token, - partner_params: { - ...partner_params, - job_type: 1 - } - }; - const URL = `${endpoints[config.environment] || config.environment}/upload`; - try { - const response = await postData2(URL, payload); - const json = await response.json(); - if (json.error) - throw new Error(json.error); - return json.upload_url; - } catch (error) { - throw new Error("getUploadURL failed", { cause: error }); - } - } - function uploadZip(file, destination) { - setActiveScreen(UploadProgressScreen); - const request = new XMLHttpRequest(); - request.open("PUT", destination); - request.upload.addEventListener("load", function() { - return request.response; - }); - request.upload.addEventListener("error", function(e) { - setActiveScreen(UploadFailureScreen); - throw new Error("uploadZip failed", { cause: e }); - }); - request.onreadystatechange = function() { - if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { - const countryName = productConstraints[id_info.country].name; - const idTypeName = productConstraints[id_info.country].id_types[id_info.id_type].label; - const thankYouMessage = CompleteScreen.querySelector("#thank-you-message"); - thankYouMessage.textContent = `We will process your ${countryName} - ${idTypeName} information to verify your identity`; - setActiveScreen(CompleteScreen); - handleSuccess(); - window.setTimeout(closeWindow, 2e3); - } - if (request.readyState === XMLHttpRequest.DONE && request.status !== 200) { - setActiveScreen(UploadFailureScreen); - throw new Error("uploadZip failed", { cause: request }); - } - }; - request.setRequestHeader("Content-type", "application/zip"); - request.send(file); - } - function retryUpload() { - const fileUploaded = uploadZip(fileToUpload, uploadURL); - return fileUploaded; - } - function closeWindow(userTriggered) { - const message = userTriggered ? "SmileIdentity::Close" : "SmileIdentity::Close::System"; - referenceWindow.postMessage(message, "*"); - } - function handleSuccess() { - referenceWindow.postMessage("SmileIdentity::Success", "*"); - } - })(); -})(); -/*! Bundled license information: - -jszip/dist/jszip.min.js: - (*! - - JSZip v3.10.1 - A JavaScript class for generating and reading zip files - - - (c) 2009-2016 Stuart Knightley - Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. - - JSZip uses the library pako released under the MIT license : - https://github.com/nodeca/pako/blob/main/LICENSE - *) - -validate.js/validate.js: - (*! - * validate.js 0.13.1 - * - * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp - * Validate.js may be freely distributed under the MIT license. - * For all details and documentation: - * http://validatejs.org/ - *) -*/ diff --git a/packages/embed/build/js/components/.eslintrc.cjs b/packages/embed/build/js/components/.eslintrc.cjs deleted file mode 100644 index cea670a5..00000000 --- a/packages/embed/build/js/components/.eslintrc.cjs +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - rules: { - "max-classes-per-file": 0, - }, -}; diff --git a/packages/embed/build/js/demo-ekyc-smartselfie.min.js b/packages/embed/build/js/demo-ekyc-smartselfie.min.js deleted file mode 100644 index 7ffcd1c5..00000000 --- a/packages/embed/build/js/demo-ekyc-smartselfie.min.js +++ /dev/null @@ -1,41 +0,0 @@ -(() => { - // src/js/demo-ekyc-smartselfie.js - (function eKYCSmartSelfieSandbox() { - "use strict"; - const constraints = JSON.parse( - localStorage.getItem("SmileIdentityConstraints") - ); - const country = document.querySelector("#country").value; - const IDType = document.querySelector("#id_type").value; - const sandboxPII = { - first_name: "Ciroma", - last_name: "Adekunle", - day: "01", - month: "01", - year: "1970" - }; - const { required_fields: requiredFields, test_data: testData } = constraints[country].id_types[IDType]; - requiredFields.forEach((field) => { - if (field === "country" || field === "id_type" || field === "user_id" || field === "job_id") - return; - const element = document.querySelector(`#${field}`); - if (field === "id_number") { - element.setAttribute("value", testData); - element.setAttribute("readonly", true); - } else if (field === "dob") { - const day = element.querySelector("#day"); - const month = element.querySelector("#month"); - const year = element.querySelector("#year"); - day.setAttribute("readonly", true); - day.setAttribute("value", sandboxPII.day); - month.setAttribute("readonly", true); - month.setAttribute("value", sandboxPII.month); - year.setAttribute("readonly", true); - year.setAttribute("value", sandboxPII.year); - } else { - element.setAttribute("value", sandboxPII[field]); - element.setAttribute("readonly", true); - } - }); - })(); -})(); diff --git a/packages/embed/build/js/doc-verification.min.js b/packages/embed/build/js/doc-verification.min.js deleted file mode 100644 index bc241cc1..00000000 --- a/packages/embed/build/js/doc-verification.min.js +++ /dev/null @@ -1,5423 +0,0 @@ -(() => { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] - }) : x)(function(x) { - if (typeof require !== "undefined") - return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); - }); - var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod - )); - - // ../../node_modules/jszip/dist/jszip.min.js - var require_jszip_min = __commonJS({ - "../../node_modules/jszip/dist/jszip.min.js"(exports, module) { - !function(e) { - if ("object" == typeof exports && "undefined" != typeof module) - module.exports = e(); - else if ("function" == typeof define && define.amd) - define([], e); - else { - ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e(); - } - }(function() { - return function s(a, o, h) { - function u(r, e2) { - if (!o[r]) { - if (!a[r]) { - var t = "function" == typeof __require && __require; - if (!e2 && t) - return t(r, true); - if (l) - return l(r, true); - var n = new Error("Cannot find module '" + r + "'"); - throw n.code = "MODULE_NOT_FOUND", n; - } - var i = o[r] = { exports: {} }; - a[r][0].call(i.exports, function(e3) { - var t2 = a[r][1][e3]; - return u(t2 || e3); - }, i, i.exports, s, a, o, h); - } - return o[r].exports; - } - for (var l = "function" == typeof __require && __require, e = 0; e < h.length; e++) - u(h[e]); - return u; - }({ 1: [function(e, t, r) { - "use strict"; - var d = e("./utils"), c = e("./support"), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - r.encode = function(e2) { - for (var t2, r2, n, i, s, a, o, h = [], u = 0, l = e2.length, f = l, c2 = "string" !== d.getTypeOf(e2); u < e2.length; ) - f = l - u, n = c2 ? (t2 = e2[u++], r2 = u < l ? e2[u++] : 0, u < l ? e2[u++] : 0) : (t2 = e2.charCodeAt(u++), r2 = u < l ? e2.charCodeAt(u++) : 0, u < l ? e2.charCodeAt(u++) : 0), i = t2 >> 2, s = (3 & t2) << 4 | r2 >> 4, a = 1 < f ? (15 & r2) << 2 | n >> 6 : 64, o = 2 < f ? 63 & n : 64, h.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)); - return h.join(""); - }, r.decode = function(e2) { - var t2, r2, n, i, s, a, o = 0, h = 0, u = "data:"; - if (e2.substr(0, u.length) === u) - throw new Error("Invalid base64 input, it looks like a data url."); - var l, f = 3 * (e2 = e2.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; - if (e2.charAt(e2.length - 1) === p.charAt(64) && f--, e2.charAt(e2.length - 2) === p.charAt(64) && f--, f % 1 != 0) - throw new Error("Invalid base64 input, bad content length."); - for (l = c.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e2.length; ) - t2 = p.indexOf(e2.charAt(o++)) << 2 | (i = p.indexOf(e2.charAt(o++))) >> 4, r2 = (15 & i) << 4 | (s = p.indexOf(e2.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e2.charAt(o++))), l[h++] = t2, 64 !== s && (l[h++] = r2), 64 !== a && (l[h++] = n); - return l; - }; - }, { "./support": 30, "./utils": 32 }], 2: [function(e, t, r) { - "use strict"; - var n = e("./external"), i = e("./stream/DataWorker"), s = e("./stream/Crc32Probe"), a = e("./stream/DataLengthProbe"); - function o(e2, t2, r2, n2, i2) { - this.compressedSize = e2, this.uncompressedSize = t2, this.crc32 = r2, this.compression = n2, this.compressedContent = i2; - } - o.prototype = { getContentWorker: function() { - var e2 = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), t2 = this; - return e2.on("end", function() { - if (this.streamInfo.data_length !== t2.uncompressedSize) - throw new Error("Bug : uncompressed data size mismatch"); - }), e2; - }, getCompressedWorker: function() { - return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); - } }, o.createWorkerFrom = function(e2, t2, r2) { - return e2.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t2.compressWorker(r2)).pipe(new a("compressedSize")).withStreamInfo("compression", t2); - }, t.exports = o; - }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e, t, r) { - "use strict"; - var n = e("./stream/GenericWorker"); - r.STORE = { magic: "\0\0", compressWorker: function() { - return new n("STORE compression"); - }, uncompressWorker: function() { - return new n("STORE decompression"); - } }, r.DEFLATE = e("./flate"); - }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e, t, r) { - "use strict"; - var n = e("./utils"); - var o = function() { - for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { - e2 = r2; - for (var n2 = 0; n2 < 8; n2++) - e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; - t2[r2] = e2; - } - return t2; - }(); - t.exports = function(e2, t2) { - return void 0 !== e2 && e2.length ? "string" !== n.getTypeOf(e2) ? function(e3, t3, r2, n2) { - var i = o, s = n2 + r2; - e3 ^= -1; - for (var a = n2; a < s; a++) - e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3[a])]; - return -1 ^ e3; - }(0 | t2, e2, e2.length, 0) : function(e3, t3, r2, n2) { - var i = o, s = n2 + r2; - e3 ^= -1; - for (var a = n2; a < s; a++) - e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3.charCodeAt(a))]; - return -1 ^ e3; - }(0 | t2, e2, e2.length, 0) : 0; - }; - }, { "./utils": 32 }], 5: [function(e, t, r) { - "use strict"; - r.base64 = false, r.binary = false, r.dir = false, r.createFolders = true, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null; - }, {}], 6: [function(e, t, r) { - "use strict"; - var n = null; - n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n }; - }, { lie: 37 }], 7: [function(e, t, r) { - "use strict"; - var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i = e("pako"), s = e("./utils"), a = e("./stream/GenericWorker"), o = n ? "uint8array" : "array"; - function h(e2, t2) { - a.call(this, "FlateWorker/" + e2), this._pako = null, this._pakoAction = e2, this._pakoOptions = t2, this.meta = {}; - } - r.magic = "\b\0", s.inherits(h, a), h.prototype.processChunk = function(e2) { - this.meta = e2.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e2.data), false); - }, h.prototype.flush = function() { - a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); - }, h.prototype.cleanUp = function() { - a.prototype.cleanUp.call(this), this._pako = null; - }, h.prototype._createPako = function() { - this._pako = new i[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); - var t2 = this; - this._pako.onData = function(e2) { - t2.push({ data: e2, meta: t2.meta }); - }; - }, r.compressWorker = function(e2) { - return new h("Deflate", e2); - }, r.uncompressWorker = function() { - return new h("Inflate", {}); - }; - }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e, t, r) { - "use strict"; - function A(e2, t2) { - var r2, n2 = ""; - for (r2 = 0; r2 < t2; r2++) - n2 += String.fromCharCode(255 & e2), e2 >>>= 8; - return n2; - } - function n(e2, t2, r2, n2, i2, s2) { - var a, o, h = e2.file, u = e2.compression, l = s2 !== O.utf8encode, f = I.transformTo("string", s2(h.name)), c = I.transformTo("string", O.utf8encode(h.name)), d = h.comment, p = I.transformTo("string", s2(d)), m = I.transformTo("string", O.utf8encode(d)), _ = c.length !== h.name.length, g = m.length !== d.length, b = "", v = "", y = "", w = h.dir, k = h.date, x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; - t2 && !r2 || (x.crc32 = e2.crc32, x.compressedSize = e2.compressedSize, x.uncompressedSize = e2.uncompressedSize); - var S = 0; - t2 && (S |= 8), l || !_ && !g || (S |= 2048); - var z = 0, C = 0; - w && (z |= 16), "UNIX" === i2 ? (C = 798, z |= function(e3, t3) { - var r3 = e3; - return e3 || (r3 = t3 ? 16893 : 33204), (65535 & r3) << 16; - }(h.unixPermissions, w)) : (C = 20, z |= function(e3) { - return 63 & (e3 || 0); - }(h.dosPermissions)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v = A(1, 1) + A(B(f), 4) + c, b += "up" + A(v.length, 2) + v), g && (y = A(1, 1) + A(B(p), 4) + m, b += "uc" + A(y.length, 2) + y); - var E = ""; - return E += "\n\0", E += A(S, 2), E += u.magic, E += A(a, 2), E += A(o, 2), E += A(x.crc32, 4), E += A(x.compressedSize, 4), E += A(x.uncompressedSize, 4), E += A(f.length, 2), E += A(b.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + E + f + b, dirRecord: R.CENTRAL_FILE_HEADER + A(C, 2) + E + A(p.length, 2) + "\0\0\0\0" + A(z, 4) + A(n2, 4) + f + b + p }; - } - var I = e("../utils"), i = e("../stream/GenericWorker"), O = e("../utf8"), B = e("../crc32"), R = e("../signature"); - function s(e2, t2, r2, n2) { - i.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t2, this.zipPlatform = r2, this.encodeFileName = n2, this.streamFiles = e2, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; - } - I.inherits(s, i), s.prototype.push = function(e2) { - var t2 = e2.meta.percent || 0, r2 = this.entriesCount, n2 = this._sources.length; - this.accumulate ? this.contentBuffer.push(e2) : (this.bytesWritten += e2.data.length, i.prototype.push.call(this, { data: e2.data, meta: { currentFile: this.currentFile, percent: r2 ? (t2 + 100 * (r2 - n2 - 1)) / r2 : 100 } })); - }, s.prototype.openedSource = function(e2) { - this.currentSourceOffset = this.bytesWritten, this.currentFile = e2.file.name; - var t2 = this.streamFiles && !e2.file.dir; - if (t2) { - var r2 = n(e2, t2, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - this.push({ data: r2.fileRecord, meta: { percent: 0 } }); - } else - this.accumulate = true; - }, s.prototype.closedSource = function(e2) { - this.accumulate = false; - var t2 = this.streamFiles && !e2.file.dir, r2 = n(e2, t2, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - if (this.dirRecords.push(r2.dirRecord), t2) - this.push({ data: function(e3) { - return R.DATA_DESCRIPTOR + A(e3.crc32, 4) + A(e3.compressedSize, 4) + A(e3.uncompressedSize, 4); - }(e2), meta: { percent: 100 } }); - else - for (this.push({ data: r2.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) - this.push(this.contentBuffer.shift()); - this.currentFile = null; - }, s.prototype.flush = function() { - for (var e2 = this.bytesWritten, t2 = 0; t2 < this.dirRecords.length; t2++) - this.push({ data: this.dirRecords[t2], meta: { percent: 100 } }); - var r2 = this.bytesWritten - e2, n2 = function(e3, t3, r3, n3, i2) { - var s2 = I.transformTo("string", i2(n3)); - return R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A(e3, 2) + A(e3, 2) + A(t3, 4) + A(r3, 4) + A(s2.length, 2) + s2; - }(this.dirRecords.length, r2, e2, this.zipComment, this.encodeFileName); - this.push({ data: n2, meta: { percent: 100 } }); - }, s.prototype.prepareNextSource = function() { - this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); - }, s.prototype.registerPrevious = function(e2) { - this._sources.push(e2); - var t2 = this; - return e2.on("data", function(e3) { - t2.processChunk(e3); - }), e2.on("end", function() { - t2.closedSource(t2.previous.streamInfo), t2._sources.length ? t2.prepareNextSource() : t2.end(); - }), e2.on("error", function(e3) { - t2.error(e3); - }), this; - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true)); - }, s.prototype.error = function(e2) { - var t2 = this._sources; - if (!i.prototype.error.call(this, e2)) - return false; - for (var r2 = 0; r2 < t2.length; r2++) - try { - t2[r2].error(e2); - } catch (e3) { - } - return true; - }, s.prototype.lock = function() { - i.prototype.lock.call(this); - for (var e2 = this._sources, t2 = 0; t2 < e2.length; t2++) - e2[t2].lock(); - }, t.exports = s; - }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e, t, r) { - "use strict"; - var u = e("../compressions"), n = e("./ZipFileWorker"); - r.generateWorker = function(e2, a, t2) { - var o = new n(a.streamFiles, t2, a.platform, a.encodeFileName), h = 0; - try { - e2.forEach(function(e3, t3) { - h++; - var r2 = function(e4, t4) { - var r3 = e4 || t4, n3 = u[r3]; - if (!n3) - throw new Error(r3 + " is not a valid compression method !"); - return n3; - }(t3.options.compression, a.compression), n2 = t3.options.compressionOptions || a.compressionOptions || {}, i = t3.dir, s = t3.date; - t3._compressWorker(r2, n2).withStreamInfo("file", { name: e3, dir: i, date: s, comment: t3.comment || "", unixPermissions: t3.unixPermissions, dosPermissions: t3.dosPermissions }).pipe(o); - }), o.entriesCount = h; - } catch (e3) { - o.error(e3); - } - return o; - }; - }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e, t, r) { - "use strict"; - function n() { - if (!(this instanceof n)) - return new n(); - if (arguments.length) - throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); - this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { - var e2 = new n(); - for (var t2 in this) - "function" != typeof this[t2] && (e2[t2] = this[t2]); - return e2; - }; - } - (n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.10.1", n.loadAsync = function(e2, t2) { - return new n().loadAsync(e2, t2); - }, n.external = e("./external"), t.exports = n; - }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e, t, r) { - "use strict"; - var u = e("./utils"), i = e("./external"), n = e("./utf8"), s = e("./zipEntries"), a = e("./stream/Crc32Probe"), l = e("./nodejsUtils"); - function f(n2) { - return new i.Promise(function(e2, t2) { - var r2 = n2.decompressed.getContentWorker().pipe(new a()); - r2.on("error", function(e3) { - t2(e3); - }).on("end", function() { - r2.streamInfo.crc32 !== n2.decompressed.crc32 ? t2(new Error("Corrupted zip : CRC32 mismatch")) : e2(); - }).resume(); - }); - } - t.exports = function(e2, o) { - var h = this; - return o = u.extend(o || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n.utf8decode }), l.isNode && l.isStream(e2) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u.prepareContent("the loaded zip file", e2, true, o.optimizedBinaryString, o.base64).then(function(e3) { - var t2 = new s(o); - return t2.load(e3), t2; - }).then(function(e3) { - var t2 = [i.Promise.resolve(e3)], r2 = e3.files; - if (o.checkCRC32) - for (var n2 = 0; n2 < r2.length; n2++) - t2.push(f(r2[n2])); - return i.Promise.all(t2); - }).then(function(e3) { - for (var t2 = e3.shift(), r2 = t2.files, n2 = 0; n2 < r2.length; n2++) { - var i2 = r2[n2], s2 = i2.fileNameStr, a2 = u.resolve(i2.fileNameStr); - h.file(a2, i2.decompressed, { binary: true, optimizedBinaryString: true, date: i2.date, dir: i2.dir, comment: i2.fileCommentStr.length ? i2.fileCommentStr : null, unixPermissions: i2.unixPermissions, dosPermissions: i2.dosPermissions, createFolders: o.createFolders }), i2.dir || (h.file(a2).unsafeOriginalName = s2); - } - return t2.zipComment.length && (h.comment = t2.zipComment), h; - }); - }; - }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("../stream/GenericWorker"); - function s(e2, t2) { - i.call(this, "Nodejs stream input adapter for " + e2), this._upstreamEnded = false, this._bindStream(t2); - } - n.inherits(s, i), s.prototype._bindStream = function(e2) { - var t2 = this; - (this._stream = e2).pause(), e2.on("data", function(e3) { - t2.push({ data: e3, meta: { percent: 0 } }); - }).on("error", function(e3) { - t2.isPaused ? this.generatedError = e3 : t2.error(e3); - }).on("end", function() { - t2.isPaused ? t2._upstreamEnded = true : t2.end(); - }); - }, s.prototype.pause = function() { - return !!i.prototype.pause.call(this) && (this._stream.pause(), true); - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); - }, t.exports = s; - }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e, t, r) { - "use strict"; - var i = e("readable-stream").Readable; - function n(e2, t2, r2) { - i.call(this, t2), this._helper = e2; - var n2 = this; - e2.on("data", function(e3, t3) { - n2.push(e3) || n2._helper.pause(), r2 && r2(t3); - }).on("error", function(e3) { - n2.emit("error", e3); - }).on("end", function() { - n2.push(null); - }); - } - e("../utils").inherits(n, i), n.prototype._read = function() { - this._helper.resume(); - }, t.exports = n; - }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e, t, r) { - "use strict"; - t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e2, t2) { - if (Buffer.from && Buffer.from !== Uint8Array.from) - return Buffer.from(e2, t2); - if ("number" == typeof e2) - throw new Error('The "data" argument must not be a number'); - return new Buffer(e2, t2); - }, allocBuffer: function(e2) { - if (Buffer.alloc) - return Buffer.alloc(e2); - var t2 = new Buffer(e2); - return t2.fill(0), t2; - }, isBuffer: function(e2) { - return Buffer.isBuffer(e2); - }, isStream: function(e2) { - return e2 && "function" == typeof e2.on && "function" == typeof e2.pause && "function" == typeof e2.resume; - } }; - }, {}], 15: [function(e, t, r) { - "use strict"; - function s(e2, t2, r2) { - var n2, i2 = u.getTypeOf(t2), s2 = u.extend(r2 || {}, f); - s2.date = s2.date || /* @__PURE__ */ new Date(), null !== s2.compression && (s2.compression = s2.compression.toUpperCase()), "string" == typeof s2.unixPermissions && (s2.unixPermissions = parseInt(s2.unixPermissions, 8)), s2.unixPermissions && 16384 & s2.unixPermissions && (s2.dir = true), s2.dosPermissions && 16 & s2.dosPermissions && (s2.dir = true), s2.dir && (e2 = g(e2)), s2.createFolders && (n2 = _(e2)) && b.call(this, n2, true); - var a2 = "string" === i2 && false === s2.binary && false === s2.base64; - r2 && void 0 !== r2.binary || (s2.binary = !a2), (t2 instanceof c && 0 === t2.uncompressedSize || s2.dir || !t2 || 0 === t2.length) && (s2.base64 = false, s2.binary = true, t2 = "", s2.compression = "STORE", i2 = "string"); - var o2 = null; - o2 = t2 instanceof c || t2 instanceof l ? t2 : p.isNode && p.isStream(t2) ? new m(e2, t2) : u.prepareContent(e2, t2, s2.binary, s2.optimizedBinaryString, s2.base64); - var h2 = new d(e2, o2, s2); - this.files[e2] = h2; - } - var i = e("./utf8"), u = e("./utils"), l = e("./stream/GenericWorker"), a = e("./stream/StreamHelper"), f = e("./defaults"), c = e("./compressedObject"), d = e("./zipObject"), o = e("./generate"), p = e("./nodejsUtils"), m = e("./nodejs/NodejsStreamInputAdapter"), _ = function(e2) { - "/" === e2.slice(-1) && (e2 = e2.substring(0, e2.length - 1)); - var t2 = e2.lastIndexOf("/"); - return 0 < t2 ? e2.substring(0, t2) : ""; - }, g = function(e2) { - return "/" !== e2.slice(-1) && (e2 += "/"), e2; - }, b = function(e2, t2) { - return t2 = void 0 !== t2 ? t2 : f.createFolders, e2 = g(e2), this.files[e2] || s.call(this, e2, null, { dir: true, createFolders: t2 }), this.files[e2]; - }; - function h(e2) { - return "[object RegExp]" === Object.prototype.toString.call(e2); - } - var n = { load: function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, forEach: function(e2) { - var t2, r2, n2; - for (t2 in this.files) - n2 = this.files[t2], (r2 = t2.slice(this.root.length, t2.length)) && t2.slice(0, this.root.length) === this.root && e2(r2, n2); - }, filter: function(r2) { - var n2 = []; - return this.forEach(function(e2, t2) { - r2(e2, t2) && n2.push(t2); - }), n2; - }, file: function(e2, t2, r2) { - if (1 !== arguments.length) - return e2 = this.root + e2, s.call(this, e2, t2, r2), this; - if (h(e2)) { - var n2 = e2; - return this.filter(function(e3, t3) { - return !t3.dir && n2.test(e3); - }); - } - var i2 = this.files[this.root + e2]; - return i2 && !i2.dir ? i2 : null; - }, folder: function(r2) { - if (!r2) - return this; - if (h(r2)) - return this.filter(function(e3, t3) { - return t3.dir && r2.test(e3); - }); - var e2 = this.root + r2, t2 = b.call(this, e2), n2 = this.clone(); - return n2.root = t2.name, n2; - }, remove: function(r2) { - r2 = this.root + r2; - var e2 = this.files[r2]; - if (e2 || ("/" !== r2.slice(-1) && (r2 += "/"), e2 = this.files[r2]), e2 && !e2.dir) - delete this.files[r2]; - else - for (var t2 = this.filter(function(e3, t3) { - return t3.name.slice(0, r2.length) === r2; - }), n2 = 0; n2 < t2.length; n2++) - delete this.files[t2[n2].name]; - return this; - }, generate: function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, generateInternalStream: function(e2) { - var t2, r2 = {}; - try { - if ((r2 = u.extend(e2 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r2.type.toLowerCase(), r2.compression = r2.compression.toUpperCase(), "binarystring" === r2.type && (r2.type = "string"), !r2.type) - throw new Error("No output type specified."); - u.checkSupport(r2.type), "darwin" !== r2.platform && "freebsd" !== r2.platform && "linux" !== r2.platform && "sunos" !== r2.platform || (r2.platform = "UNIX"), "win32" === r2.platform && (r2.platform = "DOS"); - var n2 = r2.comment || this.comment || ""; - t2 = o.generateWorker(this, r2, n2); - } catch (e3) { - (t2 = new l("error")).error(e3); - } - return new a(t2, r2.type || "string", r2.mimeType); - }, generateAsync: function(e2, t2) { - return this.generateInternalStream(e2).accumulate(t2); - }, generateNodeStream: function(e2, t2) { - return (e2 = e2 || {}).type || (e2.type = "nodebuffer"), this.generateInternalStream(e2).toNodejsStream(t2); - } }; - t.exports = n; - }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e, t, r) { - "use strict"; - t.exports = e("stream"); - }, { stream: void 0 }], 17: [function(e, t, r) { - "use strict"; - var n = e("./DataReader"); - function i(e2) { - n.call(this, e2); - for (var t2 = 0; t2 < this.data.length; t2++) - e2[t2] = 255 & e2[t2]; - } - e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { - return this.data[this.zero + e2]; - }, i.prototype.lastIndexOfSignature = function(e2) { - for (var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.length - 4; 0 <= s; --s) - if (this.data[s] === t2 && this.data[s + 1] === r2 && this.data[s + 2] === n2 && this.data[s + 3] === i2) - return s - this.zero; - return -1; - }, i.prototype.readAndCheckSignature = function(e2) { - var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.readData(4); - return t2 === s[0] && r2 === s[1] && n2 === s[2] && i2 === s[3]; - }, i.prototype.readData = function(e2) { - if (this.checkOffset(e2), 0 === e2) - return []; - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e, t, r) { - "use strict"; - var n = e("../utils"); - function i(e2) { - this.data = e2, this.length = e2.length, this.index = 0, this.zero = 0; - } - i.prototype = { checkOffset: function(e2) { - this.checkIndex(this.index + e2); - }, checkIndex: function(e2) { - if (this.length < this.zero + e2 || e2 < 0) - throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e2 + "). Corrupted zip ?"); - }, setIndex: function(e2) { - this.checkIndex(e2), this.index = e2; - }, skip: function(e2) { - this.setIndex(this.index + e2); - }, byteAt: function() { - }, readInt: function(e2) { - var t2, r2 = 0; - for (this.checkOffset(e2), t2 = this.index + e2 - 1; t2 >= this.index; t2--) - r2 = (r2 << 8) + this.byteAt(t2); - return this.index += e2, r2; - }, readString: function(e2) { - return n.transformTo("string", this.readData(e2)); - }, readData: function() { - }, lastIndexOfSignature: function() { - }, readAndCheckSignature: function() { - }, readDate: function() { - var e2 = this.readInt(4); - return new Date(Date.UTC(1980 + (e2 >> 25 & 127), (e2 >> 21 & 15) - 1, e2 >> 16 & 31, e2 >> 11 & 31, e2 >> 5 & 63, (31 & e2) << 1)); - } }, t.exports = i; - }, { "../utils": 32 }], 19: [function(e, t, r) { - "use strict"; - var n = e("./Uint8ArrayReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.readData = function(e2) { - this.checkOffset(e2); - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e, t, r) { - "use strict"; - var n = e("./DataReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { - return this.data.charCodeAt(this.zero + e2); - }, i.prototype.lastIndexOfSignature = function(e2) { - return this.data.lastIndexOf(e2) - this.zero; - }, i.prototype.readAndCheckSignature = function(e2) { - return e2 === this.readData(4); - }, i.prototype.readData = function(e2) { - this.checkOffset(e2); - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e, t, r) { - "use strict"; - var n = e("./ArrayReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.readData = function(e2) { - if (this.checkOffset(e2), 0 === e2) - return new Uint8Array(0); - var t2 = this.data.subarray(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("../support"), s = e("./ArrayReader"), a = e("./StringReader"), o = e("./NodeBufferReader"), h = e("./Uint8ArrayReader"); - t.exports = function(e2) { - var t2 = n.getTypeOf(e2); - return n.checkSupport(t2), "string" !== t2 || i.uint8array ? "nodebuffer" === t2 ? new o(e2) : i.uint8array ? new h(n.transformTo("uint8array", e2)) : new s(n.transformTo("array", e2)) : new a(e2); - }; - }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e, t, r) { - "use strict"; - r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\x07\b"; - }, {}], 24: [function(e, t, r) { - "use strict"; - var n = e("./GenericWorker"), i = e("../utils"); - function s(e2) { - n.call(this, "ConvertWorker to " + e2), this.destType = e2; - } - i.inherits(s, n), s.prototype.processChunk = function(e2) { - this.push({ data: i.transformTo(this.destType, e2.data), meta: e2.meta }); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e, t, r) { - "use strict"; - var n = e("./GenericWorker"), i = e("../crc32"); - function s() { - n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); - } - e("../utils").inherits(s, n), s.prototype.processChunk = function(e2) { - this.streamInfo.crc32 = i(e2.data, this.streamInfo.crc32 || 0), this.push(e2); - }, t.exports = s; - }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("./GenericWorker"); - function s(e2) { - i.call(this, "DataLengthProbe for " + e2), this.propName = e2, this.withStreamInfo(e2, 0); - } - n.inherits(s, i), s.prototype.processChunk = function(e2) { - if (e2) { - var t2 = this.streamInfo[this.propName] || 0; - this.streamInfo[this.propName] = t2 + e2.data.length; - } - i.prototype.processChunk.call(this, e2); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("./GenericWorker"); - function s(e2) { - i.call(this, "DataWorker"); - var t2 = this; - this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e2.then(function(e3) { - t2.dataIsReady = true, t2.data = e3, t2.max = e3 && e3.length || 0, t2.type = n.getTypeOf(e3), t2.isPaused || t2._tickAndRepeat(); - }, function(e3) { - t2.error(e3); - }); - } - n.inherits(s, i), s.prototype.cleanUp = function() { - i.prototype.cleanUp.call(this), this.data = null; - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n.delay(this._tickAndRepeat, [], this)), true); - }, s.prototype._tickAndRepeat = function() { - this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); - }, s.prototype._tick = function() { - if (this.isPaused || this.isFinished) - return false; - var e2 = null, t2 = Math.min(this.max, this.index + 16384); - if (this.index >= this.max) - return this.end(); - switch (this.type) { - case "string": - e2 = this.data.substring(this.index, t2); - break; - case "uint8array": - e2 = this.data.subarray(this.index, t2); - break; - case "array": - case "nodebuffer": - e2 = this.data.slice(this.index, t2); - } - return this.index = t2, this.push({ data: e2, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e, t, r) { - "use strict"; - function n(e2) { - this.name = e2 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; - } - n.prototype = { push: function(e2) { - this.emit("data", e2); - }, end: function() { - if (this.isFinished) - return false; - this.flush(); - try { - this.emit("end"), this.cleanUp(), this.isFinished = true; - } catch (e2) { - this.emit("error", e2); - } - return true; - }, error: function(e2) { - return !this.isFinished && (this.isPaused ? this.generatedError = e2 : (this.isFinished = true, this.emit("error", e2), this.previous && this.previous.error(e2), this.cleanUp()), true); - }, on: function(e2, t2) { - return this._listeners[e2].push(t2), this; - }, cleanUp: function() { - this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; - }, emit: function(e2, t2) { - if (this._listeners[e2]) - for (var r2 = 0; r2 < this._listeners[e2].length; r2++) - this._listeners[e2][r2].call(this, t2); - }, pipe: function(e2) { - return e2.registerPrevious(this); - }, registerPrevious: function(e2) { - if (this.isLocked) - throw new Error("The stream '" + this + "' has already been used."); - this.streamInfo = e2.streamInfo, this.mergeStreamInfo(), this.previous = e2; - var t2 = this; - return e2.on("data", function(e3) { - t2.processChunk(e3); - }), e2.on("end", function() { - t2.end(); - }), e2.on("error", function(e3) { - t2.error(e3); - }), this; - }, pause: function() { - return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); - }, resume: function() { - if (!this.isPaused || this.isFinished) - return false; - var e2 = this.isPaused = false; - return this.generatedError && (this.error(this.generatedError), e2 = true), this.previous && this.previous.resume(), !e2; - }, flush: function() { - }, processChunk: function(e2) { - this.push(e2); - }, withStreamInfo: function(e2, t2) { - return this.extraStreamInfo[e2] = t2, this.mergeStreamInfo(), this; - }, mergeStreamInfo: function() { - for (var e2 in this.extraStreamInfo) - Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e2) && (this.streamInfo[e2] = this.extraStreamInfo[e2]); - }, lock: function() { - if (this.isLocked) - throw new Error("The stream '" + this + "' has already been used."); - this.isLocked = true, this.previous && this.previous.lock(); - }, toString: function() { - var e2 = "Worker " + this.name; - return this.previous ? this.previous + " -> " + e2 : e2; - } }, t.exports = n; - }, {}], 29: [function(e, t, r) { - "use strict"; - var h = e("../utils"), i = e("./ConvertWorker"), s = e("./GenericWorker"), u = e("../base64"), n = e("../support"), a = e("../external"), o = null; - if (n.nodestream) - try { - o = e("../nodejs/NodejsStreamOutputAdapter"); - } catch (e2) { - } - function l(e2, o2) { - return new a.Promise(function(t2, r2) { - var n2 = [], i2 = e2._internalType, s2 = e2._outputType, a2 = e2._mimeType; - e2.on("data", function(e3, t3) { - n2.push(e3), o2 && o2(t3); - }).on("error", function(e3) { - n2 = [], r2(e3); - }).on("end", function() { - try { - var e3 = function(e4, t3, r3) { - switch (e4) { - case "blob": - return h.newBlob(h.transformTo("arraybuffer", t3), r3); - case "base64": - return u.encode(t3); - default: - return h.transformTo(e4, t3); - } - }(s2, function(e4, t3) { - var r3, n3 = 0, i3 = null, s3 = 0; - for (r3 = 0; r3 < t3.length; r3++) - s3 += t3[r3].length; - switch (e4) { - case "string": - return t3.join(""); - case "array": - return Array.prototype.concat.apply([], t3); - case "uint8array": - for (i3 = new Uint8Array(s3), r3 = 0; r3 < t3.length; r3++) - i3.set(t3[r3], n3), n3 += t3[r3].length; - return i3; - case "nodebuffer": - return Buffer.concat(t3); - default: - throw new Error("concat : unsupported type '" + e4 + "'"); - } - }(i2, n2), a2); - t2(e3); - } catch (e4) { - r2(e4); - } - n2 = []; - }).resume(); - }); - } - function f(e2, t2, r2) { - var n2 = t2; - switch (t2) { - case "blob": - case "arraybuffer": - n2 = "uint8array"; - break; - case "base64": - n2 = "string"; - } - try { - this._internalType = n2, this._outputType = t2, this._mimeType = r2, h.checkSupport(n2), this._worker = e2.pipe(new i(n2)), e2.lock(); - } catch (e3) { - this._worker = new s("error"), this._worker.error(e3); - } - } - f.prototype = { accumulate: function(e2) { - return l(this, e2); - }, on: function(e2, t2) { - var r2 = this; - return "data" === e2 ? this._worker.on(e2, function(e3) { - t2.call(r2, e3.data, e3.meta); - }) : this._worker.on(e2, function() { - h.delay(t2, arguments, r2); - }), this; - }, resume: function() { - return h.delay(this._worker.resume, [], this._worker), this; - }, pause: function() { - return this._worker.pause(), this; - }, toNodejsStream: function(e2) { - if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) - throw new Error(this._outputType + " is not supported by this method"); - return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e2); - } }, t.exports = f; - }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e, t, r) { - "use strict"; - if (r.base64 = true, r.array = true, r.string = true, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) - r.blob = false; - else { - var n = new ArrayBuffer(0); - try { - r.blob = 0 === new Blob([n], { type: "application/zip" }).size; - } catch (e2) { - try { - var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); - i.append(n), r.blob = 0 === i.getBlob("application/zip").size; - } catch (e3) { - r.blob = false; - } - } - } - try { - r.nodestream = !!e("readable-stream").Readable; - } catch (e2) { - r.nodestream = false; - } - }, { "readable-stream": 16 }], 31: [function(e, t, s) { - "use strict"; - for (var o = e("./utils"), h = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), u = new Array(256), i = 0; i < 256; i++) - u[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1; - u[254] = u[254] = 1; - function a() { - n.call(this, "utf-8 decode"), this.leftOver = null; - } - function l() { - n.call(this, "utf-8 encode"); - } - s.utf8encode = function(e2) { - return h.nodebuffer ? r.newBufferFrom(e2, "utf-8") : function(e3) { - var t2, r2, n2, i2, s2, a2 = e3.length, o2 = 0; - for (i2 = 0; i2 < a2; i2++) - 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o2 += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; - for (t2 = h.uint8array ? new Uint8Array(o2) : new Array(o2), i2 = s2 = 0; s2 < o2; i2++) - 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); - return t2; - }(e2); - }, s.utf8decode = function(e2) { - return h.nodebuffer ? o.transformTo("nodebuffer", e2).toString("utf-8") : function(e3) { - var t2, r2, n2, i2, s2 = e3.length, a2 = new Array(2 * s2); - for (t2 = r2 = 0; t2 < s2; ) - if ((n2 = e3[t2++]) < 128) - a2[r2++] = n2; - else if (4 < (i2 = u[n2])) - a2[r2++] = 65533, t2 += i2 - 1; - else { - for (n2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && t2 < s2; ) - n2 = n2 << 6 | 63 & e3[t2++], i2--; - 1 < i2 ? a2[r2++] = 65533 : n2 < 65536 ? a2[r2++] = n2 : (n2 -= 65536, a2[r2++] = 55296 | n2 >> 10 & 1023, a2[r2++] = 56320 | 1023 & n2); - } - return a2.length !== r2 && (a2.subarray ? a2 = a2.subarray(0, r2) : a2.length = r2), o.applyFromCharCode(a2); - }(e2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2)); - }, o.inherits(a, n), a.prototype.processChunk = function(e2) { - var t2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2.data); - if (this.leftOver && this.leftOver.length) { - if (h.uint8array) { - var r2 = t2; - (t2 = new Uint8Array(r2.length + this.leftOver.length)).set(this.leftOver, 0), t2.set(r2, this.leftOver.length); - } else - t2 = this.leftOver.concat(t2); - this.leftOver = null; - } - var n2 = function(e3, t3) { - var r3; - for ((t3 = t3 || e3.length) > e3.length && (t3 = e3.length), r3 = t3 - 1; 0 <= r3 && 128 == (192 & e3[r3]); ) - r3--; - return r3 < 0 ? t3 : 0 === r3 ? t3 : r3 + u[e3[r3]] > t3 ? r3 : t3; - }(t2), i2 = t2; - n2 !== t2.length && (h.uint8array ? (i2 = t2.subarray(0, n2), this.leftOver = t2.subarray(n2, t2.length)) : (i2 = t2.slice(0, n2), this.leftOver = t2.slice(n2, t2.length))), this.push({ data: s.utf8decode(i2), meta: e2.meta }); - }, a.prototype.flush = function() { - this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); - }, s.Utf8DecodeWorker = a, o.inherits(l, n), l.prototype.processChunk = function(e2) { - this.push({ data: s.utf8encode(e2.data), meta: e2.meta }); - }, s.Utf8EncodeWorker = l; - }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e, t, a) { - "use strict"; - var o = e("./support"), h = e("./base64"), r = e("./nodejsUtils"), u = e("./external"); - function n(e2) { - return e2; - } - function l(e2, t2) { - for (var r2 = 0; r2 < e2.length; ++r2) - t2[r2] = 255 & e2.charCodeAt(r2); - return t2; - } - e("setimmediate"), a.newBlob = function(t2, r2) { - a.checkSupport("blob"); - try { - return new Blob([t2], { type: r2 }); - } catch (e2) { - try { - var n2 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); - return n2.append(t2), n2.getBlob(r2); - } catch (e3) { - throw new Error("Bug : can't construct the Blob."); - } - } - }; - var i = { stringifyByChunk: function(e2, t2, r2) { - var n2 = [], i2 = 0, s2 = e2.length; - if (s2 <= r2) - return String.fromCharCode.apply(null, e2); - for (; i2 < s2; ) - "array" === t2 || "nodebuffer" === t2 ? n2.push(String.fromCharCode.apply(null, e2.slice(i2, Math.min(i2 + r2, s2)))) : n2.push(String.fromCharCode.apply(null, e2.subarray(i2, Math.min(i2 + r2, s2)))), i2 += r2; - return n2.join(""); - }, stringifyByChar: function(e2) { - for (var t2 = "", r2 = 0; r2 < e2.length; r2++) - t2 += String.fromCharCode(e2[r2]); - return t2; - }, applyCanBeUsed: { uint8array: function() { - try { - return o.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; - } catch (e2) { - return false; - } - }(), nodebuffer: function() { - try { - return o.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length; - } catch (e2) { - return false; - } - }() } }; - function s(e2) { - var t2 = 65536, r2 = a.getTypeOf(e2), n2 = true; - if ("uint8array" === r2 ? n2 = i.applyCanBeUsed.uint8array : "nodebuffer" === r2 && (n2 = i.applyCanBeUsed.nodebuffer), n2) - for (; 1 < t2; ) - try { - return i.stringifyByChunk(e2, r2, t2); - } catch (e3) { - t2 = Math.floor(t2 / 2); - } - return i.stringifyByChar(e2); - } - function f(e2, t2) { - for (var r2 = 0; r2 < e2.length; r2++) - t2[r2] = e2[r2]; - return t2; - } - a.applyFromCharCode = s; - var c = {}; - c.string = { string: n, array: function(e2) { - return l(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return c.string.uint8array(e2).buffer; - }, uint8array: function(e2) { - return l(e2, new Uint8Array(e2.length)); - }, nodebuffer: function(e2) { - return l(e2, r.allocBuffer(e2.length)); - } }, c.array = { string: s, array: n, arraybuffer: function(e2) { - return new Uint8Array(e2).buffer; - }, uint8array: function(e2) { - return new Uint8Array(e2); - }, nodebuffer: function(e2) { - return r.newBufferFrom(e2); - } }, c.arraybuffer = { string: function(e2) { - return s(new Uint8Array(e2)); - }, array: function(e2) { - return f(new Uint8Array(e2), new Array(e2.byteLength)); - }, arraybuffer: n, uint8array: function(e2) { - return new Uint8Array(e2); - }, nodebuffer: function(e2) { - return r.newBufferFrom(new Uint8Array(e2)); - } }, c.uint8array = { string: s, array: function(e2) { - return f(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return e2.buffer; - }, uint8array: n, nodebuffer: function(e2) { - return r.newBufferFrom(e2); - } }, c.nodebuffer = { string: s, array: function(e2) { - return f(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return c.nodebuffer.uint8array(e2).buffer; - }, uint8array: function(e2) { - return f(e2, new Uint8Array(e2.length)); - }, nodebuffer: n }, a.transformTo = function(e2, t2) { - if (t2 = t2 || "", !e2) - return t2; - a.checkSupport(e2); - var r2 = a.getTypeOf(t2); - return c[r2][e2](t2); - }, a.resolve = function(e2) { - for (var t2 = e2.split("/"), r2 = [], n2 = 0; n2 < t2.length; n2++) { - var i2 = t2[n2]; - "." === i2 || "" === i2 && 0 !== n2 && n2 !== t2.length - 1 || (".." === i2 ? r2.pop() : r2.push(i2)); - } - return r2.join("/"); - }, a.getTypeOf = function(e2) { - return "string" == typeof e2 ? "string" : "[object Array]" === Object.prototype.toString.call(e2) ? "array" : o.nodebuffer && r.isBuffer(e2) ? "nodebuffer" : o.uint8array && e2 instanceof Uint8Array ? "uint8array" : o.arraybuffer && e2 instanceof ArrayBuffer ? "arraybuffer" : void 0; - }, a.checkSupport = function(e2) { - if (!o[e2.toLowerCase()]) - throw new Error(e2 + " is not supported by this platform"); - }, a.MAX_VALUE_16BITS = 65535, a.MAX_VALUE_32BITS = -1, a.pretty = function(e2) { - var t2, r2, n2 = ""; - for (r2 = 0; r2 < (e2 || "").length; r2++) - n2 += "\\x" + ((t2 = e2.charCodeAt(r2)) < 16 ? "0" : "") + t2.toString(16).toUpperCase(); - return n2; - }, a.delay = function(e2, t2, r2) { - setImmediate(function() { - e2.apply(r2 || null, t2 || []); - }); - }, a.inherits = function(e2, t2) { - function r2() { - } - r2.prototype = t2.prototype, e2.prototype = new r2(); - }, a.extend = function() { - var e2, t2, r2 = {}; - for (e2 = 0; e2 < arguments.length; e2++) - for (t2 in arguments[e2]) - Object.prototype.hasOwnProperty.call(arguments[e2], t2) && void 0 === r2[t2] && (r2[t2] = arguments[e2][t2]); - return r2; - }, a.prepareContent = function(r2, e2, n2, i2, s2) { - return u.Promise.resolve(e2).then(function(n3) { - return o.blob && (n3 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n3))) && "undefined" != typeof FileReader ? new u.Promise(function(t2, r3) { - var e3 = new FileReader(); - e3.onload = function(e4) { - t2(e4.target.result); - }, e3.onerror = function(e4) { - r3(e4.target.error); - }, e3.readAsArrayBuffer(n3); - }) : n3; - }).then(function(e3) { - var t2 = a.getTypeOf(e3); - return t2 ? ("arraybuffer" === t2 ? e3 = a.transformTo("uint8array", e3) : "string" === t2 && (s2 ? e3 = h.decode(e3) : n2 && true !== i2 && (e3 = function(e4) { - return l(e4, o.uint8array ? new Uint8Array(e4.length) : new Array(e4.length)); - }(e3))), e3) : u.Promise.reject(new Error("Can't read the data of '" + r2 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); - }); - }; - }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e, t, r) { - "use strict"; - var n = e("./reader/readerFor"), i = e("./utils"), s = e("./signature"), a = e("./zipEntry"), o = e("./support"); - function h(e2) { - this.files = [], this.loadOptions = e2; - } - h.prototype = { checkSignature: function(e2) { - if (!this.reader.readAndCheckSignature(e2)) { - this.reader.index -= 4; - var t2 = this.reader.readString(4); - throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t2) + ", expected " + i.pretty(e2) + ")"); - } - }, isSignature: function(e2, t2) { - var r2 = this.reader.index; - this.reader.setIndex(e2); - var n2 = this.reader.readString(4) === t2; - return this.reader.setIndex(r2), n2; - }, readBlockEndOfCentral: function() { - this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); - var e2 = this.reader.readData(this.zipCommentLength), t2 = o.uint8array ? "uint8array" : "array", r2 = i.transformTo(t2, e2); - this.zipComment = this.loadOptions.decodeFileName(r2); - }, readBlockZip64EndOfCentral: function() { - this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; - for (var e2, t2, r2, n2 = this.zip64EndOfCentralSize - 44; 0 < n2; ) - e2 = this.reader.readInt(2), t2 = this.reader.readInt(4), r2 = this.reader.readData(t2), this.zip64ExtensibleData[e2] = { id: e2, length: t2, value: r2 }; - }, readBlockZip64EndOfCentralLocator: function() { - if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) - throw new Error("Multi-volumes zip are not supported"); - }, readLocalFiles: function() { - var e2, t2; - for (e2 = 0; e2 < this.files.length; e2++) - t2 = this.files[e2], this.reader.setIndex(t2.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t2.readLocalPart(this.reader), t2.handleUTF8(), t2.processAttributes(); - }, readCentralDir: function() { - var e2; - for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER); ) - (e2 = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e2); - if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) - throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); - }, readEndOfCentral: function() { - var e2 = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END); - if (e2 < 0) - throw !this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); - this.reader.setIndex(e2); - var t2 = e2; - if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) { - if (this.zip64 = true, (e2 = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) - throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); - if (this.reader.setIndex(e2), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) - throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); - this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); - } - var r2 = this.centralDirOffset + this.centralDirSize; - this.zip64 && (r2 += 20, r2 += 12 + this.zip64EndOfCentralSize); - var n2 = t2 - r2; - if (0 < n2) - this.isSignature(t2, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n2); - else if (n2 < 0) - throw new Error("Corrupted zip: missing " + Math.abs(n2) + " bytes."); - }, prepareReader: function(e2) { - this.reader = n(e2); - }, load: function(e2) { - this.prepareReader(e2), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); - } }, t.exports = h; - }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e, t, r) { - "use strict"; - var n = e("./reader/readerFor"), s = e("./utils"), i = e("./compressedObject"), a = e("./crc32"), o = e("./utf8"), h = e("./compressions"), u = e("./support"); - function l(e2, t2) { - this.options = e2, this.loadOptions = t2; - } - l.prototype = { isEncrypted: function() { - return 1 == (1 & this.bitFlag); - }, useUTF8: function() { - return 2048 == (2048 & this.bitFlag); - }, readLocalPart: function(e2) { - var t2, r2; - if (e2.skip(22), this.fileNameLength = e2.readInt(2), r2 = e2.readInt(2), this.fileName = e2.readData(this.fileNameLength), e2.skip(r2), -1 === this.compressedSize || -1 === this.uncompressedSize) - throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); - if (null === (t2 = function(e3) { - for (var t3 in h) - if (Object.prototype.hasOwnProperty.call(h, t3) && h[t3].magic === e3) - return h[t3]; - return null; - }(this.compressionMethod))) - throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")"); - this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t2, e2.readData(this.compressedSize)); - }, readCentralPart: function(e2) { - this.versionMadeBy = e2.readInt(2), e2.skip(2), this.bitFlag = e2.readInt(2), this.compressionMethod = e2.readString(2), this.date = e2.readDate(), this.crc32 = e2.readInt(4), this.compressedSize = e2.readInt(4), this.uncompressedSize = e2.readInt(4); - var t2 = e2.readInt(2); - if (this.extraFieldsLength = e2.readInt(2), this.fileCommentLength = e2.readInt(2), this.diskNumberStart = e2.readInt(2), this.internalFileAttributes = e2.readInt(2), this.externalFileAttributes = e2.readInt(4), this.localHeaderOffset = e2.readInt(4), this.isEncrypted()) - throw new Error("Encrypted zip are not supported"); - e2.skip(t2), this.readExtraFields(e2), this.parseZIP64ExtraField(e2), this.fileComment = e2.readData(this.fileCommentLength); - }, processAttributes: function() { - this.unixPermissions = null, this.dosPermissions = null; - var e2 = this.versionMadeBy >> 8; - this.dir = !!(16 & this.externalFileAttributes), 0 == e2 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e2 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); - }, parseZIP64ExtraField: function() { - if (this.extraFields[1]) { - var e2 = n(this.extraFields[1].value); - this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = e2.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = e2.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = e2.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = e2.readInt(4)); - } - }, readExtraFields: function(e2) { - var t2, r2, n2, i2 = e2.index + this.extraFieldsLength; - for (this.extraFields || (this.extraFields = {}); e2.index + 4 < i2; ) - t2 = e2.readInt(2), r2 = e2.readInt(2), n2 = e2.readData(r2), this.extraFields[t2] = { id: t2, length: r2, value: n2 }; - e2.setIndex(i2); - }, handleUTF8: function() { - var e2 = u.uint8array ? "uint8array" : "array"; - if (this.useUTF8()) - this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment); - else { - var t2 = this.findExtraFieldUnicodePath(); - if (null !== t2) - this.fileNameStr = t2; - else { - var r2 = s.transformTo(e2, this.fileName); - this.fileNameStr = this.loadOptions.decodeFileName(r2); - } - var n2 = this.findExtraFieldUnicodeComment(); - if (null !== n2) - this.fileCommentStr = n2; - else { - var i2 = s.transformTo(e2, this.fileComment); - this.fileCommentStr = this.loadOptions.decodeFileName(i2); - } - } - }, findExtraFieldUnicodePath: function() { - var e2 = this.extraFields[28789]; - if (e2) { - var t2 = n(e2.value); - return 1 !== t2.readInt(1) ? null : a(this.fileName) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); - } - return null; - }, findExtraFieldUnicodeComment: function() { - var e2 = this.extraFields[25461]; - if (e2) { - var t2 = n(e2.value); - return 1 !== t2.readInt(1) ? null : a(this.fileComment) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); - } - return null; - } }, t.exports = l; - }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e, t, r) { - "use strict"; - function n(e2, t2, r2) { - this.name = e2, this.dir = r2.dir, this.date = r2.date, this.comment = r2.comment, this.unixPermissions = r2.unixPermissions, this.dosPermissions = r2.dosPermissions, this._data = t2, this._dataBinary = r2.binary, this.options = { compression: r2.compression, compressionOptions: r2.compressionOptions }; - } - var s = e("./stream/StreamHelper"), i = e("./stream/DataWorker"), a = e("./utf8"), o = e("./compressedObject"), h = e("./stream/GenericWorker"); - n.prototype = { internalStream: function(e2) { - var t2 = null, r2 = "string"; - try { - if (!e2) - throw new Error("No output type specified."); - var n2 = "string" === (r2 = e2.toLowerCase()) || "text" === r2; - "binarystring" !== r2 && "text" !== r2 || (r2 = "string"), t2 = this._decompressWorker(); - var i2 = !this._dataBinary; - i2 && !n2 && (t2 = t2.pipe(new a.Utf8EncodeWorker())), !i2 && n2 && (t2 = t2.pipe(new a.Utf8DecodeWorker())); - } catch (e3) { - (t2 = new h("error")).error(e3); - } - return new s(t2, r2, ""); - }, async: function(e2, t2) { - return this.internalStream(e2).accumulate(t2); - }, nodeStream: function(e2, t2) { - return this.internalStream(e2 || "nodebuffer").toNodejsStream(t2); - }, _compressWorker: function(e2, t2) { - if (this._data instanceof o && this._data.compression.magic === e2.magic) - return this._data.getCompressedWorker(); - var r2 = this._decompressWorker(); - return this._dataBinary || (r2 = r2.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r2, e2, t2); - }, _decompressWorker: function() { - return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof h ? this._data : new i(this._data); - } }; - for (var u = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, f = 0; f < u.length; f++) - n.prototype[u[f]] = l; - t.exports = n; - }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e, l, t) { - (function(t2) { - "use strict"; - var r, n, e2 = t2.MutationObserver || t2.WebKitMutationObserver; - if (e2) { - var i = 0, s = new e2(u), a = t2.document.createTextNode(""); - s.observe(a, { characterData: true }), r = function() { - a.data = i = ++i % 2; - }; - } else if (t2.setImmediate || void 0 === t2.MessageChannel) - r = "document" in t2 && "onreadystatechange" in t2.document.createElement("script") ? function() { - var e3 = t2.document.createElement("script"); - e3.onreadystatechange = function() { - u(), e3.onreadystatechange = null, e3.parentNode.removeChild(e3), e3 = null; - }, t2.document.documentElement.appendChild(e3); - } : function() { - setTimeout(u, 0); - }; - else { - var o = new t2.MessageChannel(); - o.port1.onmessage = u, r = function() { - o.port2.postMessage(0); - }; - } - var h = []; - function u() { - var e3, t3; - n = true; - for (var r2 = h.length; r2; ) { - for (t3 = h, h = [], e3 = -1; ++e3 < r2; ) - t3[e3](); - r2 = h.length; - } - n = false; - } - l.exports = function(e3) { - 1 !== h.push(e3) || n || r(); - }; - }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); - }, {}], 37: [function(e, t, r) { - "use strict"; - var i = e("immediate"); - function u() { - } - var l = {}, s = ["REJECTED"], a = ["FULFILLED"], n = ["PENDING"]; - function o(e2) { - if ("function" != typeof e2) - throw new TypeError("resolver must be a function"); - this.state = n, this.queue = [], this.outcome = void 0, e2 !== u && d(this, e2); - } - function h(e2, t2, r2) { - this.promise = e2, "function" == typeof t2 && (this.onFulfilled = t2, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r2 && (this.onRejected = r2, this.callRejected = this.otherCallRejected); - } - function f(t2, r2, n2) { - i(function() { - var e2; - try { - e2 = r2(n2); - } catch (e3) { - return l.reject(t2, e3); - } - e2 === t2 ? l.reject(t2, new TypeError("Cannot resolve promise with itself")) : l.resolve(t2, e2); - }); - } - function c(e2) { - var t2 = e2 && e2.then; - if (e2 && ("object" == typeof e2 || "function" == typeof e2) && "function" == typeof t2) - return function() { - t2.apply(e2, arguments); - }; - } - function d(t2, e2) { - var r2 = false; - function n2(e3) { - r2 || (r2 = true, l.reject(t2, e3)); - } - function i2(e3) { - r2 || (r2 = true, l.resolve(t2, e3)); - } - var s2 = p(function() { - e2(i2, n2); - }); - "error" === s2.status && n2(s2.value); - } - function p(e2, t2) { - var r2 = {}; - try { - r2.value = e2(t2), r2.status = "success"; - } catch (e3) { - r2.status = "error", r2.value = e3; - } - return r2; - } - (t.exports = o).prototype.finally = function(t2) { - if ("function" != typeof t2) - return this; - var r2 = this.constructor; - return this.then(function(e2) { - return r2.resolve(t2()).then(function() { - return e2; - }); - }, function(e2) { - return r2.resolve(t2()).then(function() { - throw e2; - }); - }); - }, o.prototype.catch = function(e2) { - return this.then(null, e2); - }, o.prototype.then = function(e2, t2) { - if ("function" != typeof e2 && this.state === a || "function" != typeof t2 && this.state === s) - return this; - var r2 = new this.constructor(u); - this.state !== n ? f(r2, this.state === a ? e2 : t2, this.outcome) : this.queue.push(new h(r2, e2, t2)); - return r2; - }, h.prototype.callFulfilled = function(e2) { - l.resolve(this.promise, e2); - }, h.prototype.otherCallFulfilled = function(e2) { - f(this.promise, this.onFulfilled, e2); - }, h.prototype.callRejected = function(e2) { - l.reject(this.promise, e2); - }, h.prototype.otherCallRejected = function(e2) { - f(this.promise, this.onRejected, e2); - }, l.resolve = function(e2, t2) { - var r2 = p(c, t2); - if ("error" === r2.status) - return l.reject(e2, r2.value); - var n2 = r2.value; - if (n2) - d(e2, n2); - else { - e2.state = a, e2.outcome = t2; - for (var i2 = -1, s2 = e2.queue.length; ++i2 < s2; ) - e2.queue[i2].callFulfilled(t2); - } - return e2; - }, l.reject = function(e2, t2) { - e2.state = s, e2.outcome = t2; - for (var r2 = -1, n2 = e2.queue.length; ++r2 < n2; ) - e2.queue[r2].callRejected(t2); - return e2; - }, o.resolve = function(e2) { - if (e2 instanceof this) - return e2; - return l.resolve(new this(u), e2); - }, o.reject = function(e2) { - var t2 = new this(u); - return l.reject(t2, e2); - }, o.all = function(e2) { - var r2 = this; - if ("[object Array]" !== Object.prototype.toString.call(e2)) - return this.reject(new TypeError("must be an array")); - var n2 = e2.length, i2 = false; - if (!n2) - return this.resolve([]); - var s2 = new Array(n2), a2 = 0, t2 = -1, o2 = new this(u); - for (; ++t2 < n2; ) - h2(e2[t2], t2); - return o2; - function h2(e3, t3) { - r2.resolve(e3).then(function(e4) { - s2[t3] = e4, ++a2 !== n2 || i2 || (i2 = true, l.resolve(o2, s2)); - }, function(e4) { - i2 || (i2 = true, l.reject(o2, e4)); - }); - } - }, o.race = function(e2) { - var t2 = this; - if ("[object Array]" !== Object.prototype.toString.call(e2)) - return this.reject(new TypeError("must be an array")); - var r2 = e2.length, n2 = false; - if (!r2) - return this.resolve([]); - var i2 = -1, s2 = new this(u); - for (; ++i2 < r2; ) - a2 = e2[i2], t2.resolve(a2).then(function(e3) { - n2 || (n2 = true, l.resolve(s2, e3)); - }, function(e3) { - n2 || (n2 = true, l.reject(s2, e3)); - }); - var a2; - return s2; - }; - }, { immediate: 36 }], 38: [function(e, t, r) { - "use strict"; - var n = {}; - (0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n; - }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e, t, r) { - "use strict"; - var a = e("./zlib/deflate"), o = e("./utils/common"), h = e("./utils/strings"), i = e("./zlib/messages"), s = e("./zlib/zstream"), u = Object.prototype.toString, l = 0, f = -1, c = 0, d = 8; - function p(e2) { - if (!(this instanceof p)) - return new p(e2); - this.options = o.assign({ level: f, method: d, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c, to: "" }, e2 || {}); - var t2 = this.options; - t2.raw && 0 < t2.windowBits ? t2.windowBits = -t2.windowBits : t2.gzip && 0 < t2.windowBits && t2.windowBits < 16 && (t2.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0; - var r2 = a.deflateInit2(this.strm, t2.level, t2.method, t2.windowBits, t2.memLevel, t2.strategy); - if (r2 !== l) - throw new Error(i[r2]); - if (t2.header && a.deflateSetHeader(this.strm, t2.header), t2.dictionary) { - var n2; - if (n2 = "string" == typeof t2.dictionary ? h.string2buf(t2.dictionary) : "[object ArrayBuffer]" === u.call(t2.dictionary) ? new Uint8Array(t2.dictionary) : t2.dictionary, (r2 = a.deflateSetDictionary(this.strm, n2)) !== l) - throw new Error(i[r2]); - this._dict_set = true; - } - } - function n(e2, t2) { - var r2 = new p(t2); - if (r2.push(e2, true), r2.err) - throw r2.msg || i[r2.err]; - return r2.result; - } - p.prototype.push = function(e2, t2) { - var r2, n2, i2 = this.strm, s2 = this.options.chunkSize; - if (this.ended) - return false; - n2 = t2 === ~~t2 ? t2 : true === t2 ? 4 : 0, "string" == typeof e2 ? i2.input = h.string2buf(e2) : "[object ArrayBuffer]" === u.call(e2) ? i2.input = new Uint8Array(e2) : i2.input = e2, i2.next_in = 0, i2.avail_in = i2.input.length; - do { - if (0 === i2.avail_out && (i2.output = new o.Buf8(s2), i2.next_out = 0, i2.avail_out = s2), 1 !== (r2 = a.deflate(i2, n2)) && r2 !== l) - return this.onEnd(r2), !(this.ended = true); - 0 !== i2.avail_out && (0 !== i2.avail_in || 4 !== n2 && 2 !== n2) || ("string" === this.options.to ? this.onData(h.buf2binstring(o.shrinkBuf(i2.output, i2.next_out))) : this.onData(o.shrinkBuf(i2.output, i2.next_out))); - } while ((0 < i2.avail_in || 0 === i2.avail_out) && 1 !== r2); - return 4 === n2 ? (r2 = a.deflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === l) : 2 !== n2 || (this.onEnd(l), !(i2.avail_out = 0)); - }, p.prototype.onData = function(e2) { - this.chunks.push(e2); - }, p.prototype.onEnd = function(e2) { - e2 === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; - }, r.Deflate = p, r.deflate = n, r.deflateRaw = function(e2, t2) { - return (t2 = t2 || {}).raw = true, n(e2, t2); - }, r.gzip = function(e2, t2) { - return (t2 = t2 || {}).gzip = true, n(e2, t2); - }; - }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e, t, r) { - "use strict"; - var c = e("./zlib/inflate"), d = e("./utils/common"), p = e("./utils/strings"), m = e("./zlib/constants"), n = e("./zlib/messages"), i = e("./zlib/zstream"), s = e("./zlib/gzheader"), _ = Object.prototype.toString; - function a(e2) { - if (!(this instanceof a)) - return new a(e2); - this.options = d.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {}); - var t2 = this.options; - t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0; - var r2 = c.inflateInit2(this.strm, t2.windowBits); - if (r2 !== m.Z_OK) - throw new Error(n[r2]); - this.header = new s(), c.inflateGetHeader(this.strm, this.header); - } - function o(e2, t2) { - var r2 = new a(t2); - if (r2.push(e2, true), r2.err) - throw r2.msg || n[r2.err]; - return r2.result; - } - a.prototype.push = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h = this.strm, u = this.options.chunkSize, l = this.options.dictionary, f = false; - if (this.ended) - return false; - n2 = t2 === ~~t2 ? t2 : true === t2 ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e2 ? h.input = p.binstring2buf(e2) : "[object ArrayBuffer]" === _.call(e2) ? h.input = new Uint8Array(e2) : h.input = e2, h.next_in = 0, h.avail_in = h.input.length; - do { - if (0 === h.avail_out && (h.output = new d.Buf8(u), h.next_out = 0, h.avail_out = u), (r2 = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && l && (o2 = "string" == typeof l ? p.string2buf(l) : "[object ArrayBuffer]" === _.call(l) ? new Uint8Array(l) : l, r2 = c.inflateSetDictionary(this.strm, o2)), r2 === m.Z_BUF_ERROR && true === f && (r2 = m.Z_OK, f = false), r2 !== m.Z_STREAM_END && r2 !== m.Z_OK) - return this.onEnd(r2), !(this.ended = true); - h.next_out && (0 !== h.avail_out && r2 !== m.Z_STREAM_END && (0 !== h.avail_in || n2 !== m.Z_FINISH && n2 !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i2 = p.utf8border(h.output, h.next_out), s2 = h.next_out - i2, a2 = p.buf2string(h.output, i2), h.next_out = s2, h.avail_out = u - s2, s2 && d.arraySet(h.output, h.output, i2, s2, 0), this.onData(a2)) : this.onData(d.shrinkBuf(h.output, h.next_out)))), 0 === h.avail_in && 0 === h.avail_out && (f = true); - } while ((0 < h.avail_in || 0 === h.avail_out) && r2 !== m.Z_STREAM_END); - return r2 === m.Z_STREAM_END && (n2 = m.Z_FINISH), n2 === m.Z_FINISH ? (r2 = c.inflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === m.Z_OK) : n2 !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(h.avail_out = 0)); - }, a.prototype.onData = function(e2) { - this.chunks.push(e2); - }, a.prototype.onEnd = function(e2) { - e2 === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; - }, r.Inflate = a, r.inflate = o, r.inflateRaw = function(e2, t2) { - return (t2 = t2 || {}).raw = true, o(e2, t2); - }, r.ungzip = o; - }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e, t, r) { - "use strict"; - var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; - r.assign = function(e2) { - for (var t2 = Array.prototype.slice.call(arguments, 1); t2.length; ) { - var r2 = t2.shift(); - if (r2) { - if ("object" != typeof r2) - throw new TypeError(r2 + "must be non-object"); - for (var n2 in r2) - r2.hasOwnProperty(n2) && (e2[n2] = r2[n2]); - } - } - return e2; - }, r.shrinkBuf = function(e2, t2) { - return e2.length === t2 ? e2 : e2.subarray ? e2.subarray(0, t2) : (e2.length = t2, e2); - }; - var i = { arraySet: function(e2, t2, r2, n2, i2) { - if (t2.subarray && e2.subarray) - e2.set(t2.subarray(r2, r2 + n2), i2); - else - for (var s2 = 0; s2 < n2; s2++) - e2[i2 + s2] = t2[r2 + s2]; - }, flattenChunks: function(e2) { - var t2, r2, n2, i2, s2, a; - for (t2 = n2 = 0, r2 = e2.length; t2 < r2; t2++) - n2 += e2[t2].length; - for (a = new Uint8Array(n2), t2 = i2 = 0, r2 = e2.length; t2 < r2; t2++) - s2 = e2[t2], a.set(s2, i2), i2 += s2.length; - return a; - } }, s = { arraySet: function(e2, t2, r2, n2, i2) { - for (var s2 = 0; s2 < n2; s2++) - e2[i2 + s2] = t2[r2 + s2]; - }, flattenChunks: function(e2) { - return [].concat.apply([], e2); - } }; - r.setTyped = function(e2) { - e2 ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s)); - }, r.setTyped(n); - }, {}], 42: [function(e, t, r) { - "use strict"; - var h = e("./common"), i = true, s = true; - try { - String.fromCharCode.apply(null, [0]); - } catch (e2) { - i = false; - } - try { - String.fromCharCode.apply(null, new Uint8Array(1)); - } catch (e2) { - s = false; - } - for (var u = new h.Buf8(256), n = 0; n < 256; n++) - u[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; - function l(e2, t2) { - if (t2 < 65537 && (e2.subarray && s || !e2.subarray && i)) - return String.fromCharCode.apply(null, h.shrinkBuf(e2, t2)); - for (var r2 = "", n2 = 0; n2 < t2; n2++) - r2 += String.fromCharCode(e2[n2]); - return r2; - } - u[254] = u[254] = 1, r.string2buf = function(e2) { - var t2, r2, n2, i2, s2, a = e2.length, o = 0; - for (i2 = 0; i2 < a; i2++) - 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; - for (t2 = new h.Buf8(o), i2 = s2 = 0; s2 < o; i2++) - 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); - return t2; - }, r.buf2binstring = function(e2) { - return l(e2, e2.length); - }, r.binstring2buf = function(e2) { - for (var t2 = new h.Buf8(e2.length), r2 = 0, n2 = t2.length; r2 < n2; r2++) - t2[r2] = e2.charCodeAt(r2); - return t2; - }, r.buf2string = function(e2, t2) { - var r2, n2, i2, s2, a = t2 || e2.length, o = new Array(2 * a); - for (r2 = n2 = 0; r2 < a; ) - if ((i2 = e2[r2++]) < 128) - o[n2++] = i2; - else if (4 < (s2 = u[i2])) - o[n2++] = 65533, r2 += s2 - 1; - else { - for (i2 &= 2 === s2 ? 31 : 3 === s2 ? 15 : 7; 1 < s2 && r2 < a; ) - i2 = i2 << 6 | 63 & e2[r2++], s2--; - 1 < s2 ? o[n2++] = 65533 : i2 < 65536 ? o[n2++] = i2 : (i2 -= 65536, o[n2++] = 55296 | i2 >> 10 & 1023, o[n2++] = 56320 | 1023 & i2); - } - return l(o, n2); - }, r.utf8border = function(e2, t2) { - var r2; - for ((t2 = t2 || e2.length) > e2.length && (t2 = e2.length), r2 = t2 - 1; 0 <= r2 && 128 == (192 & e2[r2]); ) - r2--; - return r2 < 0 ? t2 : 0 === r2 ? t2 : r2 + u[e2[r2]] > t2 ? r2 : t2; - }; - }, { "./common": 41 }], 43: [function(e, t, r) { - "use strict"; - t.exports = function(e2, t2, r2, n) { - for (var i = 65535 & e2 | 0, s = e2 >>> 16 & 65535 | 0, a = 0; 0 !== r2; ) { - for (r2 -= a = 2e3 < r2 ? 2e3 : r2; s = s + (i = i + t2[n++] | 0) | 0, --a; ) - ; - i %= 65521, s %= 65521; - } - return i | s << 16 | 0; - }; - }, {}], 44: [function(e, t, r) { - "use strict"; - t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; - }, {}], 45: [function(e, t, r) { - "use strict"; - var o = function() { - for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { - e2 = r2; - for (var n = 0; n < 8; n++) - e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; - t2[r2] = e2; - } - return t2; - }(); - t.exports = function(e2, t2, r2, n) { - var i = o, s = n + r2; - e2 ^= -1; - for (var a = n; a < s; a++) - e2 = e2 >>> 8 ^ i[255 & (e2 ^ t2[a])]; - return -1 ^ e2; - }; - }, {}], 46: [function(e, t, r) { - "use strict"; - var h, c = e("../utils/common"), u = e("./trees"), d = e("./adler32"), p = e("./crc32"), n = e("./messages"), l = 0, f = 4, m = 0, _ = -2, g = -1, b = 4, i = 2, v = 8, y = 9, s = 286, a = 30, o = 19, w = 2 * s + 1, k = 15, x = 3, S = 258, z = S + x + 1, C = 42, E = 113, A = 1, I = 2, O = 3, B = 4; - function R(e2, t2) { - return e2.msg = n[t2], t2; - } - function T(e2) { - return (e2 << 1) - (4 < e2 ? 9 : 0); - } - function D(e2) { - for (var t2 = e2.length; 0 <= --t2; ) - e2[t2] = 0; - } - function F(e2) { - var t2 = e2.state, r2 = t2.pending; - r2 > e2.avail_out && (r2 = e2.avail_out), 0 !== r2 && (c.arraySet(e2.output, t2.pending_buf, t2.pending_out, r2, e2.next_out), e2.next_out += r2, t2.pending_out += r2, e2.total_out += r2, e2.avail_out -= r2, t2.pending -= r2, 0 === t2.pending && (t2.pending_out = 0)); - } - function N(e2, t2) { - u._tr_flush_block(e2, 0 <= e2.block_start ? e2.block_start : -1, e2.strstart - e2.block_start, t2), e2.block_start = e2.strstart, F(e2.strm); - } - function U(e2, t2) { - e2.pending_buf[e2.pending++] = t2; - } - function P(e2, t2) { - e2.pending_buf[e2.pending++] = t2 >>> 8 & 255, e2.pending_buf[e2.pending++] = 255 & t2; - } - function L(e2, t2) { - var r2, n2, i2 = e2.max_chain_length, s2 = e2.strstart, a2 = e2.prev_length, o2 = e2.nice_match, h2 = e2.strstart > e2.w_size - z ? e2.strstart - (e2.w_size - z) : 0, u2 = e2.window, l2 = e2.w_mask, f2 = e2.prev, c2 = e2.strstart + S, d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; - e2.prev_length >= e2.good_match && (i2 >>= 2), o2 > e2.lookahead && (o2 = e2.lookahead); - do { - if (u2[(r2 = t2) + a2] === p2 && u2[r2 + a2 - 1] === d2 && u2[r2] === u2[s2] && u2[++r2] === u2[s2 + 1]) { - s2 += 2, r2++; - do { - } while (u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && s2 < c2); - if (n2 = S - (c2 - s2), s2 = c2 - S, a2 < n2) { - if (e2.match_start = t2, o2 <= (a2 = n2)) - break; - d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; - } - } - } while ((t2 = f2[t2 & l2]) > h2 && 0 != --i2); - return a2 <= e2.lookahead ? a2 : e2.lookahead; - } - function j(e2) { - var t2, r2, n2, i2, s2, a2, o2, h2, u2, l2, f2 = e2.w_size; - do { - if (i2 = e2.window_size - e2.lookahead - e2.strstart, e2.strstart >= f2 + (f2 - z)) { - for (c.arraySet(e2.window, e2.window, f2, f2, 0), e2.match_start -= f2, e2.strstart -= f2, e2.block_start -= f2, t2 = r2 = e2.hash_size; n2 = e2.head[--t2], e2.head[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) - ; - for (t2 = r2 = f2; n2 = e2.prev[--t2], e2.prev[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) - ; - i2 += f2; - } - if (0 === e2.strm.avail_in) - break; - if (a2 = e2.strm, o2 = e2.window, h2 = e2.strstart + e2.lookahead, u2 = i2, l2 = void 0, l2 = a2.avail_in, u2 < l2 && (l2 = u2), r2 = 0 === l2 ? 0 : (a2.avail_in -= l2, c.arraySet(o2, a2.input, a2.next_in, l2, h2), 1 === a2.state.wrap ? a2.adler = d(a2.adler, o2, l2, h2) : 2 === a2.state.wrap && (a2.adler = p(a2.adler, o2, l2, h2)), a2.next_in += l2, a2.total_in += l2, l2), e2.lookahead += r2, e2.lookahead + e2.insert >= x) - for (s2 = e2.strstart - e2.insert, e2.ins_h = e2.window[s2], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + 1]) & e2.hash_mask; e2.insert && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + x - 1]) & e2.hash_mask, e2.prev[s2 & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = s2, s2++, e2.insert--, !(e2.lookahead + e2.insert < x)); ) - ; - } while (e2.lookahead < z && 0 !== e2.strm.avail_in); - } - function Z(e2, t2) { - for (var r2, n2; ; ) { - if (e2.lookahead < z) { - if (j(e2), e2.lookahead < z && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 !== r2 && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2)), e2.match_length >= x) - if (n2 = u._tr_tally(e2, e2.strstart - e2.match_start, e2.match_length - x), e2.lookahead -= e2.match_length, e2.match_length <= e2.max_lazy_match && e2.lookahead >= x) { - for (e2.match_length--; e2.strstart++, e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart, 0 != --e2.match_length; ) - ; - e2.strstart++; - } else - e2.strstart += e2.match_length, e2.match_length = 0, e2.ins_h = e2.window[e2.strstart], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + 1]) & e2.hash_mask; - else - n2 = u._tr_tally(e2, 0, e2.window[e2.strstart]), e2.lookahead--, e2.strstart++; - if (n2 && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } - return e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; - } - function W(e2, t2) { - for (var r2, n2, i2; ; ) { - if (e2.lookahead < z) { - if (j(e2), e2.lookahead < z && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), e2.prev_length = e2.match_length, e2.prev_match = e2.match_start, e2.match_length = x - 1, 0 !== r2 && e2.prev_length < e2.max_lazy_match && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2), e2.match_length <= 5 && (1 === e2.strategy || e2.match_length === x && 4096 < e2.strstart - e2.match_start) && (e2.match_length = x - 1)), e2.prev_length >= x && e2.match_length <= e2.prev_length) { - for (i2 = e2.strstart + e2.lookahead - x, n2 = u._tr_tally(e2, e2.strstart - 1 - e2.prev_match, e2.prev_length - x), e2.lookahead -= e2.prev_length - 1, e2.prev_length -= 2; ++e2.strstart <= i2 && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 != --e2.prev_length; ) - ; - if (e2.match_available = 0, e2.match_length = x - 1, e2.strstart++, n2 && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } else if (e2.match_available) { - if ((n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1])) && N(e2, false), e2.strstart++, e2.lookahead--, 0 === e2.strm.avail_out) - return A; - } else - e2.match_available = 1, e2.strstart++, e2.lookahead--; - } - return e2.match_available && (n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1]), e2.match_available = 0), e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; - } - function M(e2, t2, r2, n2, i2) { - this.good_length = e2, this.max_lazy = t2, this.nice_length = r2, this.max_chain = n2, this.func = i2; - } - function H() { - this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c.Buf16(2 * w), this.dyn_dtree = new c.Buf16(2 * (2 * a + 1)), this.bl_tree = new c.Buf16(2 * (2 * o + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c.Buf16(k + 1), this.heap = new c.Buf16(2 * s + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c.Buf16(2 * s + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; - } - function G(e2) { - var t2; - return e2 && e2.state ? (e2.total_in = e2.total_out = 0, e2.data_type = i, (t2 = e2.state).pending = 0, t2.pending_out = 0, t2.wrap < 0 && (t2.wrap = -t2.wrap), t2.status = t2.wrap ? C : E, e2.adler = 2 === t2.wrap ? 0 : 1, t2.last_flush = l, u._tr_init(t2), m) : R(e2, _); - } - function K(e2) { - var t2 = G(e2); - return t2 === m && function(e3) { - e3.window_size = 2 * e3.w_size, D(e3.head), e3.max_lazy_match = h[e3.level].max_lazy, e3.good_match = h[e3.level].good_length, e3.nice_match = h[e3.level].nice_length, e3.max_chain_length = h[e3.level].max_chain, e3.strstart = 0, e3.block_start = 0, e3.lookahead = 0, e3.insert = 0, e3.match_length = e3.prev_length = x - 1, e3.match_available = 0, e3.ins_h = 0; - }(e2.state), t2; - } - function Y(e2, t2, r2, n2, i2, s2) { - if (!e2) - return _; - var a2 = 1; - if (t2 === g && (t2 = 6), n2 < 0 ? (a2 = 0, n2 = -n2) : 15 < n2 && (a2 = 2, n2 -= 16), i2 < 1 || y < i2 || r2 !== v || n2 < 8 || 15 < n2 || t2 < 0 || 9 < t2 || s2 < 0 || b < s2) - return R(e2, _); - 8 === n2 && (n2 = 9); - var o2 = new H(); - return (e2.state = o2).strm = e2, o2.wrap = a2, o2.gzhead = null, o2.w_bits = n2, o2.w_size = 1 << o2.w_bits, o2.w_mask = o2.w_size - 1, o2.hash_bits = i2 + 7, o2.hash_size = 1 << o2.hash_bits, o2.hash_mask = o2.hash_size - 1, o2.hash_shift = ~~((o2.hash_bits + x - 1) / x), o2.window = new c.Buf8(2 * o2.w_size), o2.head = new c.Buf16(o2.hash_size), o2.prev = new c.Buf16(o2.w_size), o2.lit_bufsize = 1 << i2 + 6, o2.pending_buf_size = 4 * o2.lit_bufsize, o2.pending_buf = new c.Buf8(o2.pending_buf_size), o2.d_buf = 1 * o2.lit_bufsize, o2.l_buf = 3 * o2.lit_bufsize, o2.level = t2, o2.strategy = s2, o2.method = r2, K(e2); - } - h = [new M(0, 0, 0, 0, function(e2, t2) { - var r2 = 65535; - for (r2 > e2.pending_buf_size - 5 && (r2 = e2.pending_buf_size - 5); ; ) { - if (e2.lookahead <= 1) { - if (j(e2), 0 === e2.lookahead && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - e2.strstart += e2.lookahead, e2.lookahead = 0; - var n2 = e2.block_start + r2; - if ((0 === e2.strstart || e2.strstart >= n2) && (e2.lookahead = e2.strstart - n2, e2.strstart = n2, N(e2, false), 0 === e2.strm.avail_out)) - return A; - if (e2.strstart - e2.block_start >= e2.w_size - z && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } - return e2.insert = 0, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : (e2.strstart > e2.block_start && (N(e2, false), e2.strm.avail_out), A); - }), new M(4, 4, 8, 4, Z), new M(4, 5, 16, 8, Z), new M(4, 6, 32, 32, Z), new M(4, 4, 16, 16, W), new M(8, 16, 32, 32, W), new M(8, 16, 128, 128, W), new M(8, 32, 128, 256, W), new M(32, 128, 258, 1024, W), new M(32, 258, 258, 4096, W)], r.deflateInit = function(e2, t2) { - return Y(e2, t2, v, 15, 8, 0); - }, r.deflateInit2 = Y, r.deflateReset = K, r.deflateResetKeep = G, r.deflateSetHeader = function(e2, t2) { - return e2 && e2.state ? 2 !== e2.state.wrap ? _ : (e2.state.gzhead = t2, m) : _; - }, r.deflate = function(e2, t2) { - var r2, n2, i2, s2; - if (!e2 || !e2.state || 5 < t2 || t2 < 0) - return e2 ? R(e2, _) : _; - if (n2 = e2.state, !e2.output || !e2.input && 0 !== e2.avail_in || 666 === n2.status && t2 !== f) - return R(e2, 0 === e2.avail_out ? -5 : _); - if (n2.strm = e2, r2 = n2.last_flush, n2.last_flush = t2, n2.status === C) - if (2 === n2.wrap) - e2.adler = 0, U(n2, 31), U(n2, 139), U(n2, 8), n2.gzhead ? (U(n2, (n2.gzhead.text ? 1 : 0) + (n2.gzhead.hcrc ? 2 : 0) + (n2.gzhead.extra ? 4 : 0) + (n2.gzhead.name ? 8 : 0) + (n2.gzhead.comment ? 16 : 0)), U(n2, 255 & n2.gzhead.time), U(n2, n2.gzhead.time >> 8 & 255), U(n2, n2.gzhead.time >> 16 & 255), U(n2, n2.gzhead.time >> 24 & 255), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 255 & n2.gzhead.os), n2.gzhead.extra && n2.gzhead.extra.length && (U(n2, 255 & n2.gzhead.extra.length), U(n2, n2.gzhead.extra.length >> 8 & 255)), n2.gzhead.hcrc && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending, 0)), n2.gzindex = 0, n2.status = 69) : (U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 3), n2.status = E); - else { - var a2 = v + (n2.w_bits - 8 << 4) << 8; - a2 |= (2 <= n2.strategy || n2.level < 2 ? 0 : n2.level < 6 ? 1 : 6 === n2.level ? 2 : 3) << 6, 0 !== n2.strstart && (a2 |= 32), a2 += 31 - a2 % 31, n2.status = E, P(n2, a2), 0 !== n2.strstart && (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), e2.adler = 1; - } - if (69 === n2.status) - if (n2.gzhead.extra) { - for (i2 = n2.pending; n2.gzindex < (65535 & n2.gzhead.extra.length) && (n2.pending !== n2.pending_buf_size || (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending !== n2.pending_buf_size)); ) - U(n2, 255 & n2.gzhead.extra[n2.gzindex]), n2.gzindex++; - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), n2.gzindex === n2.gzhead.extra.length && (n2.gzindex = 0, n2.status = 73); - } else - n2.status = 73; - if (73 === n2.status) - if (n2.gzhead.name) { - i2 = n2.pending; - do { - if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { - s2 = 1; - break; - } - s2 = n2.gzindex < n2.gzhead.name.length ? 255 & n2.gzhead.name.charCodeAt(n2.gzindex++) : 0, U(n2, s2); - } while (0 !== s2); - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.gzindex = 0, n2.status = 91); - } else - n2.status = 91; - if (91 === n2.status) - if (n2.gzhead.comment) { - i2 = n2.pending; - do { - if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { - s2 = 1; - break; - } - s2 = n2.gzindex < n2.gzhead.comment.length ? 255 & n2.gzhead.comment.charCodeAt(n2.gzindex++) : 0, U(n2, s2); - } while (0 !== s2); - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.status = 103); - } else - n2.status = 103; - if (103 === n2.status && (n2.gzhead.hcrc ? (n2.pending + 2 > n2.pending_buf_size && F(e2), n2.pending + 2 <= n2.pending_buf_size && (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), e2.adler = 0, n2.status = E)) : n2.status = E), 0 !== n2.pending) { - if (F(e2), 0 === e2.avail_out) - return n2.last_flush = -1, m; - } else if (0 === e2.avail_in && T(t2) <= T(r2) && t2 !== f) - return R(e2, -5); - if (666 === n2.status && 0 !== e2.avail_in) - return R(e2, -5); - if (0 !== e2.avail_in || 0 !== n2.lookahead || t2 !== l && 666 !== n2.status) { - var o2 = 2 === n2.strategy ? function(e3, t3) { - for (var r3; ; ) { - if (0 === e3.lookahead && (j(e3), 0 === e3.lookahead)) { - if (t3 === l) - return A; - break; - } - if (e3.match_length = 0, r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++, r3 && (N(e3, false), 0 === e3.strm.avail_out)) - return A; - } - return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; - }(n2, t2) : 3 === n2.strategy ? function(e3, t3) { - for (var r3, n3, i3, s3, a3 = e3.window; ; ) { - if (e3.lookahead <= S) { - if (j(e3), e3.lookahead <= S && t3 === l) - return A; - if (0 === e3.lookahead) - break; - } - if (e3.match_length = 0, e3.lookahead >= x && 0 < e3.strstart && (n3 = a3[i3 = e3.strstart - 1]) === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3]) { - s3 = e3.strstart + S; - do { - } while (n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && i3 < s3); - e3.match_length = S - (s3 - i3), e3.match_length > e3.lookahead && (e3.match_length = e3.lookahead); - } - if (e3.match_length >= x ? (r3 = u._tr_tally(e3, 1, e3.match_length - x), e3.lookahead -= e3.match_length, e3.strstart += e3.match_length, e3.match_length = 0) : (r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++), r3 && (N(e3, false), 0 === e3.strm.avail_out)) - return A; - } - return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; - }(n2, t2) : h[n2.level].func(n2, t2); - if (o2 !== O && o2 !== B || (n2.status = 666), o2 === A || o2 === O) - return 0 === e2.avail_out && (n2.last_flush = -1), m; - if (o2 === I && (1 === t2 ? u._tr_align(n2) : 5 !== t2 && (u._tr_stored_block(n2, 0, 0, false), 3 === t2 && (D(n2.head), 0 === n2.lookahead && (n2.strstart = 0, n2.block_start = 0, n2.insert = 0))), F(e2), 0 === e2.avail_out)) - return n2.last_flush = -1, m; - } - return t2 !== f ? m : n2.wrap <= 0 ? 1 : (2 === n2.wrap ? (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), U(n2, e2.adler >> 16 & 255), U(n2, e2.adler >> 24 & 255), U(n2, 255 & e2.total_in), U(n2, e2.total_in >> 8 & 255), U(n2, e2.total_in >> 16 & 255), U(n2, e2.total_in >> 24 & 255)) : (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), F(e2), 0 < n2.wrap && (n2.wrap = -n2.wrap), 0 !== n2.pending ? m : 1); - }, r.deflateEnd = function(e2) { - var t2; - return e2 && e2.state ? (t2 = e2.state.status) !== C && 69 !== t2 && 73 !== t2 && 91 !== t2 && 103 !== t2 && t2 !== E && 666 !== t2 ? R(e2, _) : (e2.state = null, t2 === E ? R(e2, -3) : m) : _; - }, r.deflateSetDictionary = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h2, u2, l2 = t2.length; - if (!e2 || !e2.state) - return _; - if (2 === (s2 = (r2 = e2.state).wrap) || 1 === s2 && r2.status !== C || r2.lookahead) - return _; - for (1 === s2 && (e2.adler = d(e2.adler, t2, l2, 0)), r2.wrap = 0, l2 >= r2.w_size && (0 === s2 && (D(r2.head), r2.strstart = 0, r2.block_start = 0, r2.insert = 0), u2 = new c.Buf8(r2.w_size), c.arraySet(u2, t2, l2 - r2.w_size, r2.w_size, 0), t2 = u2, l2 = r2.w_size), a2 = e2.avail_in, o2 = e2.next_in, h2 = e2.input, e2.avail_in = l2, e2.next_in = 0, e2.input = t2, j(r2); r2.lookahead >= x; ) { - for (n2 = r2.strstart, i2 = r2.lookahead - (x - 1); r2.ins_h = (r2.ins_h << r2.hash_shift ^ r2.window[n2 + x - 1]) & r2.hash_mask, r2.prev[n2 & r2.w_mask] = r2.head[r2.ins_h], r2.head[r2.ins_h] = n2, n2++, --i2; ) - ; - r2.strstart = n2, r2.lookahead = x - 1, j(r2); - } - return r2.strstart += r2.lookahead, r2.block_start = r2.strstart, r2.insert = r2.lookahead, r2.lookahead = 0, r2.match_length = r2.prev_length = x - 1, r2.match_available = 0, e2.next_in = o2, e2.input = h2, e2.avail_in = a2, r2.wrap = s2, m; - }, r.deflateInfo = "pako deflate (from Nodeca project)"; - }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e, t, r) { - "use strict"; - t.exports = function() { - this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; - }; - }, {}], 48: [function(e, t, r) { - "use strict"; - t.exports = function(e2, t2) { - var r2, n, i, s, a, o, h, u, l, f, c, d, p, m, _, g, b, v, y, w, k, x, S, z, C; - r2 = e2.state, n = e2.next_in, z = e2.input, i = n + (e2.avail_in - 5), s = e2.next_out, C = e2.output, a = s - (t2 - e2.avail_out), o = s + (e2.avail_out - 257), h = r2.dmax, u = r2.wsize, l = r2.whave, f = r2.wnext, c = r2.window, d = r2.hold, p = r2.bits, m = r2.lencode, _ = r2.distcode, g = (1 << r2.lenbits) - 1, b = (1 << r2.distbits) - 1; - e: - do { - p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = m[d & g]; - t: - for (; ; ) { - if (d >>>= y = v >>> 24, p -= y, 0 === (y = v >>> 16 & 255)) - C[s++] = 65535 & v; - else { - if (!(16 & y)) { - if (0 == (64 & y)) { - v = m[(65535 & v) + (d & (1 << y) - 1)]; - continue t; - } - if (32 & y) { - r2.mode = 12; - break e; - } - e2.msg = "invalid literal/length code", r2.mode = 30; - break e; - } - w = 65535 & v, (y &= 15) && (p < y && (d += z[n++] << p, p += 8), w += d & (1 << y) - 1, d >>>= y, p -= y), p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = _[d & b]; - r: - for (; ; ) { - if (d >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) { - if (0 == (64 & y)) { - v = _[(65535 & v) + (d & (1 << y) - 1)]; - continue r; - } - e2.msg = "invalid distance code", r2.mode = 30; - break e; - } - if (k = 65535 & v, p < (y &= 15) && (d += z[n++] << p, (p += 8) < y && (d += z[n++] << p, p += 8)), h < (k += d & (1 << y) - 1)) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break e; - } - if (d >>>= y, p -= y, (y = s - a) < k) { - if (l < (y = k - y) && r2.sane) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break e; - } - if (S = c, (x = 0) === f) { - if (x += u - y, y < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - } else if (f < y) { - if (x += u + f - y, (y -= f) < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - if (x = 0, f < w) { - for (w -= y = f; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - } - } else if (x += f - y, y < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - for (; 2 < w; ) - C[s++] = S[x++], C[s++] = S[x++], C[s++] = S[x++], w -= 3; - w && (C[s++] = S[x++], 1 < w && (C[s++] = S[x++])); - } else { - for (x = s - k; C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], 2 < (w -= 3); ) - ; - w && (C[s++] = C[x++], 1 < w && (C[s++] = C[x++])); - } - break; - } - } - break; - } - } while (n < i && s < o); - n -= w = p >> 3, d &= (1 << (p -= w << 3)) - 1, e2.next_in = n, e2.next_out = s, e2.avail_in = n < i ? i - n + 5 : 5 - (n - i), e2.avail_out = s < o ? o - s + 257 : 257 - (s - o), r2.hold = d, r2.bits = p; - }; - }, {}], 49: [function(e, t, r) { - "use strict"; - var I = e("../utils/common"), O = e("./adler32"), B = e("./crc32"), R = e("./inffast"), T = e("./inftrees"), D = 1, F = 2, N = 0, U = -2, P = 1, n = 852, i = 592; - function L(e2) { - return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24); - } - function s() { - this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; - } - function a(e2) { - var t2; - return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = P, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new I.Buf32(n), t2.distcode = t2.distdyn = new I.Buf32(i), t2.sane = 1, t2.back = -1, N) : U; - } - function o(e2) { - var t2; - return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, a(e2)) : U; - } - function h(e2, t2) { - var r2, n2; - return e2 && e2.state ? (n2 = e2.state, t2 < 0 ? (r2 = 0, t2 = -t2) : (r2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? U : (null !== n2.window && n2.wbits !== t2 && (n2.window = null), n2.wrap = r2, n2.wbits = t2, o(e2))) : U; - } - function u(e2, t2) { - var r2, n2; - return e2 ? (n2 = new s(), (e2.state = n2).window = null, (r2 = h(e2, t2)) !== N && (e2.state = null), r2) : U; - } - var l, f, c = true; - function j(e2) { - if (c) { - var t2; - for (l = new I.Buf32(512), f = new I.Buf32(32), t2 = 0; t2 < 144; ) - e2.lens[t2++] = 8; - for (; t2 < 256; ) - e2.lens[t2++] = 9; - for (; t2 < 280; ) - e2.lens[t2++] = 7; - for (; t2 < 288; ) - e2.lens[t2++] = 8; - for (T(D, e2.lens, 0, 288, l, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; ) - e2.lens[t2++] = 5; - T(F, e2.lens, 0, 32, f, 0, e2.work, { bits: 5 }), c = false; - } - e2.lencode = l, e2.lenbits = 9, e2.distcode = f, e2.distbits = 5; - } - function Z(e2, t2, r2, n2) { - var i2, s2 = e2.state; - return null === s2.window && (s2.wsize = 1 << s2.wbits, s2.wnext = 0, s2.whave = 0, s2.window = new I.Buf8(s2.wsize)), n2 >= s2.wsize ? (I.arraySet(s2.window, t2, r2 - s2.wsize, s2.wsize, 0), s2.wnext = 0, s2.whave = s2.wsize) : (n2 < (i2 = s2.wsize - s2.wnext) && (i2 = n2), I.arraySet(s2.window, t2, r2 - n2, i2, s2.wnext), (n2 -= i2) ? (I.arraySet(s2.window, t2, r2 - n2, n2, 0), s2.wnext = n2, s2.whave = s2.wsize) : (s2.wnext += i2, s2.wnext === s2.wsize && (s2.wnext = 0), s2.whave < s2.wsize && (s2.whave += i2))), 0; - } - r.inflateReset = o, r.inflateReset2 = h, r.inflateResetKeep = a, r.inflateInit = function(e2) { - return u(e2, 15); - }, r.inflateInit2 = u, r.inflate = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h2, u2, l2, f2, c2, d, p, m, _, g, b, v, y, w, k, x, S, z, C = 0, E = new I.Buf8(4), A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in) - return U; - 12 === (r2 = e2.state).mode && (r2.mode = 13), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, f2 = o2, c2 = h2, x = N; - e: - for (; ; ) - switch (r2.mode) { - case P: - if (0 === r2.wrap) { - r2.mode = 13; - break; - } - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (2 & r2.wrap && 35615 === u2) { - E[r2.check = 0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0), l2 = u2 = 0, r2.mode = 2; - break; - } - if (r2.flags = 0, r2.head && (r2.head.done = false), !(1 & r2.wrap) || (((255 & u2) << 8) + (u2 >> 8)) % 31) { - e2.msg = "incorrect header check", r2.mode = 30; - break; - } - if (8 != (15 & u2)) { - e2.msg = "unknown compression method", r2.mode = 30; - break; - } - if (l2 -= 4, k = 8 + (15 & (u2 >>>= 4)), 0 === r2.wbits) - r2.wbits = k; - else if (k > r2.wbits) { - e2.msg = "invalid window size", r2.mode = 30; - break; - } - r2.dmax = 1 << k, e2.adler = r2.check = 1, r2.mode = 512 & u2 ? 10 : 12, l2 = u2 = 0; - break; - case 2: - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (r2.flags = u2, 8 != (255 & r2.flags)) { - e2.msg = "unknown compression method", r2.mode = 30; - break; - } - if (57344 & r2.flags) { - e2.msg = "unknown header flags set", r2.mode = 30; - break; - } - r2.head && (r2.head.text = u2 >> 8 & 1), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 3; - case 3: - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.head && (r2.head.time = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, E[2] = u2 >>> 16 & 255, E[3] = u2 >>> 24 & 255, r2.check = B(r2.check, E, 4, 0)), l2 = u2 = 0, r2.mode = 4; - case 4: - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.head && (r2.head.xflags = 255 & u2, r2.head.os = u2 >> 8), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 5; - case 5: - if (1024 & r2.flags) { - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.length = u2, r2.head && (r2.head.extra_len = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0; - } else - r2.head && (r2.head.extra = null); - r2.mode = 6; - case 6: - if (1024 & r2.flags && (o2 < (d = r2.length) && (d = o2), d && (r2.head && (k = r2.head.extra_len - r2.length, r2.head.extra || (r2.head.extra = new Array(r2.head.extra_len)), I.arraySet(r2.head.extra, n2, s2, d, k)), 512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, r2.length -= d), r2.length)) - break e; - r2.length = 0, r2.mode = 7; - case 7: - if (2048 & r2.flags) { - if (0 === o2) - break e; - for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.name += String.fromCharCode(k)), k && d < o2; ) - ; - if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) - break e; - } else - r2.head && (r2.head.name = null); - r2.length = 0, r2.mode = 8; - case 8: - if (4096 & r2.flags) { - if (0 === o2) - break e; - for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.comment += String.fromCharCode(k)), k && d < o2; ) - ; - if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) - break e; - } else - r2.head && (r2.head.comment = null); - r2.mode = 9; - case 9: - if (512 & r2.flags) { - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 !== (65535 & r2.check)) { - e2.msg = "header crc mismatch", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.head && (r2.head.hcrc = r2.flags >> 9 & 1, r2.head.done = true), e2.adler = r2.check = 0, r2.mode = 12; - break; - case 10: - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - e2.adler = r2.check = L(u2), l2 = u2 = 0, r2.mode = 11; - case 11: - if (0 === r2.havedict) - return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, 2; - e2.adler = r2.check = 1, r2.mode = 12; - case 12: - if (5 === t2 || 6 === t2) - break e; - case 13: - if (r2.last) { - u2 >>>= 7 & l2, l2 -= 7 & l2, r2.mode = 27; - break; - } - for (; l2 < 3; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - switch (r2.last = 1 & u2, l2 -= 1, 3 & (u2 >>>= 1)) { - case 0: - r2.mode = 14; - break; - case 1: - if (j(r2), r2.mode = 20, 6 !== t2) - break; - u2 >>>= 2, l2 -= 2; - break e; - case 2: - r2.mode = 17; - break; - case 3: - e2.msg = "invalid block type", r2.mode = 30; - } - u2 >>>= 2, l2 -= 2; - break; - case 14: - for (u2 >>>= 7 & l2, l2 -= 7 & l2; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if ((65535 & u2) != (u2 >>> 16 ^ 65535)) { - e2.msg = "invalid stored block lengths", r2.mode = 30; - break; - } - if (r2.length = 65535 & u2, l2 = u2 = 0, r2.mode = 15, 6 === t2) - break e; - case 15: - r2.mode = 16; - case 16: - if (d = r2.length) { - if (o2 < d && (d = o2), h2 < d && (d = h2), 0 === d) - break e; - I.arraySet(i2, n2, s2, d, a2), o2 -= d, s2 += d, h2 -= d, a2 += d, r2.length -= d; - break; - } - r2.mode = 12; - break; - case 17: - for (; l2 < 14; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (r2.nlen = 257 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ndist = 1 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ncode = 4 + (15 & u2), u2 >>>= 4, l2 -= 4, 286 < r2.nlen || 30 < r2.ndist) { - e2.msg = "too many length or distance symbols", r2.mode = 30; - break; - } - r2.have = 0, r2.mode = 18; - case 18: - for (; r2.have < r2.ncode; ) { - for (; l2 < 3; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.lens[A[r2.have++]] = 7 & u2, u2 >>>= 3, l2 -= 3; - } - for (; r2.have < 19; ) - r2.lens[A[r2.have++]] = 0; - if (r2.lencode = r2.lendyn, r2.lenbits = 7, S = { bits: r2.lenbits }, x = T(0, r2.lens, 0, 19, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { - e2.msg = "invalid code lengths set", r2.mode = 30; - break; - } - r2.have = 0, r2.mode = 19; - case 19: - for (; r2.have < r2.nlen + r2.ndist; ) { - for (; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (b < 16) - u2 >>>= _, l2 -= _, r2.lens[r2.have++] = b; - else { - if (16 === b) { - for (z = _ + 2; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 >>>= _, l2 -= _, 0 === r2.have) { - e2.msg = "invalid bit length repeat", r2.mode = 30; - break; - } - k = r2.lens[r2.have - 1], d = 3 + (3 & u2), u2 >>>= 2, l2 -= 2; - } else if (17 === b) { - for (z = _ + 3; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - l2 -= _, k = 0, d = 3 + (7 & (u2 >>>= _)), u2 >>>= 3, l2 -= 3; - } else { - for (z = _ + 7; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - l2 -= _, k = 0, d = 11 + (127 & (u2 >>>= _)), u2 >>>= 7, l2 -= 7; - } - if (r2.have + d > r2.nlen + r2.ndist) { - e2.msg = "invalid bit length repeat", r2.mode = 30; - break; - } - for (; d--; ) - r2.lens[r2.have++] = k; - } - } - if (30 === r2.mode) - break; - if (0 === r2.lens[256]) { - e2.msg = "invalid code -- missing end-of-block", r2.mode = 30; - break; - } - if (r2.lenbits = 9, S = { bits: r2.lenbits }, x = T(D, r2.lens, 0, r2.nlen, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { - e2.msg = "invalid literal/lengths set", r2.mode = 30; - break; - } - if (r2.distbits = 6, r2.distcode = r2.distdyn, S = { bits: r2.distbits }, x = T(F, r2.lens, r2.nlen, r2.ndist, r2.distcode, 0, r2.work, S), r2.distbits = S.bits, x) { - e2.msg = "invalid distances set", r2.mode = 30; - break; - } - if (r2.mode = 20, 6 === t2) - break e; - case 20: - r2.mode = 21; - case 21: - if (6 <= o2 && 258 <= h2) { - e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, R(e2, c2), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, 12 === r2.mode && (r2.back = -1); - break; - } - for (r2.back = 0; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (g && 0 == (240 & g)) { - for (v = _, y = g, w = b; g = (C = r2.lencode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - u2 >>>= v, l2 -= v, r2.back += v; - } - if (u2 >>>= _, l2 -= _, r2.back += _, r2.length = b, 0 === g) { - r2.mode = 26; - break; - } - if (32 & g) { - r2.back = -1, r2.mode = 12; - break; - } - if (64 & g) { - e2.msg = "invalid literal/length code", r2.mode = 30; - break; - } - r2.extra = 15 & g, r2.mode = 22; - case 22: - if (r2.extra) { - for (z = r2.extra; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.length += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; - } - r2.was = r2.length, r2.mode = 23; - case 23: - for (; g = (C = r2.distcode[u2 & (1 << r2.distbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (0 == (240 & g)) { - for (v = _, y = g, w = b; g = (C = r2.distcode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - u2 >>>= v, l2 -= v, r2.back += v; - } - if (u2 >>>= _, l2 -= _, r2.back += _, 64 & g) { - e2.msg = "invalid distance code", r2.mode = 30; - break; - } - r2.offset = b, r2.extra = 15 & g, r2.mode = 24; - case 24: - if (r2.extra) { - for (z = r2.extra; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.offset += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; - } - if (r2.offset > r2.dmax) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break; - } - r2.mode = 25; - case 25: - if (0 === h2) - break e; - if (d = c2 - h2, r2.offset > d) { - if ((d = r2.offset - d) > r2.whave && r2.sane) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break; - } - p = d > r2.wnext ? (d -= r2.wnext, r2.wsize - d) : r2.wnext - d, d > r2.length && (d = r2.length), m = r2.window; - } else - m = i2, p = a2 - r2.offset, d = r2.length; - for (h2 < d && (d = h2), h2 -= d, r2.length -= d; i2[a2++] = m[p++], --d; ) - ; - 0 === r2.length && (r2.mode = 21); - break; - case 26: - if (0 === h2) - break e; - i2[a2++] = r2.length, h2--, r2.mode = 21; - break; - case 27: - if (r2.wrap) { - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 |= n2[s2++] << l2, l2 += 8; - } - if (c2 -= h2, e2.total_out += c2, r2.total += c2, c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, a2 - c2) : O(r2.check, i2, c2, a2 - c2)), c2 = h2, (r2.flags ? u2 : L(u2)) !== r2.check) { - e2.msg = "incorrect data check", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.mode = 28; - case 28: - if (r2.wrap && r2.flags) { - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 !== (4294967295 & r2.total)) { - e2.msg = "incorrect length check", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.mode = 29; - case 29: - x = 1; - break e; - case 30: - x = -3; - break e; - case 31: - return -4; - case 32: - default: - return U; - } - return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, (r2.wsize || c2 !== e2.avail_out && r2.mode < 30 && (r2.mode < 27 || 4 !== t2)) && Z(e2, e2.output, e2.next_out, c2 - e2.avail_out) ? (r2.mode = 31, -4) : (f2 -= e2.avail_in, c2 -= e2.avail_out, e2.total_in += f2, e2.total_out += c2, r2.total += c2, r2.wrap && c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, e2.next_out - c2) : O(r2.check, i2, c2, e2.next_out - c2)), e2.data_type = r2.bits + (r2.last ? 64 : 0) + (12 === r2.mode ? 128 : 0) + (20 === r2.mode || 15 === r2.mode ? 256 : 0), (0 == f2 && 0 === c2 || 4 === t2) && x === N && (x = -5), x); - }, r.inflateEnd = function(e2) { - if (!e2 || !e2.state) - return U; - var t2 = e2.state; - return t2.window && (t2.window = null), e2.state = null, N; - }, r.inflateGetHeader = function(e2, t2) { - var r2; - return e2 && e2.state ? 0 == (2 & (r2 = e2.state).wrap) ? U : ((r2.head = t2).done = false, N) : U; - }, r.inflateSetDictionary = function(e2, t2) { - var r2, n2 = t2.length; - return e2 && e2.state ? 0 !== (r2 = e2.state).wrap && 11 !== r2.mode ? U : 11 === r2.mode && O(1, t2, n2, 0) !== r2.check ? -3 : Z(e2, t2, n2, n2) ? (r2.mode = 31, -4) : (r2.havedict = 1, N) : U; - }, r.inflateInfo = "pako inflate (from Nodeca project)"; - }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e, t, r) { - "use strict"; - var D = e("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; - t.exports = function(e2, t2, r2, n, i, s, a, o) { - var h, u, l, f, c, d, p, m, _, g = o.bits, b = 0, v = 0, y = 0, w = 0, k = 0, x = 0, S = 0, z = 0, C = 0, E = 0, A = null, I = 0, O = new D.Buf16(16), B = new D.Buf16(16), R = null, T = 0; - for (b = 0; b <= 15; b++) - O[b] = 0; - for (v = 0; v < n; v++) - O[t2[r2 + v]]++; - for (k = g, w = 15; 1 <= w && 0 === O[w]; w--) - ; - if (w < k && (k = w), 0 === w) - return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0; - for (y = 1; y < w && 0 === O[y]; y++) - ; - for (k < y && (k = y), b = z = 1; b <= 15; b++) - if (z <<= 1, (z -= O[b]) < 0) - return -1; - if (0 < z && (0 === e2 || 1 !== w)) - return -1; - for (B[1] = 0, b = 1; b < 15; b++) - B[b + 1] = B[b] + O[b]; - for (v = 0; v < n; v++) - 0 !== t2[r2 + v] && (a[B[t2[r2 + v]]++] = v); - if (d = 0 === e2 ? (A = R = a, 19) : 1 === e2 ? (A = F, I -= 257, R = N, T -= 257, 256) : (A = U, R = P, -1), b = y, c = s, S = v = E = 0, l = -1, f = (C = 1 << (x = k)) - 1, 1 === e2 && 852 < C || 2 === e2 && 592 < C) - return 1; - for (; ; ) { - for (p = b - S, _ = a[v] < d ? (m = 0, a[v]) : a[v] > d ? (m = R[T + a[v]], A[I + a[v]]) : (m = 96, 0), h = 1 << b - S, y = u = 1 << x; i[c + (E >> S) + (u -= h)] = p << 24 | m << 16 | _ | 0, 0 !== u; ) - ; - for (h = 1 << b - 1; E & h; ) - h >>= 1; - if (0 !== h ? (E &= h - 1, E += h) : E = 0, v++, 0 == --O[b]) { - if (b === w) - break; - b = t2[r2 + a[v]]; - } - if (k < b && (E & f) !== l) { - for (0 === S && (S = k), c += y, z = 1 << (x = b - S); x + S < w && !((z -= O[x + S]) <= 0); ) - x++, z <<= 1; - if (C += 1 << x, 1 === e2 && 852 < C || 2 === e2 && 592 < C) - return 1; - i[l = E & f] = k << 24 | x << 16 | c - s | 0; - } - } - return 0 !== E && (i[c + E] = b - S << 24 | 64 << 16 | 0), o.bits = k, 0; - }; - }, { "../utils/common": 41 }], 51: [function(e, t, r) { - "use strict"; - t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; - }, {}], 52: [function(e, t, r) { - "use strict"; - var i = e("../utils/common"), o = 0, h = 1; - function n(e2) { - for (var t2 = e2.length; 0 <= --t2; ) - e2[t2] = 0; - } - var s = 0, a = 29, u = 256, l = u + 1 + a, f = 30, c = 19, _ = 2 * l + 1, g = 15, d = 16, p = 7, m = 256, b = 16, v = 17, y = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z = new Array(2 * (l + 2)); - n(z); - var C = new Array(2 * f); - n(C); - var E = new Array(512); - n(E); - var A = new Array(256); - n(A); - var I = new Array(a); - n(I); - var O, B, R, T = new Array(f); - function D(e2, t2, r2, n2, i2) { - this.static_tree = e2, this.extra_bits = t2, this.extra_base = r2, this.elems = n2, this.max_length = i2, this.has_stree = e2 && e2.length; - } - function F(e2, t2) { - this.dyn_tree = e2, this.max_code = 0, this.stat_desc = t2; - } - function N(e2) { - return e2 < 256 ? E[e2] : E[256 + (e2 >>> 7)]; - } - function U(e2, t2) { - e2.pending_buf[e2.pending++] = 255 & t2, e2.pending_buf[e2.pending++] = t2 >>> 8 & 255; - } - function P(e2, t2, r2) { - e2.bi_valid > d - r2 ? (e2.bi_buf |= t2 << e2.bi_valid & 65535, U(e2, e2.bi_buf), e2.bi_buf = t2 >> d - e2.bi_valid, e2.bi_valid += r2 - d) : (e2.bi_buf |= t2 << e2.bi_valid & 65535, e2.bi_valid += r2); - } - function L(e2, t2, r2) { - P(e2, r2[2 * t2], r2[2 * t2 + 1]); - } - function j(e2, t2) { - for (var r2 = 0; r2 |= 1 & e2, e2 >>>= 1, r2 <<= 1, 0 < --t2; ) - ; - return r2 >>> 1; - } - function Z(e2, t2, r2) { - var n2, i2, s2 = new Array(g + 1), a2 = 0; - for (n2 = 1; n2 <= g; n2++) - s2[n2] = a2 = a2 + r2[n2 - 1] << 1; - for (i2 = 0; i2 <= t2; i2++) { - var o2 = e2[2 * i2 + 1]; - 0 !== o2 && (e2[2 * i2] = j(s2[o2]++, o2)); - } - } - function W(e2) { - var t2; - for (t2 = 0; t2 < l; t2++) - e2.dyn_ltree[2 * t2] = 0; - for (t2 = 0; t2 < f; t2++) - e2.dyn_dtree[2 * t2] = 0; - for (t2 = 0; t2 < c; t2++) - e2.bl_tree[2 * t2] = 0; - e2.dyn_ltree[2 * m] = 1, e2.opt_len = e2.static_len = 0, e2.last_lit = e2.matches = 0; - } - function M(e2) { - 8 < e2.bi_valid ? U(e2, e2.bi_buf) : 0 < e2.bi_valid && (e2.pending_buf[e2.pending++] = e2.bi_buf), e2.bi_buf = 0, e2.bi_valid = 0; - } - function H(e2, t2, r2, n2) { - var i2 = 2 * t2, s2 = 2 * r2; - return e2[i2] < e2[s2] || e2[i2] === e2[s2] && n2[t2] <= n2[r2]; - } - function G(e2, t2, r2) { - for (var n2 = e2.heap[r2], i2 = r2 << 1; i2 <= e2.heap_len && (i2 < e2.heap_len && H(t2, e2.heap[i2 + 1], e2.heap[i2], e2.depth) && i2++, !H(t2, n2, e2.heap[i2], e2.depth)); ) - e2.heap[r2] = e2.heap[i2], r2 = i2, i2 <<= 1; - e2.heap[r2] = n2; - } - function K(e2, t2, r2) { - var n2, i2, s2, a2, o2 = 0; - if (0 !== e2.last_lit) - for (; n2 = e2.pending_buf[e2.d_buf + 2 * o2] << 8 | e2.pending_buf[e2.d_buf + 2 * o2 + 1], i2 = e2.pending_buf[e2.l_buf + o2], o2++, 0 === n2 ? L(e2, i2, t2) : (L(e2, (s2 = A[i2]) + u + 1, t2), 0 !== (a2 = w[s2]) && P(e2, i2 -= I[s2], a2), L(e2, s2 = N(--n2), r2), 0 !== (a2 = k[s2]) && P(e2, n2 -= T[s2], a2)), o2 < e2.last_lit; ) - ; - L(e2, m, t2); - } - function Y(e2, t2) { - var r2, n2, i2, s2 = t2.dyn_tree, a2 = t2.stat_desc.static_tree, o2 = t2.stat_desc.has_stree, h2 = t2.stat_desc.elems, u2 = -1; - for (e2.heap_len = 0, e2.heap_max = _, r2 = 0; r2 < h2; r2++) - 0 !== s2[2 * r2] ? (e2.heap[++e2.heap_len] = u2 = r2, e2.depth[r2] = 0) : s2[2 * r2 + 1] = 0; - for (; e2.heap_len < 2; ) - s2[2 * (i2 = e2.heap[++e2.heap_len] = u2 < 2 ? ++u2 : 0)] = 1, e2.depth[i2] = 0, e2.opt_len--, o2 && (e2.static_len -= a2[2 * i2 + 1]); - for (t2.max_code = u2, r2 = e2.heap_len >> 1; 1 <= r2; r2--) - G(e2, s2, r2); - for (i2 = h2; r2 = e2.heap[1], e2.heap[1] = e2.heap[e2.heap_len--], G(e2, s2, 1), n2 = e2.heap[1], e2.heap[--e2.heap_max] = r2, e2.heap[--e2.heap_max] = n2, s2[2 * i2] = s2[2 * r2] + s2[2 * n2], e2.depth[i2] = (e2.depth[r2] >= e2.depth[n2] ? e2.depth[r2] : e2.depth[n2]) + 1, s2[2 * r2 + 1] = s2[2 * n2 + 1] = i2, e2.heap[1] = i2++, G(e2, s2, 1), 2 <= e2.heap_len; ) - ; - e2.heap[--e2.heap_max] = e2.heap[1], function(e3, t3) { - var r3, n3, i3, s3, a3, o3, h3 = t3.dyn_tree, u3 = t3.max_code, l2 = t3.stat_desc.static_tree, f2 = t3.stat_desc.has_stree, c2 = t3.stat_desc.extra_bits, d2 = t3.stat_desc.extra_base, p2 = t3.stat_desc.max_length, m2 = 0; - for (s3 = 0; s3 <= g; s3++) - e3.bl_count[s3] = 0; - for (h3[2 * e3.heap[e3.heap_max] + 1] = 0, r3 = e3.heap_max + 1; r3 < _; r3++) - p2 < (s3 = h3[2 * h3[2 * (n3 = e3.heap[r3]) + 1] + 1] + 1) && (s3 = p2, m2++), h3[2 * n3 + 1] = s3, u3 < n3 || (e3.bl_count[s3]++, a3 = 0, d2 <= n3 && (a3 = c2[n3 - d2]), o3 = h3[2 * n3], e3.opt_len += o3 * (s3 + a3), f2 && (e3.static_len += o3 * (l2[2 * n3 + 1] + a3))); - if (0 !== m2) { - do { - for (s3 = p2 - 1; 0 === e3.bl_count[s3]; ) - s3--; - e3.bl_count[s3]--, e3.bl_count[s3 + 1] += 2, e3.bl_count[p2]--, m2 -= 2; - } while (0 < m2); - for (s3 = p2; 0 !== s3; s3--) - for (n3 = e3.bl_count[s3]; 0 !== n3; ) - u3 < (i3 = e3.heap[--r3]) || (h3[2 * i3 + 1] !== s3 && (e3.opt_len += (s3 - h3[2 * i3 + 1]) * h3[2 * i3], h3[2 * i3 + 1] = s3), n3--); - } - }(e2, t2), Z(s2, u2, e2.bl_count); - } - function X(e2, t2, r2) { - var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; - for (0 === a2 && (h2 = 138, u2 = 3), t2[2 * (r2 + 1) + 1] = 65535, n2 = 0; n2 <= r2; n2++) - i2 = a2, a2 = t2[2 * (n2 + 1) + 1], ++o2 < h2 && i2 === a2 || (o2 < u2 ? e2.bl_tree[2 * i2] += o2 : 0 !== i2 ? (i2 !== s2 && e2.bl_tree[2 * i2]++, e2.bl_tree[2 * b]++) : o2 <= 10 ? e2.bl_tree[2 * v]++ : e2.bl_tree[2 * y]++, s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4)); - } - function V(e2, t2, r2) { - var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; - for (0 === a2 && (h2 = 138, u2 = 3), n2 = 0; n2 <= r2; n2++) - if (i2 = a2, a2 = t2[2 * (n2 + 1) + 1], !(++o2 < h2 && i2 === a2)) { - if (o2 < u2) - for (; L(e2, i2, e2.bl_tree), 0 != --o2; ) - ; - else - 0 !== i2 ? (i2 !== s2 && (L(e2, i2, e2.bl_tree), o2--), L(e2, b, e2.bl_tree), P(e2, o2 - 3, 2)) : o2 <= 10 ? (L(e2, v, e2.bl_tree), P(e2, o2 - 3, 3)) : (L(e2, y, e2.bl_tree), P(e2, o2 - 11, 7)); - s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4); - } - } - n(T); - var q = false; - function J(e2, t2, r2, n2) { - P(e2, (s << 1) + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { - M(e3), n3 && (U(e3, r3), U(e3, ~r3)), i.arraySet(e3.pending_buf, e3.window, t3, r3, e3.pending), e3.pending += r3; - }(e2, t2, r2, true); - } - r._tr_init = function(e2) { - q || (function() { - var e3, t2, r2, n2, i2, s2 = new Array(g + 1); - for (n2 = r2 = 0; n2 < a - 1; n2++) - for (I[n2] = r2, e3 = 0; e3 < 1 << w[n2]; e3++) - A[r2++] = n2; - for (A[r2 - 1] = n2, n2 = i2 = 0; n2 < 16; n2++) - for (T[n2] = i2, e3 = 0; e3 < 1 << k[n2]; e3++) - E[i2++] = n2; - for (i2 >>= 7; n2 < f; n2++) - for (T[n2] = i2 << 7, e3 = 0; e3 < 1 << k[n2] - 7; e3++) - E[256 + i2++] = n2; - for (t2 = 0; t2 <= g; t2++) - s2[t2] = 0; - for (e3 = 0; e3 <= 143; ) - z[2 * e3 + 1] = 8, e3++, s2[8]++; - for (; e3 <= 255; ) - z[2 * e3 + 1] = 9, e3++, s2[9]++; - for (; e3 <= 279; ) - z[2 * e3 + 1] = 7, e3++, s2[7]++; - for (; e3 <= 287; ) - z[2 * e3 + 1] = 8, e3++, s2[8]++; - for (Z(z, l + 1, s2), e3 = 0; e3 < f; e3++) - C[2 * e3 + 1] = 5, C[2 * e3] = j(e3, 5); - O = new D(z, w, u + 1, l, g), B = new D(C, k, 0, f, g), R = new D(new Array(0), x, 0, c, p); - }(), q = true), e2.l_desc = new F(e2.dyn_ltree, O), e2.d_desc = new F(e2.dyn_dtree, B), e2.bl_desc = new F(e2.bl_tree, R), e2.bi_buf = 0, e2.bi_valid = 0, W(e2); - }, r._tr_stored_block = J, r._tr_flush_block = function(e2, t2, r2, n2) { - var i2, s2, a2 = 0; - 0 < e2.level ? (2 === e2.strm.data_type && (e2.strm.data_type = function(e3) { - var t3, r3 = 4093624447; - for (t3 = 0; t3 <= 31; t3++, r3 >>>= 1) - if (1 & r3 && 0 !== e3.dyn_ltree[2 * t3]) - return o; - if (0 !== e3.dyn_ltree[18] || 0 !== e3.dyn_ltree[20] || 0 !== e3.dyn_ltree[26]) - return h; - for (t3 = 32; t3 < u; t3++) - if (0 !== e3.dyn_ltree[2 * t3]) - return h; - return o; - }(e2)), Y(e2, e2.l_desc), Y(e2, e2.d_desc), a2 = function(e3) { - var t3; - for (X(e3, e3.dyn_ltree, e3.l_desc.max_code), X(e3, e3.dyn_dtree, e3.d_desc.max_code), Y(e3, e3.bl_desc), t3 = c - 1; 3 <= t3 && 0 === e3.bl_tree[2 * S[t3] + 1]; t3--) - ; - return e3.opt_len += 3 * (t3 + 1) + 5 + 5 + 4, t3; - }(e2), i2 = e2.opt_len + 3 + 7 >>> 3, (s2 = e2.static_len + 3 + 7 >>> 3) <= i2 && (i2 = s2)) : i2 = s2 = r2 + 5, r2 + 4 <= i2 && -1 !== t2 ? J(e2, t2, r2, n2) : 4 === e2.strategy || s2 === i2 ? (P(e2, 2 + (n2 ? 1 : 0), 3), K(e2, z, C)) : (P(e2, 4 + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { - var i3; - for (P(e3, t3 - 257, 5), P(e3, r3 - 1, 5), P(e3, n3 - 4, 4), i3 = 0; i3 < n3; i3++) - P(e3, e3.bl_tree[2 * S[i3] + 1], 3); - V(e3, e3.dyn_ltree, t3 - 1), V(e3, e3.dyn_dtree, r3 - 1); - }(e2, e2.l_desc.max_code + 1, e2.d_desc.max_code + 1, a2 + 1), K(e2, e2.dyn_ltree, e2.dyn_dtree)), W(e2), n2 && M(e2); - }, r._tr_tally = function(e2, t2, r2) { - return e2.pending_buf[e2.d_buf + 2 * e2.last_lit] = t2 >>> 8 & 255, e2.pending_buf[e2.d_buf + 2 * e2.last_lit + 1] = 255 & t2, e2.pending_buf[e2.l_buf + e2.last_lit] = 255 & r2, e2.last_lit++, 0 === t2 ? e2.dyn_ltree[2 * r2]++ : (e2.matches++, t2--, e2.dyn_ltree[2 * (A[r2] + u + 1)]++, e2.dyn_dtree[2 * N(t2)]++), e2.last_lit === e2.lit_bufsize - 1; - }, r._tr_align = function(e2) { - P(e2, 2, 3), L(e2, m, z), function(e3) { - 16 === e3.bi_valid ? (U(e3, e3.bi_buf), e3.bi_buf = 0, e3.bi_valid = 0) : 8 <= e3.bi_valid && (e3.pending_buf[e3.pending++] = 255 & e3.bi_buf, e3.bi_buf >>= 8, e3.bi_valid -= 8); - }(e2); - }; - }, { "../utils/common": 41 }], 53: [function(e, t, r) { - "use strict"; - t.exports = function() { - this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; - }; - }, {}], 54: [function(e, t, r) { - (function(e2) { - !function(r2, n) { - "use strict"; - if (!r2.setImmediate) { - var i, s, t2, a, o = 1, h = {}, u = false, l = r2.document, e3 = Object.getPrototypeOf && Object.getPrototypeOf(r2); - e3 = e3 && e3.setTimeout ? e3 : r2, i = "[object process]" === {}.toString.call(r2.process) ? function(e4) { - process.nextTick(function() { - c(e4); - }); - } : function() { - if (r2.postMessage && !r2.importScripts) { - var e4 = true, t3 = r2.onmessage; - return r2.onmessage = function() { - e4 = false; - }, r2.postMessage("", "*"), r2.onmessage = t3, e4; - } - }() ? (a = "setImmediate$" + Math.random() + "$", r2.addEventListener ? r2.addEventListener("message", d, false) : r2.attachEvent("onmessage", d), function(e4) { - r2.postMessage(a + e4, "*"); - }) : r2.MessageChannel ? ((t2 = new MessageChannel()).port1.onmessage = function(e4) { - c(e4.data); - }, function(e4) { - t2.port2.postMessage(e4); - }) : l && "onreadystatechange" in l.createElement("script") ? (s = l.documentElement, function(e4) { - var t3 = l.createElement("script"); - t3.onreadystatechange = function() { - c(e4), t3.onreadystatechange = null, s.removeChild(t3), t3 = null; - }, s.appendChild(t3); - }) : function(e4) { - setTimeout(c, 0, e4); - }, e3.setImmediate = function(e4) { - "function" != typeof e4 && (e4 = new Function("" + e4)); - for (var t3 = new Array(arguments.length - 1), r3 = 0; r3 < t3.length; r3++) - t3[r3] = arguments[r3 + 1]; - var n2 = { callback: e4, args: t3 }; - return h[o] = n2, i(o), o++; - }, e3.clearImmediate = f; - } - function f(e4) { - delete h[e4]; - } - function c(e4) { - if (u) - setTimeout(c, 0, e4); - else { - var t3 = h[e4]; - if (t3) { - u = true; - try { - !function(e5) { - var t4 = e5.callback, r3 = e5.args; - switch (r3.length) { - case 0: - t4(); - break; - case 1: - t4(r3[0]); - break; - case 2: - t4(r3[0], r3[1]); - break; - case 3: - t4(r3[0], r3[1], r3[2]); - break; - default: - t4.apply(n, r3); - } - }(t3); - } finally { - f(e4), u = false; - } - } - } - } - function d(e4) { - e4.source === r2 && "string" == typeof e4.data && 0 === e4.data.indexOf(a) && c(+e4.data.slice(a.length)); - } - }("undefined" == typeof self ? void 0 === e2 ? this : e2 : self); - }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); - }, {}] }, {}, [10])(10); - }); - } - }); - - // ../components/smart-camera-web.js - var VERSION = "1.0.2"; - var DEFAULT_NO_OF_LIVENESS_FRAMES = 8; - var PORTRAIT_ID_PREVIEW_WIDTH = 396; - var PORTRAIT_ID_PREVIEW_HEIGHT = 527; - function isSamsungMultiCameraDevice() { - const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\d{3}/); - if (!matchedModelNumber) { - return false; - } - const modelNumber = parseInt(matchedModelNumber[0].match(/\d{3}/)[0], 10); - const smallerModelNumber = 970; - return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber; - } - function getLivenessFramesIndices(totalNoOfFrames, numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES) { - const selectedFrames = []; - if (totalNoOfFrames < numberOfFramesRequired) { - throw new Error("SmartCameraWeb: Minimum required no of frames is ", numberOfFramesRequired); - } - const frameDivisor = numberOfFramesRequired - 1; - const frameInterval = Math.floor(totalNoOfFrames / frameDivisor); - let replacementFrameIndex = 1; - for (let i = 0; i < totalNoOfFrames; i += frameInterval) { - if (selectedFrames.length < 8) { - selectedFrames.push(i); - } else { - selectedFrames[replacementFrameIndex] = i; - selectedFrames.sort((a, b) => a - b); - replacementFrameIndex += 1; - } - } - const lastFrameIndex = totalNoOfFrames - 1; - if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) { - selectedFrames.push(lastFrameIndex); - } - return selectedFrames; - } - var SmartFileUpload = class _SmartFileUpload { - static memoryLimit = 1024e4; - static supportedTypes = ["image/jpeg", "image/png"]; - static getHumanSize(numberOfBytes) { - const units = [ - "B", - "kB", - "MB", - "GB", - "TB", - "PB", - "EB", - "ZB", - "YB" - ]; - const exponent = Math.min( - Math.floor(Math.log(numberOfBytes) / Math.log(1024)), - units.length - 1 - ); - const approx = numberOfBytes / 1024 ** exponent; - const output = exponent === 0 ? `${numberOfBytes} bytes` : `${approx.toFixed(0)} ${units[exponent]}`; - return output; - } - static getData(file) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = (e) => { - resolve(e.target.result); - }; - reader.onerror = () => { - reject(new Error("An error occurred reading the file. Please check the file, and try again")); - }; - reader.readAsDataURL(file); - }); - } - static async retrieve(files) { - if (files.length > 1) { - throw new Error("Only one file upload is permitted at a time"); - } - const file = files[0]; - if (!_SmartFileUpload.supportedTypes.includes(file.type)) { - throw new Error("Unsupported file format. Please ensure that you are providing a JPG or PNG image"); - } - if (file.size > _SmartFileUpload.memoryLimit) { - throw new Error(`${file.name} is too large. Please ensure that the file is less than ${_SmartFileUpload.getHumanSize(_SmartFileUpload.memoryLimit)}.`); - } - const imageAsDataUrl = await _SmartFileUpload.getData(file); - return imageAsDataUrl; - } - }; - function scwTemplateString() { - return ` - - - - - - - - - - - - - - - -
-

-

-
- -
- ${this.showNavigation ? ` - - ` : ""} -
-

- We need access to your camera so that we can take selfie and proof-of-life images. -

- - - - ${this.hideAttribution ? "" : ` - - `} -
-
- - - - - - - - - - - - - - - - - - - - - - `; - } - var PoweredBySmileId = class extends HTMLElement { - constructor() { - super(); - const template = document.createElement("template"); - template.innerHTML = ` -

- - - - - - - - - - - - - - - - - - - -

- `; - this.attachShadow({ mode: "open" }).appendChild(template.content.cloneNode(true)); - } - }; - function hasMoreThanNColors(data, n = 16) { - const colors = /* @__PURE__ */ new Set(); - for (let i = 0; i < Math.min(data.length, 1e4); i += 4) { - colors.add(data[i] << 16 | data[i + 1] << 8 | data[i + 2]); - if (colors.size > n) { - return true; - } - } - return false; - } - window.customElements.define("powered-by-smile-id", PoweredBySmileId); - var SmartCameraWeb = class extends HTMLElement { - constructor() { - super(); - this.scwTemplateString = scwTemplateString.bind(this); - this.render = () => this.scwTemplateString(); - this.attachShadow({ mode: "open" }); - this.activeScreen = null; - } - setActiveScreen(element) { - this.activeScreen.hidden = true; - element.hidden = false; - this.activeScreen = element; - } - connectedCallback() { - this.shadowRoot.innerHTML = this.render(); - if ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices) { - this.setUpEventListeners(); - } else { - const heading = document.createElement("h1"); - heading.classList.add("error-message"); - heading.textContent = "Your browser does not support this integration"; - this.shadowRoot.innerHTML = heading; - } - } - disconnectedCallback() { - if (this.activeScreen) { - this.activeScreen.hidden = true; - } - this.activeScreen = null; - this.shadowRoot.innerHTML = ""; - } - static get observedAttributes() { - return ["document-capture-modes", "document-type", "hide-back-to-host", "show-navigation"]; - } - attributeChangedCallback(name) { - switch (name) { - case "document-capture-modes": - case "document-type": - case "hide-back-to-host": - case "show-navigation": - this.shadowRoot.innerHTML = this.render(); - this.setUpEventListeners(); - break; - default: - break; - } - } - setUpEventListeners() { - this.errorMessage = this.shadowRoot.querySelector("#error"); - this.requestScreen = this.shadowRoot.querySelector("#request-screen"); - this.activeScreen = this.requestScreen; - this.cameraScreen = this.shadowRoot.querySelector("#camera-screen"); - this.failedImageTestScreen = this.shadowRoot.querySelector("#failed-image-test-screen"); - this.reviewScreen = this.shadowRoot.querySelector("#review-screen"); - this.idEntryScreen = this.shadowRoot.querySelector("#id-entry-screen"); - this.IDCameraScreen = this.shadowRoot.querySelector("#id-camera-screen"); - this.IDReviewScreen = this.shadowRoot.querySelector("#id-review-screen"); - this.backOfIdEntryScreen = this.shadowRoot.querySelector("#back-of-id-entry-screen"); - this.backOfIDCameraScreen = this.shadowRoot.querySelector("#back-of-id-camera-screen"); - this.backOfIDReviewScreen = this.shadowRoot.querySelector("#back-of-id-review-screen"); - this.thanksScreen = this.shadowRoot.querySelector("#thanks-screen"); - this.videoContainer = this.shadowRoot.querySelector(".video-container > .video"); - this.smileCTA = this.shadowRoot.querySelector("#smile-cta"); - this.imageOutline = this.shadowRoot.querySelector("#image-outline path"); - this.startImageCapture = this.shadowRoot.querySelector("#start-image-capture"); - this.captureIDImage = this.shadowRoot.querySelector("#capture-id-image"); - this.captureBackOfIDImage = this.shadowRoot.querySelector("#capture-back-of-id-image"); - this.reviewImage = this.shadowRoot.querySelector("#review-image"); - this.IDReviewImage = this.shadowRoot.querySelector("#id-review-image"); - this.backOfIDReviewImage = this.shadowRoot.querySelector("#back-of-id-review-image"); - this.reStartImageCapture = this.shadowRoot.querySelector("#restart-image-capture"); - this.reCaptureIDImage = this.shadowRoot.querySelector("#re-capture-id-image"); - this.reCaptureBackOfIDImage = this.shadowRoot.querySelector("#re-capture-back-of-id-image"); - this.selectSelfie = this.shadowRoot.querySelector("#select-selfie"); - this.selectIDImage = this.shadowRoot.querySelector("#select-id-image"); - this.selectBackOfIDImage = this.shadowRoot.querySelector("#select-back-of-id-image"); - this.takeDocumentPhotoButton = this.idEntryScreen.querySelector("#take-photo"); - this.uploadDocumentPhotoButton = this.idEntryScreen.querySelector("#upload-photo"); - this.skipBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#skip-this-step"); - this.takeBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#take-photo"); - this.uploadBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#upload-photo"); - this.shadowRoot.querySelector("#request-camera-access").addEventListener("click", () => this.init()); - if (this.showNavigation) { - const backButtons = this.shadowRoot.querySelectorAll(".back-button-exit"); - backButtons.forEach((button) => { - button.addEventListener("click", () => { - this._backAndExit(); - }); - }); - const closeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - closeButtons.forEach((button) => { - button.addEventListener("click", () => { - this._exitSmartCamera(); - }); - }); - } - if (this.takeDocumentPhotoButton) - this.takeDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); - if (this.skipBackOfDocumentPhotoButton) - this.skipBackOfDocumentPhotoButton.addEventListener("click", () => this._skipBackDocument()); - if (this.takeBackOfDocumentPhotoButton) - this.takeBackOfDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); - if (this.uploadDocumentPhotoButton) - this.uploadDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); - if (this.uploadBackOfDocumentPhotoButton) - this.uploadBackOfDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); - this.backToSelfie = this.shadowRoot.querySelector("#back-button-selfie"); - this.backToIdEntryButton = this.shadowRoot.querySelector("#back-button-id-entry"); - this.backToBackIdEntryButton = this.shadowRoot.querySelector("#back-button-back-id-entry"); - this.backToIdImageButton = this.shadowRoot.querySelector("#back-button-id-image"); - if (this.backToSelfie) { - this.backToSelfie.addEventListener("click", () => { - this._reStartImageCapture(); - }); - } - if (this.backToIdEntryButton) { - this.backToIdEntryButton.addEventListener("click", () => { - this.setActiveScreen(this.idEntryScreen); - }); - } - if (this.backToBackIdEntryButton) { - this.backToBackIdEntryButton.addEventListener("click", () => { - this.setActiveScreen(this.backOfIdEntryScreen); - }); - } - if (this.backToIdImageButton) { - this.backToIdImageButton.addEventListener("click", () => { - this.setActiveScreen(this.IDReviewScreen); - }); - } - this.startImageCapture.addEventListener("click", () => { - this._startImageCapture(); - }); - this.selectSelfie.addEventListener("click", () => { - this._selectSelfie(); - }); - this.selectIDImage.addEventListener("click", () => { - this._selectIDImage(); - }); - this.selectBackOfIDImage.addEventListener("click", () => { - this._selectIDImage(true); - }); - this.captureIDImage.addEventListener("click", () => { - this._captureIDImage(); - }); - this.captureBackOfIDImage.addEventListener("click", () => { - this._captureIDImage(); - }); - this.reStartImageCapture.addEventListener("click", () => { - this._reStartImageCapture(); - }); - this.reCaptureIDImage.addEventListener("click", () => { - this._reCaptureIDImage(); - }); - this.reCaptureBackOfIDImage.addEventListener("click", () => { - this._reCaptureIDImage(); - }); - } - init() { - this._videoStreamDurationInMS = 7800; - this._imageCaptureIntervalInMS = 200; - this._data = { - images: [], - partner_params: { - libraryVersion: VERSION, - permissionGranted: false - } - }; - this._rawImages = []; - navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { - this.handleSuccess(stream); - }).catch((e) => { - this.handleError(e); - }); - } - reset() { - this.disconnectedCallback(); - this.connectedCallback(); - } - resetErrorMessage() { - this.errorMessage.textContent = ""; - } - handleSuccess(stream) { - const videoExists = !!this.videoContainer.querySelector("video"); - const video = videoExists ? this.videoContainer.querySelector("video") : document.createElement("video"); - video.autoplay = true; - video.playsInline = true; - video.muted = true; - if ("srcObject" in video) { - video.srcObject = stream; - } else { - video.src = window.URL.createObjectURL(stream); - } - video.play(); - if (!videoExists) - this.videoContainer.prepend(video); - this._data.partner_params.permissionGranted = true; - this.setActiveScreen(this.cameraScreen); - this._stream = stream; - this._video = video; - } - handleIDStream(stream) { - const videoExists = this.activeScreen === this.IDCameraScreen ? !!this.IDCameraScreen.querySelector("video") : !!this.backOfIDCameraScreen.querySelector("video"); - let video = null; - if (videoExists) { - if (this.activeScreen === this.IDCameraScreen) { - video = this.IDCameraScreen.querySelector("video"); - } else { - video = this.backOfIDCameraScreen.querySelector("video"); - } - } else { - video = document.createElement("video"); - } - video.autoplay = true; - video.playsInline = true; - video.muted = true; - if ("srcObject" in video) { - video.srcObject = stream; - } else { - video.src = window.URL.createObjectURL(stream); - } - video.play(); - const videoContainer = this.activeScreen === this.IDCameraScreen ? this.IDCameraScreen.querySelector(".id-video-container") : this.backOfIDCameraScreen.querySelector(".id-video-container"); - video.onloadedmetadata = () => { - videoContainer.querySelector(".actions").hidden = false; - }; - if (!videoExists) { - videoContainer.prepend(video); - } - this._IDStream = stream; - this._IDVideo = video; - } - handleError(e) { - switch (e.name) { - case "NotAllowedError": - case "SecurityError": - this.errorMessage.textContent = ` - Looks like camera access was not granted, or was blocked by a browser - level setting / extension. Please follow the prompt from the URL bar, - or extensions, and enable access. - You may need to refresh to start all over again - `; - break; - case "AbortError": - this.errorMessage.textContent = ` - Oops! Something happened, and we lost access to your stream. - Please refresh to start all over again - `; - break; - case "NotReadableError": - this.errorMessage.textContent = ` - There seems to be a problem with your device's camera, or its connection. - Please check this, and when resolved, try again. Or try another device. - `; - break; - case "NotFoundError": - this.errorMessage.textContent = ` - We are unable to find a video stream. - You may need to refresh to start all over again - `; - break; - case "TypeError": - this.errorMessage.textContent = ` - This site is insecure, and as such cannot have access to your camera. - Try to navigate to a secure version of this page, or contact the owner. - `; - break; - default: - this.errorMessage.textContent = e.message; - } - } - _startImageCapture() { - this.startImageCapture.disabled = true; - const imageOutlineLength = this.imageOutline.getTotalLength(); - this.imageOutline.style.transition = "none"; - this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`; - this.imageOutline.style.strokeDashoffset = imageOutlineLength; - this.imageOutline.getBoundingClientRect(); - this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1e3}s ease-in-out`; - this.imageOutline.style.strokeDashoffset = "0"; - this.smileCTA.style.animation = `fadeInOut ease ${this._videoStreamDurationInMS / 1e3}s`; - this._imageCaptureInterval = setInterval(() => { - this._capturePOLPhoto(); - }, this._imageCaptureIntervalInMS); - this._videoStreamTimeout = setTimeout(() => { - this._stopVideoStream(this._stream); - }, this._videoStreamDurationInMS); - } - _captureIDImage() { - const image = this._drawIDImage(); - if (this.activeScreen === this.IDCameraScreen) { - this.IDReviewImage.src = image; - } else { - this.backOfIDReviewImage.src = image; - } - this._data.images.push({ - image: image.split(",")[1], - image_type_id: this.activeScreen === this.IDCameraScreen ? 3 : 7 - }); - this._stopIDVideoStream(); - if (this.activeScreen === this.IDCameraScreen) { - this.setActiveScreen(this.IDReviewScreen); - } else { - this.setActiveScreen(this.backOfIDReviewScreen); - } - } - _drawImage(canvas, enableImageTests = true, video = this._video) { - this.resetErrorMessage(); - const context = canvas.getContext("2d"); - context.drawImage( - video, - 0, - 0, - video.videoWidth, - video.videoHeight, - 0, - 0, - canvas.width, - canvas.height - ); - if (enableImageTests) { - const imageData = context.getImageData(0, 0, canvas.width, canvas.height); - const hasEnoughColors = hasMoreThanNColors(imageData.data); - if (hasEnoughColors) { - return context; - } - throw new Error("Unable to capture webcam images - Please try another device"); - } else { - return context; - } - } - _capturePOLPhoto() { - const canvas = document.createElement("canvas"); - canvas.width = 240; - canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; - this._drawImage(canvas, false); - this._rawImages.push(canvas.toDataURL("image/jpeg")); - } - _captureReferencePhoto() { - const canvas = document.createElement("canvas"); - canvas.width = 480; - canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; - this._drawImage(canvas, !this.disableImageTests); - const image = canvas.toDataURL("image/jpeg"); - this._referenceImage = image; - this._data.images.push({ - image: image.split(",")[1], - image_type_id: 2 - }); - } - _skipBackDocument() { - this._publishSelectedImages(); - } - async _uploadDocument(event) { - this.resetErrorMessage(); - try { - const { files } = event.target; - const fileData = await SmartFileUpload.retrieve(files); - this._data.images.push({ - // NOTE: data URLs start with a file type before the base64 data, - // separated by a comma. - // - // we are only interested in the base64 segment, so we extract it - image: fileData.split(",")[1], - image_type_id: this.activeScreen === this.idEntryScreen ? 3 : 7 - }); - const nextScreen = this.activeScreen === this.idEntryScreen ? this.IDReviewScreen : this.backOfIDReviewScreen; - const previewImage = nextScreen.querySelector("img"); - previewImage.src = fileData; - this.setActiveScreen(nextScreen); - } catch (error) { - this.handleError(error); - } - } - _drawIDImage(video = this._IDVideo) { - const canvas = document.createElement("canvas"); - if (this.isPortraitCaptureView) { - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - const ctx = canvas.getContext("2d"); - ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - const previewWidth = PORTRAIT_ID_PREVIEW_WIDTH; - const previewHeight = PORTRAIT_ID_PREVIEW_HEIGHT; - const paddingPercent = 0.5; - const paddedWidth = previewWidth * (1 + paddingPercent); - const paddedHeight = previewHeight * (1 + paddingPercent); - const cropWidth = paddedWidth; - const cropHeight = paddedHeight; - const cropLeft = (canvas.width - cropWidth) / 2; - const cropTop = (canvas.height - cropHeight) / 2; - const croppedCanvas = document.createElement("canvas"); - croppedCanvas.width = cropWidth; - croppedCanvas.height = cropHeight; - const croppedCtx = croppedCanvas.getContext("2d"); - croppedCtx.drawImage(canvas, cropLeft, cropTop, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); - return croppedCanvas.toDataURL("image/jpeg"); - } - canvas.width = 2240; - canvas.height = 1260; - const context = canvas.getContext("2d"); - const aspectRatio = video.videoWidth / video.videoHeight; - if (aspectRatio < 1) { - const imageFrame = this.activeScreen.querySelector('[class*="image-frame"]:not([hidden]) [href*="image-frame"]'); - const videoBox = video.getBoundingClientRect(); - const frameBox = imageFrame.getBoundingClientRect(); - const sourceXOffset = (frameBox.left - videoBox.left) / videoBox.width * video.videoWidth; - const sourceYOffset = (frameBox.top - videoBox.top) / videoBox.height * video.videoHeight; - const sourceWidth = frameBox.width * (video.videoWidth / videoBox.width); - const sourceHeight = frameBox.height * (video.videoHeight / videoBox.height); - canvas.height = canvas.width * frameBox.height / frameBox.width; - context.drawImage(video, sourceXOffset, sourceYOffset, sourceWidth, sourceHeight, 0, 0, canvas.width, canvas.height); - return canvas.toDataURL("image/jpeg"); - } - context.drawImage(video, 0, 0, canvas.width, canvas.height); - return canvas.toDataURL("image/jpeg"); - } - _stopVideoStream(stream) { - try { - clearTimeout(this._videoStreamTimeout); - clearInterval(this._imageCaptureInterval); - clearInterval(this._drawingInterval); - this.smileCTA.style.animation = "none"; - this._capturePOLPhoto(); - this._captureReferencePhoto(); - stream.getTracks().forEach((track) => track.stop()); - this.reviewImage.src = this._referenceImage; - const totalNoOfFrames = this._rawImages.length; - const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames); - this._data.images = this._data.images.concat(livenessFramesIndices.map((imageIndex) => ({ - image: this._rawImages[imageIndex].split(",")[1], - image_type_id: 6 - }))); - this.setActiveScreen(this.reviewScreen); - } catch (error) { - this.setActiveScreen(this.failedImageTestScreen); - } - } - _stopIDVideoStream(stream = this._IDStream) { - stream.getTracks().forEach((track) => track.stop()); - } - async _startIDCamera() { - try { - const stream = await navigator.mediaDevices.getUserMedia({ - audio: false, - video: { - facingMode: "environment", - width: { min: 1280 }, - // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant) - // "We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges. - // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it." - zoom: isSamsungMultiCameraDevice() ? 2 : 1 - } - }); - if (this.activeScreen === this.idEntryScreen) { - this.setActiveScreen(this.IDCameraScreen); - } else if (this.activeScreen === this.backOfIdEntryScreen) { - this.setActiveScreen(this.backOfIDCameraScreen); - } - this.handleIDStream(stream); - } catch (e) { - this.handleError(e); - } - } - _selectSelfie() { - if (!this.captureID) { - this._publishSelectedImages(); - } else { - this.setActiveScreen(this.idEntryScreen); - } - } - _selectIDImage(backOfIDCaptured = false) { - if (!this.captureBackOfID || backOfIDCaptured) { - this._publishSelectedImages(); - } else { - this.setActiveScreen(this.backOfIdEntryScreen); - } - } - _publishSelectedImages() { - this.dispatchEvent( - new CustomEvent("imagesComputed", { detail: this._data }) - ); - this.setActiveScreen(this.thanksScreen); - } - _exitSmartCamera() { - this.dispatchEvent( - new CustomEvent("close", { detail: {} }) - ); - } - _backAndExit() { - this.dispatchEvent( - new CustomEvent("backExit", { detail: {} }) - ); - } - async _reStartImageCapture() { - this.startImageCapture.disabled = false; - this._rawImages = []; - this._data.images = []; - try { - const stream = await navigator.mediaDevices.getUserMedia({ - audio: false, - video: true - }); - this.handleSuccess(stream); - } catch (e) { - this.handleError(e); - } - } - async _reCaptureIDImage() { - const previousScreen = this.activeScreen === this.IDReviewScreen ? this.idEntryScreen : this.backOfIdEntryScreen; - this.setActiveScreen(previousScreen); - this._data.images.pop(); - } - get captureID() { - return this.hasAttribute("capture-id"); - } - get captureBackOfID() { - return this.getAttribute("capture-id") === "back" || false; - } - get hideAttribution() { - return this.hasAttribute("hide-attribution"); - } - get showNavigation() { - return this.hasAttribute("show-navigation"); - } - get hideBackToHost() { - return this.hasAttribute("hide-back-to-host"); - } - get documentType() { - return this.getAttribute("document-type"); - } - get isPortraitCaptureView() { - return this.getAttribute("document-type") === "GREEN_BOOK"; - } - get documentCaptureModes() { - return this.getAttribute("document-capture-modes") || "camera"; - } - get supportBothCaptureModes() { - const value = this.documentCaptureModes; - return value.includes("camera") && value.includes("upload"); - } - get disableImageTests() { - return this.hasAttribute("disable-image-tests"); - } - get doNotUpload() { - return this.getAttribute("document-capture-modes") === "camera"; - } - }; - window.customElements.define("smart-camera-web", SmartCameraWeb); - - // src/js/doc-verification.js - var import_jszip = __toESM(require_jszip_min(), 1); - - // package.json - var version = "v1.2.3"; - - // src/js/components/Combobox.js - function generateId(prefix) { - const id = [...Array(30)].map(() => Math.random().toString(36)[3]).join(""); - return `${prefix}-${id}`; - } - function isElementInView(element) { - const bounding = element.getBoundingClientRect(); - return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth); - } - function isScrollable(element) { - return element && element.clientHeight < element.scrollHeight; - } - function maintainScrollVisibility(activeElement, scrollParent) { - const { offsetHeight, offsetTop } = activeElement; - const { offsetHeight: parentOffsetHeight, scrollTop } = scrollParent; - const isAbove = offsetTop < scrollTop; - const isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight; - if (isAbove) { - scrollParent.scrollTo(0, offsetTop); - } else if (isBelow) { - scrollParent.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight); - } - } - var ComboboxRoot = class extends HTMLElement { - constructor() { - super(); - this.handleRoaming = this.handleRoaming.bind(this); - } - connectedCallback() { - this.trigger = this.querySelector("smileid-combobox-trigger"); - document.addEventListener("click", this.handleRoaming); - this.addEventListener("focusout", this.handleRoaming); - this.addEventListener("blur", this.handleRoaming); - } - disconnectedCallback() { - document.removeEventListener("click", this.handleRoaming); - this.removeEventListener("focusout", this.handleRoaming); - this.removeEventListener("blur", this.handleRoaming); - } - handleRoaming(event) { - const target = event.relatedTarget || event.target; - if (this.contains(target)) { - return; - } - if (this.trigger.getAttribute("expanded") === "true") { - this.trigger.setAttribute("expanded", "false"); - } - } - }; - var ComboboxTrigger = class extends HTMLElement { - constructor() { - super(); - this.handleKeyUp = this.handleKeyUp.bind(this); - this.handleKeyDown = this.handleKeyDown.bind(this); - this.handleSelection = this.handleSelection.bind(this); - this.toggleExpansionState = this.toggleExpansionState.bind(this); - } - get type() { - return this.getAttribute("type") || "text"; - } - get label() { - return this.getAttribute("label") || ""; - } - get value() { - return this.getAttribute("value") || ""; - } - get disabled() { - return this.hasAttribute("disabled"); - } - connectedCallback() { - if (!this.label) { - throw new Error(": a label attribute is required"); - } - this.innerHTML = `${this.type === "text" ? ` -
- - -
- ` : ``}`; - this.setAttribute("expanded", false); - this.inputTrigger = this.querySelector("input"); - this.buttonTrigger = this.querySelector("button"); - this.buttonTrigger.setAttribute("aria-expanded", false); - this.buttonTrigger.setAttribute("role", "combobox"); - this.buttonTrigger.addEventListener("keydown", this.handleKeyDown); - this.buttonTrigger.addEventListener("click", this.toggleExpansionState); - if (this.inputTrigger) { - this.inputTrigger.setAttribute("aria-expanded", false); - this.inputTrigger.setAttribute("role", "combobox"); - this.inputTrigger.addEventListener("keydown", this.handleKeyDown); - this.inputTrigger.addEventListener("keyup", this.handleKeyUp); - this.inputTrigger.addEventListener("change", (e) => e.stopPropagation()); - } - this.listbox = this.parentElement.querySelector("smileid-combobox-listbox"); - this.options = Array.from( - this.parentElement.querySelectorAll("smileid-combobox-option") - ); - this.options.forEach((node) => { - node.addEventListener("Combobox::Option::Select", this.handleSelection); - }); - } - disconnectedCallback() { - this.buttonTrigger.removeEventListener("keydown", this.handleKeyDown); - this.buttonTrigger.removeEventListener("click", this.toggleExpansionState); - if (this.inputTrigger) { - this.inputTrigger.removeEventListener("keydown", this.handleKeyDown); - this.inputTrigger.removeEventListener("keyup", this.handleKeyUp); - this.inputTrigger.removeEventListener( - "change", - (e) => e.stopPropagation() - ); - } - if (this.options) { - this.options.forEach((node) => { - node.removeEventListener( - "Combobox::Option::Select", - this.handleSelection - ); - }); - } - } - handleKeyDown(event) { - if (event.ctrlKey || event.shiftKey) { - return; - } - const key = event.key; - switch (key) { - case "Enter": - case "Space": - case " ": - if (this.getAttribute("expanded") === "true") { - if (this.inputTrigger && (key === "Space" || key === " ")) { - this.resetListbox(); - } else { - event.preventDefault(); - const selectedOption = this.buttonTrigger.getAttribute( - "aria-activedescendant" - ); - if (selectedOption) { - document.getElementById(selectedOption).click(); - } - } - } else { - event.preventDefault(); - this.toggleExpansionState(); - } - break; - case "Esc": - case "Escape": - event.preventDefault(); - if (this.getAttribute("expanded") === "true") { - this.toggleExpansionState(); - } - break; - case "Down": - case "ArrowDown": - event.preventDefault(); - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - this.focusListbox("First"); - } else { - this.focusListbox("Down"); - } - break; - case "Up": - case "ArrowUp": - event.preventDefault(); - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - this.focusListbox("Last"); - } else { - this.focusListbox("Up"); - } - break; - case "Left": - case "ArrowLeft": - case "Right": - case "ArrowRight": - case "Home": - case "End": - this.resetListbox(); - break; - case "Tab": - break; - default: - break; - } - } - handleKeyUp(event) { - const key = event.key; - const isPrintableCharacter = (str) => str.length === 1 && str.match(/\S| /); - if (event.key === "Escape" || event.key === "Esc") { - event.preventDefault(); - if (this.getAttribute("expanded") === "true") { - this.toggleExpansionState(); - } else if (this.inputTrigger) { - this.inputTrigger.value = ""; - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Filter", { detail: "" }) - ); - } - } - if (isPrintableCharacter(key) || key === "Backspace") { - this.resetListbox(); - this.filterListbox(event.target.value); - } - } - toggleExpansionState() { - const listboxIsExpanded = this.getAttribute("expanded") === "true"; - this.setAttribute("expanded", !listboxIsExpanded); - this.buttonTrigger.setAttribute("aria-expanded", !listboxIsExpanded); - if (this.inputTrigger) { - this.inputTrigger.setAttribute("aria-expanded", !listboxIsExpanded); - } - } - handleSelection(event) { - if (this.inputTrigger) { - this.inputTrigger.value = event.detail.label; - } else { - this.buttonTrigger.textContent = event.detail.label; - } - this.toggleExpansionState(); - this.parentElement.dispatchEvent( - new CustomEvent("change", { - detail: { - value: event.detail.value - } - }) - ); - } - filterListbox(value) { - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - } - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Filter", { detail: value }) - ); - } - focusListbox(direction) { - this.resetListbox(); - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Focus", { - detail: { - direction - } - }) - ); - } - resetListbox() { - this.listbox.dispatchEvent(new CustomEvent("Combobox::Listbox::Reset")); - } - }; - var ComboboxListbox = class extends HTMLElement { - constructor() { - super(); - this.handleFilter = this.handleFilter.bind(this); - this.handleFocus = this.handleFocus.bind(this); - this.handleReset = this.handleReset.bind(this); - this.handleOptionSelection = this.handleOptionSelection.bind(this); - } - get emptyLabel() { - return this.getAttribute("empty-label"); - } - get emptyState() { - return ` -

- ${this.emptyLabel || "No items"} -

- `; - } - connectedCallback() { - this.setAttribute("role", "listbox"); - this.setAttribute("id", generateId("listbox")); - this.addEventListener("Combobox::Listbox::Filter", this.handleFilter); - this.addEventListener("Combobox::Listbox::Focus", this.handleFocus); - this.addEventListener("Combobox::Listbox::Reset", this.handleReset); - this.triggers = Array.from( - this.parentElement.querySelectorAll( - "smileid-combobox-trigger input, smileid-combobox-trigger button" - ) - ); - this.triggers.forEach( - (node) => node.setAttribute("aria-controls", this.getAttribute("id")) - ); - this.optionNodes = Array.from( - this.querySelectorAll("smileid-combobox-option") - ); - this.selectedNode = this.optionNodes.find( - (node) => !node.hasAttribute("hidden") && node.hasAttribute("aria-selected") - ) || this.optionNodes.filter((node) => !node.hasAttribute("hidden"))[0]; - this.selectedNode.setAttribute("tabindex", "0"); - this.optionNodes.forEach((node) => { - node.addEventListener( - "Combobox::Option::Select", - this.handleOptionSelection - ); - }); - if (this.optionNodes.length === 0) { - this.innerHTML = this.emptyState; - } - } - disconnectedCallback() { - this.removeEventListener("Combobox::Listbox::Filter", this.handleFilter); - this.removeEventListener("Combobox::Listbox::Focus", this.handleFocus); - this.removeEventListener("Combobox::Listbox::Reset", this.handleReset); - this.optionNodes.forEach((node) => { - node.removeEventListener( - "Combobox::Option::Select", - this.handleOptionSelection - ); - }); - } - static get observedAttributes() { - return ["search-term"]; - } - attributeChangedCallback(name, oldValue, newValue) { - switch (name) { - case "search-term": - if (oldValue && !newValue) { - this.optionNodes.forEach((node) => { - node.removeAttribute("hidden"); - }); - } else if (newValue) { - this.filterNodes(newValue); - } - break; - default: - break; - } - } - filterNodes(searchTerm) { - this.optionNodes.forEach((node) => { - const value = node.getAttribute("value").toLowerCase(); - const label = node.getAttribute("label").toLowerCase(); - const containsSearchTerm = value.includes(searchTerm.toLowerCase()) || label.includes(searchTerm.toLowerCase()); - if (containsSearchTerm) { - node.removeAttribute("hidden"); - } else { - node.setAttribute("hidden", true); - } - }); - const optionsVisible = this.optionNodes.find( - (node) => !node.hasAttribute("hidden") - ); - const emptyState = this.querySelector("#empty-state"); - if (!optionsVisible && !emptyState) { - this.insertAdjacentHTML("afterbegin", this.emptyState); - } else if (optionsVisible && emptyState) { - this.removeChild(emptyState); - } - } - handleFilter(event) { - const searchTerm = event.detail; - this.setAttribute("search-term", searchTerm); - } - handleFocus(event) { - this.setSelected(event.detail.direction); - } - handleReset() { - this.optionNodes.forEach((node) => node.setAttribute("tabindex", "-1")); - } - handleOptionSelection(event) { - const inputTrigger = this.triggers.filter( - (node) => node.tagName === "INPUT" - )[0]; - if (inputTrigger) { - this.setAttribute("search-term", event.detail.label); - } - } - setSelected(direction) { - const visibleOptions = this.optionNodes.filter( - (node) => !node.hasAttribute("hidden") - ); - this.selectedNode.setAttribute("tabindex", "0"); - const currentIndex = visibleOptions.findIndex( - (node) => node === this.selectedNode - ); - const lastIndex = visibleOptions.length - 1; - let nextIndex; - switch (direction) { - case "First": - nextIndex = 0; - break; - case "Last": - nextIndex = lastIndex; - break; - case "Up": - if (currentIndex === 0) { - nextIndex = lastIndex; - } else { - nextIndex = currentIndex - 1; - } - break; - default: - if (currentIndex === lastIndex) { - nextIndex = 0; - } else { - nextIndex = currentIndex + 1; - } - break; - } - if (currentIndex !== nextIndex) { - this.swapSelected(this.selectedNode, visibleOptions[nextIndex]); - } - } - swapSelected(currentNode, newNode) { - currentNode.setAttribute("tabindex", "-1"); - newNode.setAttribute("tabindex", "0"); - this.selectedNode = newNode; - if (isScrollable(this)) { - maintainScrollVisibility(this.selectedNode, this); - } - if (!isElementInView(newNode)) { - newNode.scrollIntoView({ behavior: "smooth", block: "nearest" }); - } - this.triggers.forEach( - (node) => node.setAttribute("aria-activedescendant", newNode.id) - ); - } - }; - var ComboboxOption = class extends HTMLElement { - connectedCallback() { - this.setAttribute("role", "option"); - this.setAttribute("tabindex", "-1"); - this.setAttribute("id", generateId("option")); - this.options = Array.from( - this.parentElement.querySelectorAll("smileid-combobox-option") - ); - this.addEventListener("click", this.select); - } - disconnectedCallback() { - this.removeEventListener("click", this.select); - } - get value() { - return this.getAttribute("value"); - } - get label() { - return this.getAttribute("label"); - } - select() { - const selectedOption = this.options.find( - (node) => node.getAttribute("aria-selected") - ); - if (selectedOption) { - selectedOption.removeAttribute("aria-selected"); - } - this.setAttribute("aria-selected", true); - this.dispatchEvent( - new CustomEvent("Combobox::Option::Select", { - detail: { - label: this.label, - value: this.value, - id: this.getAttribute("id") - } - }) - ); - } - }; - var Combobox_default = { - Root: ComboboxRoot, - Trigger: ComboboxTrigger, - List: ComboboxListbox, - Option: ComboboxOption - }; - - // src/js/doc-verification.js - (function documentVerification() { - "use strict"; - const endpoints = { - sandbox: "https://testapi.smileidentity.com/v1", - live: "https://api.smileidentity.com/v1", - production: "https://api.smileidentity.com/v1" - }; - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); - window.customElements.define("smileid-combobox", Combobox_default.Root); - window.customElements.define("smileid-combobox-trigger", Combobox_default.Trigger); - window.customElements.define("smileid-combobox-listbox", Combobox_default.List); - window.customElements.define("smileid-combobox-option", Combobox_default.Option); - let config; - let activeScreen; - let id_info; - let images; - let partner_params; - const LoadingScreen = document.querySelector("#loading-screen"); - const SelectIDType = document.querySelector("#select-id-type"); - const SmartCameraWeb2 = document.querySelector("smart-camera-web"); - const UploadProgressScreen = document.querySelector( - "#upload-progress-screen" - ); - const UploadFailureScreen = document.querySelector("#upload-failure-screen"); - const CompleteScreen = document.querySelector("#complete-screen"); - const CloseIframeButtons = document.querySelectorAll(".close-iframe"); - const RetryUploadButton = document.querySelector("#retry-upload"); - let fileToUpload; - let uploadURL; - async function getProductConstraints() { - const payload = { - token: config.token, - partner_id: config.partner_details.partner_id - }; - const fetchConfig = { - cache: "no-cache", - mode: "cors", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - method: "POST", - body: JSON.stringify(payload) - }; - try { - const response = await fetch( - `${endpoints[config.environment]}/valid_documents`, - fetchConfig - ); - const json = await response.json(); - return json.valid_documents; - } catch (e) { - throw new Error("Failed to get supported ID types", { cause: e }); - } - } - async function getLegacyProductConstraints() { - const fetchConfig = { - cache: "no-cache", - mode: "cors", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - method: "GET" - }; - try { - const response = await fetch( - `${endpoints[config.environment]}/services`, - fetchConfig - ); - const json = await response.json(); - return json.hosted_web.doc_verification; - } catch (e) { - throw new Error("Failed to get supported ID types", { cause: e }); - } - } - window.addEventListener( - "message", - async (event) => { - if (event.data && event.data.includes("SmileIdentity::Configuration")) { - config = JSON.parse(event.data); - activeScreen = LoadingScreen; - const productConstraints = await getProductConstraints(); - initializeSession(productConstraints); - getPartnerParams(); - } - }, - false - ); - function loadCountrySelector(countries, placeholderElement) { - const isSingleCountry = countries.length === 1; - const autocomplete = document.createElement("smileid-combobox"); - autocomplete.setAttribute("id", "country"); - autocomplete.innerHTML = ` - - - - - ${countries.map( - (country) => ` - - ${country.name} - - ` - ).join("\n")} - - `; - placeholderElement.replaceWith(autocomplete); - return autocomplete; - } - function loadIdTypeSelector(idTypes) { - const idTypeSelector = document.querySelector("#id-type-selector"); - let combobox = document.querySelector('smileid-combobox[id="id_type"]'); - if (!combobox) { - combobox = document.createElement("smileid-combobox"); - combobox.setAttribute("id", "id_type"); - } - combobox.innerHTML = ` - - - - - ${idTypes.map( - (idType) => ` - -
-

${idType.name}

- ${idType.name === "Others" || idType.example && idType.example.length > 1 ? `${idType.example.length > 1 ? "e.g. " : ""}${idType.example.join(", ")}` : ""} -
-
- ` - ).join("\n")} -
- `; - if (idTypeSelector.hidden) { - idTypeSelector.appendChild(combobox); - idTypeSelector.removeAttribute("hidden"); - } - return combobox; - } - async function initializeSession(constraints) { - let selectedCountry; - let selectedIdType; - function loadIdTypes(countryCode) { - const countryIdTypes = constraints.find( - (item) => item.country.code === countryCode - ).id_types; - if (config.id_selection) { - return countryIdTypes.filter((idType) => { - return config.id_selection[countryCode].find((validIdType) => { - if (validIdType.toLowerCase() === "others") { - return !idType.code; - } - return validIdType === idType.code; - }); - }); - } - return countryIdTypes; - } - function initialiseIdTypeSelector(country, selectIdType) { - const idTypes = loadIdTypes(country); - const idTypeSelector = loadIdTypeSelector(idTypes, selectIdType); - idTypeSelector.addEventListener("change", (e) => { - selectedIdType = e.detail.value; - }); - } - const supportedCountries = constraints.map(({ country: { name, code } }) => ({ - code, - name - })).sort((a, b) => { - if (a.name < b.name) { - return -1; - } - if (a.name > b.name) { - return 1; - } - return 0; - }).map((item) => item.code); - let validCountries = []; - if (config.id_selection) { - const legacyConstraints = await getLegacyProductConstraints(); - Object.keys(config.id_selection).forEach((countryCode) => { - const isCountrySupported = supportedCountries.includes(countryCode); - if (!isCountrySupported) { - throw new Error(`SmileIdentity - ${countryCode} is not supported`); - } - const countryIndex = constraints.findIndex( - (entry) => entry.country.code === countryCode - ); - config.id_selection[countryCode].forEach((idSelectionIdType) => { - const isIdTypeSupported = constraints[countryIndex].id_types.find( - (constrainedIdType) => idSelectionIdType === constrainedIdType.code - ); - if (isIdTypeSupported) - return; - console.error( - `SmileIdentity - ${countryCode}-${idSelectionIdType} has been deprecated` - ); - if (idSelectionIdType.toLowerCase() !== "others") { - constraints[countryIndex].id_types.push({ - code: idSelectionIdType, - has_back: false, - name: legacyConstraints[countryCode].id_types[idSelectionIdType].label - }); - } - }); - }); - const selectedCountryList = Object.keys(config.id_selection); - validCountries = supportedCountries.filter( - (value) => selectedCountryList.includes(value) - ); - if (validCountries.length === 1) { - selectedCountry = validCountries[0]; - id_info = { - country: validCountries[0] - }; - const idTypes = config.id_selection[selectedCountry]; - if (idTypes.length === 1 || typeof idTypes === "string") { - id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; - const documentCaptureConfig = constraints.find((entry) => entry.country.code === selectedCountry).id_types.find((entry) => entry.code === id_info.id_type); - SmartCameraWeb2.setAttribute("document-type", id_info.id_type); - if (documentCaptureConfig.has_back) { - SmartCameraWeb2.setAttribute("capture-id", "back"); - } - if (config.document_capture_modes) { - SmartCameraWeb2.setAttribute( - "document-capture-modes", - config.document_capture_modes.join(",") - ); - } - SmartCameraWeb2.setAttribute("hide-back-to-host", true); - setActiveScreen(SmartCameraWeb2); - } - } - } else { - validCountries = supportedCountries; - } - const countries = validCountries.map((countryCode) => { - const countryObject = constraints.find( - (entry) => entry.country.code === countryCode - ).country; - return { - code: countryCode, - name: countryObject.name - }; - }); - if (!id_info || !id_info.id_type) { - const selectCountry = SelectIDType.querySelector("#country"); - const hostedWebConfigForm = document.querySelector( - 'form[name="hosted-web-config"]' - ); - selectCountry.disabled = false; - setActiveScreen(SelectIDType); - const countrySelector = loadCountrySelector(countries, selectCountry); - countrySelector.addEventListener("change", (e) => { - selectedCountry = e.detail ? e.detail.value : ""; - initialiseIdTypeSelector(selectedCountry); - }); - if (id_info && id_info.country) { - selectedCountry = id_info.country; - initialiseIdTypeSelector(selectedCountry); - } - hostedWebConfigForm.addEventListener("submit", (e) => { - e.preventDefault(); - id_info = { - country: selectedCountry, - id_type: selectedIdType - }; - SmartCameraWeb2.setAttribute("document-type", selectedIdType); - const documentCaptureConfig = constraints.find((entry) => entry.country.code === selectedCountry).id_types.find((entry) => entry.code === selectedIdType); - if (documentCaptureConfig.has_back) { - SmartCameraWeb2.setAttribute("capture-id", "back"); - } - if (config.document_capture_modes) { - SmartCameraWeb2.setAttribute( - "document-capture-modes", - config.document_capture_modes.join(",") - ); - } - setActiveScreen(SmartCameraWeb2); - }); - } - } - SmartCameraWeb2.addEventListener( - "imagesComputed", - (event) => { - images = event.detail.images; - setActiveScreen(UploadProgressScreen); - handleFormSubmit(event); - }, - false - ); - SmartCameraWeb2.addEventListener( - "backExit", - () => { - setActiveScreen(SelectIDType); - }, - false - ); - SmartCameraWeb2.addEventListener( - "close", - () => { - closeWindow(); - }, - false - ); - RetryUploadButton.addEventListener( - "click", - () => { - retryUpload(); - }, - false - ); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - closeWindow(); - }, - false - ); - }); - function getPartnerParams() { - function parseJWT(token) { - const base64Url = token.split(".")[1]; - const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); - const jsonPayload = decodeURIComponent( - atob(base64).split("").map(function(c) { - return `%${c.charCodeAt(0).toString(16)}`; - }).join("") - ); - return JSON.parse(jsonPayload); - } - const { partner_params: partnerParams } = parseJWT(config.token); - partner_params = { ...partnerParams, ...config.partner_params || {} }; - } - function setActiveScreen(node) { - activeScreen.hidden = true; - node.hidden = false; - activeScreen = node; - } - async function handleFormSubmit(event) { - event.preventDefault(); - const errorMessage = document.querySelector(".validation-message"); - if (errorMessage) - errorMessage.remove(); - try { - event.target.disabled = true; - [uploadURL, fileToUpload] = await Promise.all([ - getUploadURL(), - createZip() - ]); - uploadZip(fileToUpload, uploadURL); - event.target.disabled = false; - } catch (error) { - event.target.disabled = false; - displayErrorMessage("Something went wrong"); - console.error( - `SmileIdentity - ${error.name || error.message}: ${error.cause}` - ); - } - } - function displayErrorMessage(message) { - const p = document.createElement("p"); - p.textContent = message; - p.classList.add("validation-message"); - p.style.fontSize = "1.5rem"; - p.style.textAlign = "center"; - const main = document.querySelector("main"); - main.prepend(p); - } - async function createZip() { - const zip = new import_jszip.default(); - zip.file( - "info.json", - JSON.stringify({ - package_information: { - language: "Hosted Web Integration", - apiVersion: { - buildNumber: 0, - majorVersion: 2, - minorVersion: 0 - } - }, - id_info, - images - }) - ); - try { - const zipFile = await zip.generateAsync({ type: "blob" }); - return zipFile; - } catch (error) { - throw new Error("createZip failed", { cause: error }); - } - } - async function getUploadURL() { - const payload = { - source_sdk: config.sdk || "hosted_web", - source_sdk_version: config.sdk_version || version, - file_name: `${config.product}.zip`, - smile_client_id: config.partner_details.partner_id, - callback_url: config.callback_url, - token: config.token, - partner_params: { - ...partner_params, - job_type: 6 - } - }; - const fetchConfig = { - cache: "no-cache", - mode: "cors", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - method: "POST", - body: JSON.stringify(payload) - }; - const URL = `${endpoints[config.environment] || config.environment}/upload`; - try { - const response = await fetch(URL, fetchConfig); - const json = await response.json(); - if (json.error) - throw new Error(json.error); - return json.upload_url; - } catch (error) { - throw new Error("getUploadURL failed", { cause: error }); - } - } - function uploadZip(file, destination) { - const request = new XMLHttpRequest(); - request.open("PUT", destination); - request.upload.addEventListener("load", function() { - return request.response; - }); - request.upload.addEventListener("error", function(e) { - setActiveScreen(UploadFailureScreen); - throw new Error("uploadZip failed", { cause: e }); - }); - request.onreadystatechange = function() { - if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { - setActiveScreen(CompleteScreen); - handleSuccess(); - window.setTimeout(closeWindow, 2e3); - } - if (request.readyState === XMLHttpRequest.DONE && request.status !== 200) { - setActiveScreen(UploadFailureScreen); - throw new Error("uploadZip failed", { cause: request }); - } - }; - request.setRequestHeader("Content-type", "application/zip"); - request.send(file); - } - function retryUpload() { - const fileUploaded = uploadZip(fileToUpload, uploadURL); - return fileUploaded; - } - function closeWindow() { - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - function handleSuccess() { - referenceWindow.postMessage("SmileIdentity::Success", "*"); - } - })(); -})(); -/*! Bundled license information: - -jszip/dist/jszip.min.js: - (*! - - JSZip v3.10.1 - A JavaScript class for generating and reading zip files - - - (c) 2009-2016 Stuart Knightley - Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. - - JSZip uses the library pako released under the MIT license : - https://github.com/nodeca/pako/blob/main/LICENSE - *) -*/ diff --git a/packages/embed/build/js/ekyc.min.js b/packages/embed/build/js/ekyc.min.js deleted file mode 100644 index 54508350..00000000 --- a/packages/embed/build/js/ekyc.min.js +++ /dev/null @@ -1,3758 +0,0 @@ -(() => { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod - )); - - // ../../node_modules/validate.js/validate.js - var require_validate = __commonJS({ - "../../node_modules/validate.js/validate.js"(exports, module) { - (function(exports2, module2, define2) { - "use strict"; - var validate3 = function(attributes, constraints, options) { - options = v.extend({}, v.options, options); - var results = v.runValidations(attributes, constraints, options), attr, validator; - if (results.some(function(r) { - return v.isPromise(r.error); - })) { - throw new Error("Use validate.async if you want support for promises"); - } - return validate3.processValidationResults(results, options); - }; - var v = validate3; - v.extend = function(obj) { - [].slice.call(arguments, 1).forEach(function(source) { - for (var attr in source) { - obj[attr] = source[attr]; - } - }); - return obj; - }; - v.extend(validate3, { - // This is the version of the library as a semver. - // The toString function will allow it to be coerced into a string - version: { - major: 0, - minor: 13, - patch: 1, - metadata: null, - toString: function() { - var version2 = v.format("%{major}.%{minor}.%{patch}", v.version); - if (!v.isEmpty(v.version.metadata)) { - version2 += "+" + v.version.metadata; - } - return version2; - } - }, - // Below is the dependencies that are used in validate.js - // The constructor of the Promise implementation. - // If you are using Q.js, RSVP or any other A+ compatible implementation - // override this attribute to be the constructor of that promise. - // Since jQuery promises aren't A+ compatible they won't work. - Promise: typeof Promise !== "undefined" ? Promise : ( - /* istanbul ignore next */ - null - ), - EMPTY_STRING_REGEXP: /^\s*$/, - // Runs the validators specified by the constraints object. - // Will return an array of the format: - // [{attribute: "", error: ""}, ...] - runValidations: function(attributes, constraints, options) { - var results = [], attr, validatorName, value, validators, validator, validatorOptions, error; - if (v.isDomElement(attributes) || v.isJqueryElement(attributes)) { - attributes = v.collectFormValues(attributes); - } - for (attr in constraints) { - value = v.getDeepObjectValue(attributes, attr); - validators = v.result(constraints[attr], value, attributes, attr, options, constraints); - for (validatorName in validators) { - validator = v.validators[validatorName]; - if (!validator) { - error = v.format("Unknown validator %{name}", { name: validatorName }); - throw new Error(error); - } - validatorOptions = validators[validatorName]; - validatorOptions = v.result(validatorOptions, value, attributes, attr, options, constraints); - if (!validatorOptions) { - continue; - } - results.push({ - attribute: attr, - value, - validator: validatorName, - globalOptions: options, - attributes, - options: validatorOptions, - error: validator.call( - validator, - value, - validatorOptions, - attr, - attributes, - options - ) - }); - } - } - return results; - }, - // Takes the output from runValidations and converts it to the correct - // output format. - processValidationResults: function(errors, options) { - errors = v.pruneEmptyErrors(errors, options); - errors = v.expandMultipleErrors(errors, options); - errors = v.convertErrorMessages(errors, options); - var format = options.format || "grouped"; - if (typeof v.formatters[format] === "function") { - errors = v.formatters[format](errors); - } else { - throw new Error(v.format("Unknown format %{format}", options)); - } - return v.isEmpty(errors) ? void 0 : errors; - }, - // Runs the validations with support for promises. - // This function will return a promise that is settled when all the - // validation promises have been completed. - // It can be called even if no validations returned a promise. - async: function(attributes, constraints, options) { - options = v.extend({}, v.async.options, options); - var WrapErrors = options.wrapErrors || function(errors) { - return errors; - }; - if (options.cleanAttributes !== false) { - attributes = v.cleanAttributes(attributes, constraints); - } - var results = v.runValidations(attributes, constraints, options); - return new v.Promise(function(resolve, reject) { - v.waitForResults(results).then(function() { - var errors = v.processValidationResults(results, options); - if (errors) { - reject(new WrapErrors(errors, options, attributes, constraints)); - } else { - resolve(attributes); - } - }, function(err) { - reject(err); - }); - }); - }, - single: function(value, constraints, options) { - options = v.extend({}, v.single.options, options, { - format: "flat", - fullMessages: false - }); - return v({ single: value }, { single: constraints }, options); - }, - // Returns a promise that is resolved when all promises in the results array - // are settled. The promise returned from this function is always resolved, - // never rejected. - // This function modifies the input argument, it replaces the promises - // with the value returned from the promise. - waitForResults: function(results) { - return results.reduce(function(memo, result) { - if (!v.isPromise(result.error)) { - return memo; - } - return memo.then(function() { - return result.error.then(function(error) { - result.error = error || null; - }); - }); - }, new v.Promise(function(r) { - r(); - })); - }, - // If the given argument is a call: function the and: function return the value - // otherwise just return the value. Additional arguments will be passed as - // arguments to the function. - // Example: - // ``` - // result('foo') // 'foo' - // result(Math.max, 1, 2) // 2 - // ``` - result: function(value) { - var args = [].slice.call(arguments, 1); - if (typeof value === "function") { - value = value.apply(null, args); - } - return value; - }, - // Checks if the value is a number. This function does not consider NaN a - // number like many other `isNumber` functions do. - isNumber: function(value) { - return typeof value === "number" && !isNaN(value); - }, - // Returns false if the object is not a function - isFunction: function(value) { - return typeof value === "function"; - }, - // A simple check to verify that the value is an integer. Uses `isNumber` - // and a simple modulo check. - isInteger: function(value) { - return v.isNumber(value) && value % 1 === 0; - }, - // Checks if the value is a boolean - isBoolean: function(value) { - return typeof value === "boolean"; - }, - // Uses the `Object` function to check if the given argument is an object. - isObject: function(obj) { - return obj === Object(obj); - }, - // Simply checks if the object is an instance of a date - isDate: function(obj) { - return obj instanceof Date; - }, - // Returns false if the object is `null` of `undefined` - isDefined: function(obj) { - return obj !== null && obj !== void 0; - }, - // Checks if the given argument is a promise. Anything with a `then` - // function is considered a promise. - isPromise: function(p) { - return !!p && v.isFunction(p.then); - }, - isJqueryElement: function(o) { - return o && v.isString(o.jquery); - }, - isDomElement: function(o) { - if (!o) { - return false; - } - if (!o.querySelectorAll || !o.querySelector) { - return false; - } - if (v.isObject(document) && o === document) { - return true; - } - if (typeof HTMLElement === "object") { - return o instanceof HTMLElement; - } else { - return o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string"; - } - }, - isEmpty: function(value) { - var attr; - if (!v.isDefined(value)) { - return true; - } - if (v.isFunction(value)) { - return false; - } - if (v.isString(value)) { - return v.EMPTY_STRING_REGEXP.test(value); - } - if (v.isArray(value)) { - return value.length === 0; - } - if (v.isDate(value)) { - return false; - } - if (v.isObject(value)) { - for (attr in value) { - return false; - } - return true; - } - return false; - }, - // Formats the specified strings with the given values like so: - // ``` - // format("Foo: %{foo}", {foo: "bar"}) // "Foo bar" - // ``` - // If you want to write %{...} without having it replaced simply - // prefix it with % like this `Foo: %%{foo}` and it will be returned - // as `"Foo: %{foo}"` - format: v.extend(function(str, vals) { - if (!v.isString(str)) { - return str; - } - return str.replace(v.format.FORMAT_REGEXP, function(m0, m1, m2) { - if (m1 === "%") { - return "%{" + m2 + "}"; - } else { - return String(vals[m2]); - } - }); - }, { - // Finds %{key} style patterns in the given string - FORMAT_REGEXP: /(%?)%\{([^\}]+)\}/g - }), - // "Prettifies" the given string. - // Prettifying means replacing [.\_-] with spaces as well as splitting - // camel case words. - prettify: function(str) { - if (v.isNumber(str)) { - if (str * 100 % 1 === 0) { - return "" + str; - } else { - return parseFloat(Math.round(str * 100) / 100).toFixed(2); - } - } - if (v.isArray(str)) { - return str.map(function(s) { - return v.prettify(s); - }).join(", "); - } - if (v.isObject(str)) { - if (!v.isDefined(str.toString)) { - return JSON.stringify(str); - } - return str.toString(); - } - str = "" + str; - return str.replace(/([^\s])\.([^\s])/g, "$1 $2").replace(/\\+/g, "").replace(/[_-]/g, " ").replace(/([a-z])([A-Z])/g, function(m0, m1, m2) { - return "" + m1 + " " + m2.toLowerCase(); - }).toLowerCase(); - }, - stringifyValue: function(value, options) { - var prettify = options && options.prettify || v.prettify; - return prettify(value); - }, - isString: function(value) { - return typeof value === "string"; - }, - isArray: function(value) { - return {}.toString.call(value) === "[object Array]"; - }, - // Checks if the object is a hash, which is equivalent to an object that - // is neither an array nor a function. - isHash: function(value) { - return v.isObject(value) && !v.isArray(value) && !v.isFunction(value); - }, - contains: function(obj, value) { - if (!v.isDefined(obj)) { - return false; - } - if (v.isArray(obj)) { - return obj.indexOf(value) !== -1; - } - return value in obj; - }, - unique: function(array) { - if (!v.isArray(array)) { - return array; - } - return array.filter(function(el, index, array2) { - return array2.indexOf(el) == index; - }); - }, - forEachKeyInKeypath: function(object, keypath, callback) { - if (!v.isString(keypath)) { - return void 0; - } - var key = "", i, escape = false; - for (i = 0; i < keypath.length; ++i) { - switch (keypath[i]) { - case ".": - if (escape) { - escape = false; - key += "."; - } else { - object = callback(object, key, false); - key = ""; - } - break; - case "\\": - if (escape) { - escape = false; - key += "\\"; - } else { - escape = true; - } - break; - default: - escape = false; - key += keypath[i]; - break; - } - } - return callback(object, key, true); - }, - getDeepObjectValue: function(obj, keypath) { - if (!v.isObject(obj)) { - return void 0; - } - return v.forEachKeyInKeypath(obj, keypath, function(obj2, key) { - if (v.isObject(obj2)) { - return obj2[key]; - } - }); - }, - // This returns an object with all the values of the form. - // It uses the input name as key and the value as value - // So for example this: - // - // would return: - // {email: "foo@bar.com"} - collectFormValues: function(form, options) { - var values = {}, i, j, input, inputs, option, value; - if (v.isJqueryElement(form)) { - form = form[0]; - } - if (!form) { - return values; - } - options = options || {}; - inputs = form.querySelectorAll("input[name], textarea[name]"); - for (i = 0; i < inputs.length; ++i) { - input = inputs.item(i); - if (v.isDefined(input.getAttribute("data-ignored"))) { - continue; - } - var name = input.name.replace(/\./g, "\\\\."); - value = v.sanitizeFormValue(input.value, options); - if (input.type === "number") { - value = value ? +value : null; - } else if (input.type === "checkbox") { - if (input.attributes.value) { - if (!input.checked) { - value = values[name] || null; - } - } else { - value = input.checked; - } - } else if (input.type === "radio") { - if (!input.checked) { - value = values[name] || null; - } - } - values[name] = value; - } - inputs = form.querySelectorAll("select[name]"); - for (i = 0; i < inputs.length; ++i) { - input = inputs.item(i); - if (v.isDefined(input.getAttribute("data-ignored"))) { - continue; - } - if (input.multiple) { - value = []; - for (j in input.options) { - option = input.options[j]; - if (option && option.selected) { - value.push(v.sanitizeFormValue(option.value, options)); - } - } - } else { - var _val = typeof input.options[input.selectedIndex] !== "undefined" ? input.options[input.selectedIndex].value : ( - /* istanbul ignore next */ - "" - ); - value = v.sanitizeFormValue(_val, options); - } - values[input.name] = value; - } - return values; - }, - sanitizeFormValue: function(value, options) { - if (options.trim && v.isString(value)) { - value = value.trim(); - } - if (options.nullify !== false && value === "") { - return null; - } - return value; - }, - capitalize: function(str) { - if (!v.isString(str)) { - return str; - } - return str[0].toUpperCase() + str.slice(1); - }, - // Remove all errors who's error attribute is empty (null or undefined) - pruneEmptyErrors: function(errors) { - return errors.filter(function(error) { - return !v.isEmpty(error.error); - }); - }, - // In - // [{error: ["err1", "err2"], ...}] - // Out - // [{error: "err1", ...}, {error: "err2", ...}] - // - // All attributes in an error with multiple messages are duplicated - // when expanding the errors. - expandMultipleErrors: function(errors) { - var ret = []; - errors.forEach(function(error) { - if (v.isArray(error.error)) { - error.error.forEach(function(msg) { - ret.push(v.extend({}, error, { error: msg })); - }); - } else { - ret.push(error); - } - }); - return ret; - }, - // Converts the error mesages by prepending the attribute name unless the - // message is prefixed by ^ - convertErrorMessages: function(errors, options) { - options = options || {}; - var ret = [], prettify = options.prettify || v.prettify; - errors.forEach(function(errorInfo) { - var error = v.result( - errorInfo.error, - errorInfo.value, - errorInfo.attribute, - errorInfo.options, - errorInfo.attributes, - errorInfo.globalOptions - ); - if (!v.isString(error)) { - ret.push(errorInfo); - return; - } - if (error[0] === "^") { - error = error.slice(1); - } else if (options.fullMessages !== false) { - error = v.capitalize(prettify(errorInfo.attribute)) + " " + error; - } - error = error.replace(/\\\^/g, "^"); - error = v.format(error, { - value: v.stringifyValue(errorInfo.value, options) - }); - ret.push(v.extend({}, errorInfo, { error })); - }); - return ret; - }, - // In: - // [{attribute: "", ...}] - // Out: - // {"": [{attribute: "", ...}]} - groupErrorsByAttribute: function(errors) { - var ret = {}; - errors.forEach(function(error) { - var list = ret[error.attribute]; - if (list) { - list.push(error); - } else { - ret[error.attribute] = [error]; - } - }); - return ret; - }, - // In: - // [{error: "", ...}, {error: "", ...}] - // Out: - // ["", ""] - flattenErrorsToArray: function(errors) { - return errors.map(function(error) { - return error.error; - }).filter(function(value, index, self) { - return self.indexOf(value) === index; - }); - }, - cleanAttributes: function(attributes, whitelist) { - function whitelistCreator(obj, key, last) { - if (v.isObject(obj[key])) { - return obj[key]; - } - return obj[key] = last ? true : {}; - } - function buildObjectWhitelist(whitelist2) { - var ow = {}, lastObject, attr; - for (attr in whitelist2) { - if (!whitelist2[attr]) { - continue; - } - v.forEachKeyInKeypath(ow, attr, whitelistCreator); - } - return ow; - } - function cleanRecursive(attributes2, whitelist2) { - if (!v.isObject(attributes2)) { - return attributes2; - } - var ret = v.extend({}, attributes2), w, attribute; - for (attribute in attributes2) { - w = whitelist2[attribute]; - if (v.isObject(w)) { - ret[attribute] = cleanRecursive(ret[attribute], w); - } else if (!w) { - delete ret[attribute]; - } - } - return ret; - } - if (!v.isObject(whitelist) || !v.isObject(attributes)) { - return {}; - } - whitelist = buildObjectWhitelist(whitelist); - return cleanRecursive(attributes, whitelist); - }, - exposeModule: function(validate4, root, exports3, module3, define3) { - if (exports3) { - if (module3 && module3.exports) { - exports3 = module3.exports = validate4; - } - exports3.validate = validate4; - } else { - root.validate = validate4; - if (validate4.isFunction(define3) && define3.amd) { - define3([], function() { - return validate4; - }); - } - } - }, - warn: function(msg) { - if (typeof console !== "undefined" && console.warn) { - console.warn("[validate.js] " + msg); - } - }, - error: function(msg) { - if (typeof console !== "undefined" && console.error) { - console.error("[validate.js] " + msg); - } - } - }); - validate3.validators = { - // Presence validates that the value isn't empty - presence: function(value, options) { - options = v.extend({}, this.options, options); - if (options.allowEmpty !== false ? !v.isDefined(value) : v.isEmpty(value)) { - return options.message || this.message || "can't be blank"; - } - }, - length: function(value, options, attribute) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var is = options.is, maximum = options.maximum, minimum = options.minimum, tokenizer = options.tokenizer || function(val) { - return val; - }, err, errors = []; - value = tokenizer(value); - var length = value.length; - if (!v.isNumber(length)) { - return options.message || this.notValid || "has an incorrect length"; - } - if (v.isNumber(is) && length !== is) { - err = options.wrongLength || this.wrongLength || "is the wrong length (should be %{count} characters)"; - errors.push(v.format(err, { count: is })); - } - if (v.isNumber(minimum) && length < minimum) { - err = options.tooShort || this.tooShort || "is too short (minimum is %{count} characters)"; - errors.push(v.format(err, { count: minimum })); - } - if (v.isNumber(maximum) && length > maximum) { - err = options.tooLong || this.tooLong || "is too long (maximum is %{count} characters)"; - errors.push(v.format(err, { count: maximum })); - } - if (errors.length > 0) { - return options.message || errors; - } - }, - numericality: function(value, options, attribute, attributes, globalOptions) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var errors = [], name, count, checks = { - greaterThan: function(v2, c) { - return v2 > c; - }, - greaterThanOrEqualTo: function(v2, c) { - return v2 >= c; - }, - equalTo: function(v2, c) { - return v2 === c; - }, - lessThan: function(v2, c) { - return v2 < c; - }, - lessThanOrEqualTo: function(v2, c) { - return v2 <= c; - }, - divisibleBy: function(v2, c) { - return v2 % c === 0; - } - }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; - if (v.isString(value) && options.strict) { - var pattern = "^-?(0|[1-9]\\d*)"; - if (!options.onlyInteger) { - pattern += "(\\.\\d+)?"; - } - pattern += "$"; - if (!new RegExp(pattern).test(value)) { - return options.message || options.notValid || this.notValid || this.message || "must be a valid number"; - } - } - if (options.noStrings !== true && v.isString(value) && !v.isEmpty(value)) { - value = +value; - } - if (!v.isNumber(value)) { - return options.message || options.notValid || this.notValid || this.message || "is not a number"; - } - if (options.onlyInteger && !v.isInteger(value)) { - return options.message || options.notInteger || this.notInteger || this.message || "must be an integer"; - } - for (name in checks) { - count = options[name]; - if (v.isNumber(count) && !checks[name](value, count)) { - var key = "not" + v.capitalize(name); - var msg = options[key] || this[key] || this.message || "must be %{type} %{count}"; - errors.push(v.format(msg, { - count, - type: prettify(name) - })); - } - } - if (options.odd && value % 2 !== 1) { - errors.push(options.notOdd || this.notOdd || this.message || "must be odd"); - } - if (options.even && value % 2 !== 0) { - errors.push(options.notEven || this.notEven || this.message || "must be even"); - } - if (errors.length) { - return options.message || errors; - } - }, - datetime: v.extend(function(value, options) { - if (!v.isFunction(this.parse) || !v.isFunction(this.format)) { - throw new Error("Both the parse and format functions needs to be set to use the datetime/date validator"); - } - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var err, errors = [], earliest = options.earliest ? this.parse(options.earliest, options) : NaN, latest = options.latest ? this.parse(options.latest, options) : NaN; - value = this.parse(value, options); - if (isNaN(value) || options.dateOnly && value % 864e5 !== 0) { - err = options.notValid || options.message || this.notValid || "must be a valid date"; - return v.format(err, { value: arguments[0] }); - } - if (!isNaN(earliest) && value < earliest) { - err = options.tooEarly || options.message || this.tooEarly || "must be no earlier than %{date}"; - err = v.format(err, { - value: this.format(value, options), - date: this.format(earliest, options) - }); - errors.push(err); - } - if (!isNaN(latest) && value > latest) { - err = options.tooLate || options.message || this.tooLate || "must be no later than %{date}"; - err = v.format(err, { - date: this.format(latest, options), - value: this.format(value, options) - }); - errors.push(err); - } - if (errors.length) { - return v.unique(errors); - } - }, { - parse: null, - format: null - }), - date: function(value, options) { - options = v.extend({}, options, { dateOnly: true }); - return v.validators.datetime.call(v.validators.datetime, value, options); - }, - format: function(value, options) { - if (v.isString(options) || options instanceof RegExp) { - options = { pattern: options }; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is invalid", pattern = options.pattern, match; - if (!v.isDefined(value)) { - return; - } - if (!v.isString(value)) { - return message; - } - if (v.isString(pattern)) { - pattern = new RegExp(options.pattern, options.flags); - } - match = pattern.exec(value); - if (!match || match[0].length != value.length) { - return message; - } - }, - inclusion: function(value, options) { - if (!v.isDefined(value)) { - return; - } - if (v.isArray(options)) { - options = { within: options }; - } - options = v.extend({}, this.options, options); - if (v.contains(options.within, value)) { - return; - } - var message = options.message || this.message || "^%{value} is not included in the list"; - return v.format(message, { value }); - }, - exclusion: function(value, options) { - if (!v.isDefined(value)) { - return; - } - if (v.isArray(options)) { - options = { within: options }; - } - options = v.extend({}, this.options, options); - if (!v.contains(options.within, value)) { - return; - } - var message = options.message || this.message || "^%{value} is restricted"; - if (v.isString(options.within[value])) { - value = options.within[value]; - } - return v.format(message, { value }); - }, - email: v.extend(function(value, options) { - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not a valid email"; - if (!v.isDefined(value)) { - return; - } - if (!v.isString(value)) { - return message; - } - if (!this.PATTERN.exec(value)) { - return message; - } - }, { - PATTERN: /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i - }), - equality: function(value, options, attribute, attributes, globalOptions) { - if (!v.isDefined(value)) { - return; - } - if (v.isString(options)) { - options = { attribute: options }; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not equal to %{attribute}"; - if (v.isEmpty(options.attribute) || !v.isString(options.attribute)) { - throw new Error("The attribute must be a non empty string"); - } - var otherValue = v.getDeepObjectValue(attributes, options.attribute), comparator = options.comparator || function(v1, v2) { - return v1 === v2; - }, prettify = options.prettify || globalOptions && globalOptions.prettify || v.prettify; - if (!comparator(value, otherValue, options, attribute, attributes)) { - return v.format(message, { attribute: prettify(options.attribute) }); - } - }, - // A URL validator that is used to validate URLs with the ability to - // restrict schemes and some domains. - url: function(value, options) { - if (!v.isDefined(value)) { - return; - } - options = v.extend({}, this.options, options); - var message = options.message || this.message || "is not a valid url", schemes = options.schemes || this.schemes || ["http", "https"], allowLocal = options.allowLocal || this.allowLocal || false, allowDataUrl = options.allowDataUrl || this.allowDataUrl || false; - if (!v.isString(value)) { - return message; - } - var regex = "^(?:(?:" + schemes.join("|") + ")://)(?:\\S+(?::\\S*)?@)?(?:"; - var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))"; - if (allowLocal) { - tld += "?"; - } else { - regex += // IP address exclusion - // private & local networks - "(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})"; - } - regex += // IP address dotted notation octets - // excludes loopback network 0.0.0.0 - // excludes reserved space >= 224.0.0.0 - // excludes network & broacast addresses - // (first & last IP address of each class) - "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + tld + ")(?::\\d{2,5})?(?:[/?#]\\S*)?$"; - if (allowDataUrl) { - var mediaType = "\\w+\\/[-+.\\w]+(?:;[\\w=]+)*"; - var urlchar = "[A-Za-z0-9-_.!~\\*'();\\/?:@&=+$,%]*"; - var dataurl = "data:(?:" + mediaType + ")?(?:;base64)?," + urlchar; - regex = "(?:" + regex + ")|(?:^" + dataurl + "$)"; - } - var PATTERN = new RegExp(regex, "i"); - if (!PATTERN.exec(value)) { - return message; - } - }, - type: v.extend(function(value, originalOptions, attribute, attributes, globalOptions) { - if (v.isString(originalOptions)) { - originalOptions = { type: originalOptions }; - } - if (!v.isDefined(value)) { - return; - } - var options = v.extend({}, this.options, originalOptions); - var type = options.type; - if (!v.isDefined(type)) { - throw new Error("No type was specified"); - } - var check; - if (v.isFunction(type)) { - check = type; - } else { - check = this.types[type]; - } - if (!v.isFunction(check)) { - throw new Error("validate.validators.type.types." + type + " must be a function."); - } - if (!check(value, options, attribute, attributes, globalOptions)) { - var message = originalOptions.message || this.messages[type] || this.message || options.message || (v.isFunction(type) ? "must be of the correct type" : "must be of type %{type}"); - if (v.isFunction(message)) { - message = message(value, originalOptions, attribute, attributes, globalOptions); - } - return v.format(message, { attribute: v.prettify(attribute), type }); - } - }, { - types: { - object: function(value) { - return v.isObject(value) && !v.isArray(value); - }, - array: v.isArray, - integer: v.isInteger, - number: v.isNumber, - string: v.isString, - date: v.isDate, - boolean: v.isBoolean - }, - messages: {} - }) - }; - validate3.formatters = { - detailed: function(errors) { - return errors; - }, - flat: v.flattenErrorsToArray, - grouped: function(errors) { - var attr; - errors = v.groupErrorsByAttribute(errors); - for (attr in errors) { - errors[attr] = v.flattenErrorsToArray(errors[attr]); - } - return errors; - }, - constraint: function(errors) { - var attr; - errors = v.groupErrorsByAttribute(errors); - for (attr in errors) { - errors[attr] = errors[attr].map(function(result) { - return result.validator; - }).sort(); - } - return errors; - } - }; - validate3.exposeModule(validate3, this, exports2, module2, define2); - }).call( - exports, - typeof exports !== "undefined" ? ( - /* istanbul ignore next */ - exports - ) : null, - typeof module !== "undefined" ? ( - /* istanbul ignore next */ - module - ) : null, - typeof define !== "undefined" ? ( - /* istanbul ignore next */ - define - ) : null - ); - } - }); - - // src/js/ekyc.js - var import_validate2 = __toESM(require_validate(), 1); - - // src/js/components/ConsentScreen.js - function templateString() { - return ` - - - - - - - - `; - } - var EndUserConsent = class extends HTMLElement { - constructor() { - super(); - this.idRequiresTotpConsent = ["BVN_MFA"]; - this.templateString = templateString.bind(this); - this.render = () => { - return this.templateString(); - }; - this.attachShadow({ mode: "open" }); - } - connectedCallback() { - this.pages = []; - const template = document.createElement("template"); - template.innerHTML = this.render(); - this.shadowRoot.appendChild(template.content.cloneNode(true)); - this.consentScreen = this.shadowRoot.querySelector("#consent-screen"); - this.totpConsentApp = this.shadowRoot.querySelector("totp-consent-app"); - this.consentRejectedScreen = this.shadowRoot.querySelector( - "#consent-rejected-screen" - ); - this.allowButton = this.shadowRoot.querySelector("#allow"); - this.rejectButton = this.shadowRoot.querySelector("#cancel"); - this.backToConsentButton = this.shadowRoot.querySelector("#back-to-consent"); - this.confirmConsentRejectionButton = this.shadowRoot.querySelector( - "#confirm-consent-rejection" - ); - this.backButton = this.shadowRoot.querySelector("#back-button"); - const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - this.allowButton.addEventListener( - "click", - (e) => this.handleConsentGrant(e) - ); - this.rejectButton.addEventListener( - "click", - (e) => this.handleConsentGrant(e) - ); - this.backToConsentButton.addEventListener( - "click", - () => this.setActiveScreen(this.consentScreen) - ); - this.confirmConsentRejectionButton.addEventListener( - "click", - (e) => this.handleConsentRejection(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", - (e) => this.handleTotpConsentEvents(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentGranted::TOTP", - (e) => this.handleTotpConsentEvents(e) - ); - this.totpConsentApp.addEventListener( - "SmileIdentity::ConsentDenied::Back", - (e) => this.handleBackEvents(e) - ); - this.backButton.addEventListener("click", (e) => { - this.handleBackEvents(e); - }); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - this.closeWindow(); - }, - false - ); - }); - this.activeScreen = this.consentScreen; - } - setActiveScreen(screen) { - this.activeScreen.hidden = true; - screen.hidden = false; - this.activeScreen = screen; - } - get baseUrl() { - return this.getAttribute("base-url"); - } - get country() { - return this.getAttribute("country"); - } - get demoMode() { - return !!this.hasAttribute("demo-mode"); - } - get hideBack() { - return this.hasAttribute("hide-back-to-host"); - } - get idHint() { - return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; - } - get idRegex() { - return this.getAttribute("id-regex"); - } - get idType() { - return this.getAttribute("id-type"); - } - get idTypeLabel() { - return this.getAttribute("id-type-label"); - } - get partnerId() { - return this.getAttribute("partner-id"); - } - get partnerName() { - return this.getAttribute("partner-name"); - } - get partnerLogoURL() { - return this.getAttribute("partner-logo"); - } - get partnerPolicyURL() { - return this.getAttribute("policy-url"); - } - get themeColor() { - return this.getAttribute("theme-color") || "#043C93"; - } - get token() { - return this.getAttribute("token"); - } - handleConsentGrant(e) { - const granted = e.target === this.allowButton; - if (granted) { - if (this.idRequiresTotpConsent.includes(this.idType)) { - this.setActiveScreen(this.totpConsentApp); - this.pages.push(this.consentScreen); - } else { - this.dispatchEvent( - new CustomEvent("SmileIdentity::ConsentGranted", { - detail: { - consented: { - personal_details: granted, - contact_information: granted, - document_information: granted - } - } - }) - ); - } - } else { - this.setActiveScreen(this.consentRejectedScreen); - } - } - handleConsentRejection() { - this.dispatchEvent(new CustomEvent("SmileIdentity::ConsentDenied")); - } - handleTotpConsentEvents(e) { - const customEvent = new CustomEvent(e.type, { - detail: { - ...e.detail - } - }); - this.dispatchEvent(customEvent); - } - handleBackEvents() { - const page = this.pages.pop(); - if (page) { - this.setActiveScreen(page); - } else { - this.dispatchEvent(new CustomEvent("SmileIdentity::Exit")); - } - } - closeWindow() { - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - }; - var ConsentScreen_default = EndUserConsent; - - // src/js/components/TotpConsentApp.js - var import_validate = __toESM(require_validate(), 1); - function postData(url, data) { - return fetch(url, { - method: "POST", - mode: "cors", - cache: "no-cache", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - body: JSON.stringify(data) - }); - } - function markup() { - return ` - - -
- -

- Enter your ${this.idTypeLabel} -

- -
-
- - - - -

- ${this.idHint} -

-
- - -
-
- - - - - `; - } - var TotpBasedConsent = class extends HTMLElement { - constructor() { - super(); - this.templateString = markup.bind(this); - this.render = () => { - return this.templateString(); - }; - this.attachShadow({ mode: "open" }); - this.modes = []; - this["otp-delivery-mode"] = ""; - this.queryOtpModes = this.queryOtpModes.bind(this); - this.selectOtpMode = this.selectOtpMode.bind(this); - this.submitOtp = this.submitOtp.bind(this); - this.switchContactMethod = this.switchContactMethod.bind(this); - this.handleTotpConsentGrant = this.handleTotpConsentGrant.bind(this); - this.handleTotpConsentContactMethodsOutdated = this.handleTotpConsentContactMethodsOutdated.bind(this); - this.pages = []; - } - static get observedAttributes() { - return ["modes", "otp-delivery-mode"]; - } - attributeChangedCallback(name) { - switch (name) { - case "modes": - case "otp-delivery-mode": { - const updatedTemplate = document.createElement("template"); - updatedTemplate.innerHTML = this.render(); - const updatedNode = updatedTemplate.content.cloneNode(true).querySelector(`#${this.activeScreen.id}`); - updatedNode.hidden = false; - this.shadowRoot.replaceChild(updatedNode, this.activeScreen); - this.setUpEventListeners(); - this.setActiveScreen(updatedNode); - break; - } - default: - break; - } - } - setUpEventListeners() { - this.idEntryScreen = this.shadowRoot.querySelector("#id-entry"); - this.selectModeScreen = this.shadowRoot.querySelector("#select-mode"); - this.otpVerificationScreen = this.shadowRoot.querySelector("#otp-verification"); - if (!this.activeScreen) { - this.activeScreen = this.idEntryScreen; - } - this.queryOtpModesButton = this.idEntryScreen.querySelector("#query-otp-modes"); - this.backButton = this.idEntryScreen.querySelector("#back-button"); - this.selectOtpModeButton = this.selectModeScreen.querySelector("#select-otp-mode"); - this.entryBackbutton = this.selectModeScreen.querySelector( - "#back-to-entry-button" - ); - this.contactMethodsOutdatedButton = this.selectModeScreen.querySelector( - "#contact-methods-outdated" - ); - this.submitOtpButton = this.otpVerificationScreen.querySelector("#submit-otp"); - this.switchContactMethodButton = this.otpVerificationScreen.querySelector( - ".try-another-method" - ); - const CloseIframeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - this.idNumberInput = this.idEntryScreen.querySelector("#id_number"); - this.modeInputs = this.selectModeScreen.querySelectorAll('[name="mode"]'); - this.otpInput = this.otpVerificationScreen.querySelector("#totp-token"); - this.queryOtpModesButton.addEventListener( - "click", - (e) => this.queryOtpModes(e) - ); - this.selectOtpModeButton.addEventListener( - "click", - (e) => this.selectOtpMode(e) - ); - this.submitOtpButton.addEventListener("click", (e) => this.submitOtp(e)); - this.switchContactMethodButton.addEventListener( - "click", - (e) => this.switchContactMethod(e) - ); - this.contactMethodsOutdatedButton.addEventListener( - "click", - (e) => this.handleTotpConsentContactMethodsOutdated(e) - ); - this.entryBackbutton.addEventListener("click", () => { - this.handleBackClick(); - }); - this.backButton.addEventListener("click", () => { - this.handleBackClick(); - }); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - this.closeWindow(); - }, - false - ); - }); - } - closeWindow() { - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - handleBackClick() { - const page = this.pages.pop(); - if (page) { - this.setActiveScreen(page); - } else { - this.dispatchEvent( - new CustomEvent("SmileIdentity::ConsentDenied::Back", {}) - ); - } - } - connectedCallback() { - const template = document.createElement("template"); - template.innerHTML = this.render(); - this.shadowRoot.appendChild(template.content.cloneNode(true)); - this.setUpEventListeners(); - } - switchContactMethod() { - this.queryOtpModes(); - } - resetForm() { - const invalidElements = this.activeScreen.querySelectorAll("[aria-invalid]"); - invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); - const validationMessages = this.activeScreen.querySelectorAll( - ".validation-message" - ); - validationMessages.forEach((el) => el.remove()); - } - handleIdNumberValidationErrors(errors) { - const fields = Object.keys(errors); - fields.forEach((field) => { - const input = this.activeScreen.querySelector(`#${field}`); - input.setAttribute("aria-invalid", "true"); - input.setAttribute("aria-describedby", `${field}-hint`); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("id", `${field}-hint`); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = errors[field][0]; - input.insertAdjacentElement("afterend", errorDiv); - }); - } - handleActiveScreenErrors(error) { - const submitButton = this.activeScreen.querySelector('[type="submit"]'); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = error; - submitButton.insertAdjacentElement("beforebegin", errorDiv); - } - validateIdNumber(idNumber) { - const validationConstraints = { - id_number: { - presence: { - allowEmpty: false, - message: "is required" - }, - format: new RegExp(this.idRegex) - } - }; - const errors = (0, import_validate.default)({ id_number: idNumber }, validationConstraints); - if (errors) { - this.handleIdNumberValidationErrors(errors); - } - return errors; - } - async queryOtpModes(event) { - if (event) { - event.preventDefault(); - this.resetForm(); - } - const validationErrors = this.validateIdNumber(this.idNumberInput.value); - localStorage.setItem("idNumber", this.idNumberInput.value || this.idNumber); - if (!validationErrors) { - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - partner_id: this.partnerId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.sessionId = json.session_id; - this.modes = json.modes; - this.setActiveScreen(this.selectModeScreen); - this.setAttribute("modes", json.modes); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - } - async selectOtpMode(event) { - event.preventDefault(); - this.resetForm(); - this.mode = Array.prototype.find.call( - this.modeInputs, - (node) => node.checked - ).value; - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - mode: this.mode, - partner_id: this.partnerId, - session_id: this.sessionId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent/mode`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.selectedOtpDeliveryMode = this.modes.filter( - (mode) => mode[this.mode] - )[0][this.mode]; - this.setActiveScreen(this.otpVerificationScreen); - this.setAttribute("otp-delivery-mode", this.selectedOtpDeliveryMode); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - async submitOtp(event) { - event.preventDefault(); - this.resetForm(); - this.otp = this.otpInput.value; - const data = { - country: this.country, - id_number: this.idNumber, - id_type: this.idType, - otp: this.otp, - partner_id: this.partnerId, - session_id: this.sessionId, - token: this.token - }; - const url = `${this.baseUrl}/totp_consent/otp`; - try { - this.toggleLoading(); - const response = await postData(url, data); - const json = await response.json(); - this.toggleLoading(); - if (!response.ok) { - this.handleActiveScreenErrors(json.error); - } else { - this.handleTotpConsentGrant(event); - } - } catch (error) { - this.toggleLoading(); - this.handleActiveScreenErrors(error.message); - } - } - toggleLoading() { - const button = this.activeScreen.querySelector('button[type="submit"]'); - const text = button.querySelector(".text"); - const arrow = button.querySelector("svg"); - const spinner = button.querySelector(".spinner"); - button.toggleAttribute("disabled"); - text.toggleAttribute("hidden"); - arrow.toggleAttribute("hidden"); - spinner.toggleAttribute("hidden"); - } - setActiveScreen(screen) { - this.activeScreen.hidden = true; - screen.hidden = false; - this.activeScreen = screen; - } - get baseUrl() { - return this.getAttribute("base-url"); - } - get country() { - return this.getAttribute("country"); - } - get idHint() { - return this.getAttribute("id-hint") || "Your BVN should be 11 digits long"; - } - get idNumber() { - return localStorage.getItem("idNumber"); - } - get idRegex() { - return this.getAttribute("id-regex"); - } - get idType() { - return this.getAttribute("id-type"); - } - get idTypeLabel() { - return this.getAttribute("id-type-label"); - } - get partnerId() { - return this.getAttribute("partner-id"); - } - get partnerName() { - return this.getAttribute("partner-name"); - } - get token() { - return this.getAttribute("token"); - } - handleTotpConsentGrant() { - const customEvent = new CustomEvent("SmileIdentity::ConsentGranted::TOTP", { - detail: { - id_number: this.idNumber, - session_id: this.sessionId, - consented: { - personal_details: true, - contact_information: true, - document_information: true - } - } - }); - this.dispatchEvent(customEvent); - } - handleTotpConsentContactMethodsOutdated() { - const tag = "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated"; - const customEvent = new CustomEvent(tag, { - detail: { - message: tag, - data: { - id_number: this.idNumber, - session_id: this.sessionId - } - } - }); - this.dispatchEvent(customEvent); - } - }; - var TotpConsentApp_default = TotpBasedConsent; - - // src/js/components/Combobox.js - function generateId(prefix) { - const id = [...Array(30)].map(() => Math.random().toString(36)[3]).join(""); - return `${prefix}-${id}`; - } - function isElementInView(element) { - const bounding = element.getBoundingClientRect(); - return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth); - } - function isScrollable(element) { - return element && element.clientHeight < element.scrollHeight; - } - function maintainScrollVisibility(activeElement, scrollParent) { - const { offsetHeight, offsetTop } = activeElement; - const { offsetHeight: parentOffsetHeight, scrollTop } = scrollParent; - const isAbove = offsetTop < scrollTop; - const isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight; - if (isAbove) { - scrollParent.scrollTo(0, offsetTop); - } else if (isBelow) { - scrollParent.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight); - } - } - var ComboboxRoot = class extends HTMLElement { - constructor() { - super(); - this.handleRoaming = this.handleRoaming.bind(this); - } - connectedCallback() { - this.trigger = this.querySelector("smileid-combobox-trigger"); - document.addEventListener("click", this.handleRoaming); - this.addEventListener("focusout", this.handleRoaming); - this.addEventListener("blur", this.handleRoaming); - } - disconnectedCallback() { - document.removeEventListener("click", this.handleRoaming); - this.removeEventListener("focusout", this.handleRoaming); - this.removeEventListener("blur", this.handleRoaming); - } - handleRoaming(event) { - const target = event.relatedTarget || event.target; - if (this.contains(target)) { - return; - } - if (this.trigger.getAttribute("expanded") === "true") { - this.trigger.setAttribute("expanded", "false"); - } - } - }; - var ComboboxTrigger = class extends HTMLElement { - constructor() { - super(); - this.handleKeyUp = this.handleKeyUp.bind(this); - this.handleKeyDown = this.handleKeyDown.bind(this); - this.handleSelection = this.handleSelection.bind(this); - this.toggleExpansionState = this.toggleExpansionState.bind(this); - } - get type() { - return this.getAttribute("type") || "text"; - } - get label() { - return this.getAttribute("label") || ""; - } - get value() { - return this.getAttribute("value") || ""; - } - get disabled() { - return this.hasAttribute("disabled"); - } - connectedCallback() { - if (!this.label) { - throw new Error(": a label attribute is required"); - } - this.innerHTML = `${this.type === "text" ? ` -
- - -
- ` : ``}`; - this.setAttribute("expanded", false); - this.inputTrigger = this.querySelector("input"); - this.buttonTrigger = this.querySelector("button"); - this.buttonTrigger.setAttribute("aria-expanded", false); - this.buttonTrigger.setAttribute("role", "combobox"); - this.buttonTrigger.addEventListener("keydown", this.handleKeyDown); - this.buttonTrigger.addEventListener("click", this.toggleExpansionState); - if (this.inputTrigger) { - this.inputTrigger.setAttribute("aria-expanded", false); - this.inputTrigger.setAttribute("role", "combobox"); - this.inputTrigger.addEventListener("keydown", this.handleKeyDown); - this.inputTrigger.addEventListener("keyup", this.handleKeyUp); - this.inputTrigger.addEventListener("change", (e) => e.stopPropagation()); - } - this.listbox = this.parentElement.querySelector("smileid-combobox-listbox"); - this.options = Array.from( - this.parentElement.querySelectorAll("smileid-combobox-option") - ); - this.options.forEach((node) => { - node.addEventListener("Combobox::Option::Select", this.handleSelection); - }); - } - disconnectedCallback() { - this.buttonTrigger.removeEventListener("keydown", this.handleKeyDown); - this.buttonTrigger.removeEventListener("click", this.toggleExpansionState); - if (this.inputTrigger) { - this.inputTrigger.removeEventListener("keydown", this.handleKeyDown); - this.inputTrigger.removeEventListener("keyup", this.handleKeyUp); - this.inputTrigger.removeEventListener( - "change", - (e) => e.stopPropagation() - ); - } - if (this.options) { - this.options.forEach((node) => { - node.removeEventListener( - "Combobox::Option::Select", - this.handleSelection - ); - }); - } - } - handleKeyDown(event) { - if (event.ctrlKey || event.shiftKey) { - return; - } - const key = event.key; - switch (key) { - case "Enter": - case "Space": - case " ": - if (this.getAttribute("expanded") === "true") { - if (this.inputTrigger && (key === "Space" || key === " ")) { - this.resetListbox(); - } else { - event.preventDefault(); - const selectedOption = this.buttonTrigger.getAttribute( - "aria-activedescendant" - ); - if (selectedOption) { - document.getElementById(selectedOption).click(); - } - } - } else { - event.preventDefault(); - this.toggleExpansionState(); - } - break; - case "Esc": - case "Escape": - event.preventDefault(); - if (this.getAttribute("expanded") === "true") { - this.toggleExpansionState(); - } - break; - case "Down": - case "ArrowDown": - event.preventDefault(); - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - this.focusListbox("First"); - } else { - this.focusListbox("Down"); - } - break; - case "Up": - case "ArrowUp": - event.preventDefault(); - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - this.focusListbox("Last"); - } else { - this.focusListbox("Up"); - } - break; - case "Left": - case "ArrowLeft": - case "Right": - case "ArrowRight": - case "Home": - case "End": - this.resetListbox(); - break; - case "Tab": - break; - default: - break; - } - } - handleKeyUp(event) { - const key = event.key; - const isPrintableCharacter = (str) => str.length === 1 && str.match(/\S| /); - if (event.key === "Escape" || event.key === "Esc") { - event.preventDefault(); - if (this.getAttribute("expanded") === "true") { - this.toggleExpansionState(); - } else if (this.inputTrigger) { - this.inputTrigger.value = ""; - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Filter", { detail: "" }) - ); - } - } - if (isPrintableCharacter(key) || key === "Backspace") { - this.resetListbox(); - this.filterListbox(event.target.value); - } - } - toggleExpansionState() { - const listboxIsExpanded = this.getAttribute("expanded") === "true"; - this.setAttribute("expanded", !listboxIsExpanded); - this.buttonTrigger.setAttribute("aria-expanded", !listboxIsExpanded); - if (this.inputTrigger) { - this.inputTrigger.setAttribute("aria-expanded", !listboxIsExpanded); - } - } - handleSelection(event) { - if (this.inputTrigger) { - this.inputTrigger.value = event.detail.label; - } else { - this.buttonTrigger.textContent = event.detail.label; - } - this.toggleExpansionState(); - this.parentElement.dispatchEvent( - new CustomEvent("change", { - detail: { - value: event.detail.value - } - }) - ); - } - filterListbox(value) { - if (this.getAttribute("expanded") !== "true") { - this.toggleExpansionState(); - } - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Filter", { detail: value }) - ); - } - focusListbox(direction) { - this.resetListbox(); - this.listbox.dispatchEvent( - new CustomEvent("Combobox::Listbox::Focus", { - detail: { - direction - } - }) - ); - } - resetListbox() { - this.listbox.dispatchEvent(new CustomEvent("Combobox::Listbox::Reset")); - } - }; - var ComboboxListbox = class extends HTMLElement { - constructor() { - super(); - this.handleFilter = this.handleFilter.bind(this); - this.handleFocus = this.handleFocus.bind(this); - this.handleReset = this.handleReset.bind(this); - this.handleOptionSelection = this.handleOptionSelection.bind(this); - } - get emptyLabel() { - return this.getAttribute("empty-label"); - } - get emptyState() { - return ` -

- ${this.emptyLabel || "No items"} -

- `; - } - connectedCallback() { - this.setAttribute("role", "listbox"); - this.setAttribute("id", generateId("listbox")); - this.addEventListener("Combobox::Listbox::Filter", this.handleFilter); - this.addEventListener("Combobox::Listbox::Focus", this.handleFocus); - this.addEventListener("Combobox::Listbox::Reset", this.handleReset); - this.triggers = Array.from( - this.parentElement.querySelectorAll( - "smileid-combobox-trigger input, smileid-combobox-trigger button" - ) - ); - this.triggers.forEach( - (node) => node.setAttribute("aria-controls", this.getAttribute("id")) - ); - this.optionNodes = Array.from( - this.querySelectorAll("smileid-combobox-option") - ); - this.selectedNode = this.optionNodes.find( - (node) => !node.hasAttribute("hidden") && node.hasAttribute("aria-selected") - ) || this.optionNodes.filter((node) => !node.hasAttribute("hidden"))[0]; - this.selectedNode.setAttribute("tabindex", "0"); - this.optionNodes.forEach((node) => { - node.addEventListener( - "Combobox::Option::Select", - this.handleOptionSelection - ); - }); - if (this.optionNodes.length === 0) { - this.innerHTML = this.emptyState; - } - } - disconnectedCallback() { - this.removeEventListener("Combobox::Listbox::Filter", this.handleFilter); - this.removeEventListener("Combobox::Listbox::Focus", this.handleFocus); - this.removeEventListener("Combobox::Listbox::Reset", this.handleReset); - this.optionNodes.forEach((node) => { - node.removeEventListener( - "Combobox::Option::Select", - this.handleOptionSelection - ); - }); - } - static get observedAttributes() { - return ["search-term"]; - } - attributeChangedCallback(name, oldValue, newValue) { - switch (name) { - case "search-term": - if (oldValue && !newValue) { - this.optionNodes.forEach((node) => { - node.removeAttribute("hidden"); - }); - } else if (newValue) { - this.filterNodes(newValue); - } - break; - default: - break; - } - } - filterNodes(searchTerm) { - this.optionNodes.forEach((node) => { - const value = node.getAttribute("value").toLowerCase(); - const label = node.getAttribute("label").toLowerCase(); - const containsSearchTerm = value.includes(searchTerm.toLowerCase()) || label.includes(searchTerm.toLowerCase()); - if (containsSearchTerm) { - node.removeAttribute("hidden"); - } else { - node.setAttribute("hidden", true); - } - }); - const optionsVisible = this.optionNodes.find( - (node) => !node.hasAttribute("hidden") - ); - const emptyState = this.querySelector("#empty-state"); - if (!optionsVisible && !emptyState) { - this.insertAdjacentHTML("afterbegin", this.emptyState); - } else if (optionsVisible && emptyState) { - this.removeChild(emptyState); - } - } - handleFilter(event) { - const searchTerm = event.detail; - this.setAttribute("search-term", searchTerm); - } - handleFocus(event) { - this.setSelected(event.detail.direction); - } - handleReset() { - this.optionNodes.forEach((node) => node.setAttribute("tabindex", "-1")); - } - handleOptionSelection(event) { - const inputTrigger = this.triggers.filter( - (node) => node.tagName === "INPUT" - )[0]; - if (inputTrigger) { - this.setAttribute("search-term", event.detail.label); - } - } - setSelected(direction) { - const visibleOptions = this.optionNodes.filter( - (node) => !node.hasAttribute("hidden") - ); - this.selectedNode.setAttribute("tabindex", "0"); - const currentIndex = visibleOptions.findIndex( - (node) => node === this.selectedNode - ); - const lastIndex = visibleOptions.length - 1; - let nextIndex; - switch (direction) { - case "First": - nextIndex = 0; - break; - case "Last": - nextIndex = lastIndex; - break; - case "Up": - if (currentIndex === 0) { - nextIndex = lastIndex; - } else { - nextIndex = currentIndex - 1; - } - break; - default: - if (currentIndex === lastIndex) { - nextIndex = 0; - } else { - nextIndex = currentIndex + 1; - } - break; - } - if (currentIndex !== nextIndex) { - this.swapSelected(this.selectedNode, visibleOptions[nextIndex]); - } - } - swapSelected(currentNode, newNode) { - currentNode.setAttribute("tabindex", "-1"); - newNode.setAttribute("tabindex", "0"); - this.selectedNode = newNode; - if (isScrollable(this)) { - maintainScrollVisibility(this.selectedNode, this); - } - if (!isElementInView(newNode)) { - newNode.scrollIntoView({ behavior: "smooth", block: "nearest" }); - } - this.triggers.forEach( - (node) => node.setAttribute("aria-activedescendant", newNode.id) - ); - } - }; - var ComboboxOption = class extends HTMLElement { - connectedCallback() { - this.setAttribute("role", "option"); - this.setAttribute("tabindex", "-1"); - this.setAttribute("id", generateId("option")); - this.options = Array.from( - this.parentElement.querySelectorAll("smileid-combobox-option") - ); - this.addEventListener("click", this.select); - } - disconnectedCallback() { - this.removeEventListener("click", this.select); - } - get value() { - return this.getAttribute("value"); - } - get label() { - return this.getAttribute("label"); - } - select() { - const selectedOption = this.options.find( - (node) => node.getAttribute("aria-selected") - ); - if (selectedOption) { - selectedOption.removeAttribute("aria-selected"); - } - this.setAttribute("aria-selected", true); - this.dispatchEvent( - new CustomEvent("Combobox::Option::Select", { - detail: { - label: this.label, - value: this.value, - id: this.getAttribute("id") - } - }) - ); - } - }; - var Combobox_default = { - Root: ComboboxRoot, - Trigger: ComboboxTrigger, - List: ComboboxListbox, - Option: ComboboxOption - }; - - // package.json - var version = "v1.2.3"; - - // src/js/ekyc.js - (function eKYC() { - "use strict"; - const endpoints = { - development: "https://devapi.smileidentity.com/v1", - sandbox: "https://testapi.smileidentity.com/v1", - live: "https://api.smileidentity.com/v1", - production: "https://api.smileidentity.com/v1" - }; - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); - window.customElements.define("end-user-consent", ConsentScreen_default); - window.customElements.define("totp-consent-app", TotpConsentApp_default); - window.customElements.define("smileid-combobox", Combobox_default.Root); - window.customElements.define("smileid-combobox-trigger", Combobox_default.Trigger); - window.customElements.define("smileid-combobox-listbox", Combobox_default.List); - window.customElements.define("smileid-combobox-option", Combobox_default.Option); - const pages = []; - let activeScreen; - let config; - let consent_information; - let EndUserConsent2; - let id_info; - let partner_params; - let ngBankCodes; - let productConstraints; - const LoadingScreen = document.querySelector("#loading-screen"); - const SelectIDType = document.querySelector("#select-id-type"); - const IDInfoForm = document.querySelector("#id-info"); - const CompleteScreen = document.querySelector("#complete-screen"); - let disableBackOnFirstScreen = false; - const CloseIframeButtons = document.querySelectorAll(".close-iframe"); - function postData2(url = "", data = {}) { - return fetch(url, { - method: "POST", - mode: "cors", - cache: "no-cache", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - body: JSON.stringify(data) - }); - } - async function getProductConstraints() { - try { - const productsConfigPayload = { - partner_id: config.partner_details.partner_id, - token: config.token, - partner_params - }; - const productsConfigUrl = `${endpoints[config.environment]}/products_config`; - const productsConfigPromise = postData2( - productsConfigUrl, - productsConfigPayload - ); - const servicesPromise = fetch( - `${endpoints[config.environment]}/services` - ); - const [productsConfigResponse, servicesResponse] = await Promise.all([ - productsConfigPromise, - servicesPromise - ]); - if (productsConfigResponse.ok && servicesResponse.ok) { - const partnerConstraints = await productsConfigResponse.json(); - const generalConstraints = await servicesResponse.json(); - ngBankCodes = generalConstraints.bank_codes; - const previewBvnMfa = config.previewBVNMFA; - if (previewBvnMfa) { - generalConstraints.hosted_web.enhanced_kyc.NG.id_types.BVN_MFA = { - id_number_regex: "^[0-9]{11}$", - label: "Bank Verification Number (with OTP)", - required_fields: [ - "country", - "id_type", - "session_id", - "user_id", - "job_id" - ], - test_data: "00000000000" - }; - } - return { - partnerConstraints, - generalConstraints: generalConstraints.hosted_web.enhanced_kyc - }; - } - throw new Error("Failed to get supported ID types"); - } catch (e) { - throw new Error("Failed to get supported ID types", { cause: e }); - } - } - window.addEventListener( - "message", - async (event) => { - if (event.data && event.data.includes("SmileIdentity::Configuration")) { - config = JSON.parse(event.data); - activeScreen = LoadingScreen; - getPartnerParams(); - const { partnerConstraints, generalConstraints } = await getProductConstraints(); - productConstraints = generalConstraints; - initializeSession(generalConstraints, partnerConstraints); - } - }, - false - ); - function setInitialScreen(partnerConstraints) { - const { country: selectedCountry, id_type: selectedIDType } = id_info; - const selectedIdRequiresConsent = partnerConstraints.consentRequired[selectedCountry] ? partnerConstraints.consentRequired[selectedCountry].includes( - selectedIDType - ) : false; - if (selectedIdRequiresConsent || config.consent_required || config.demo_mode) { - const IDRequiresConsent = selectedIdRequiresConsent || config.consent_required && config.consent_required[selectedCountry] && config.consent_required[selectedCountry].includes(selectedIDType); - if (IDRequiresConsent || config.demo_mode) { - customizeConsentScreen(); - setActiveScreen(EndUserConsent2); - } else { - setActiveScreen(IDInfoForm); - } - } else { - hideIdFromBackExit(); - setActiveScreen(IDInfoForm); - } - customizeForm(); - } - function hideIdFromBackExit() { - if (!disableBackOnFirstScreen) - return; - IDInfoForm.querySelector(".nav").classList.add("justify-right"); - IDInfoForm.querySelector(".back-wrapper").style.display = "none"; - } - function initializeSession(generalConstraints, partnerConstraints) { - const supportedCountries = Object.keys(generalConstraints).map((countryCode) => ({ - code: countryCode, - name: generalConstraints[countryCode].name - })).sort((a, b) => { - if (a.name < b.name) { - return -1; - } - if (a.name > b.name) { - return 1; - } - return 0; - }).map((item) => item.code); - let validCountries = []; - if (config.id_selection) { - const selectedCountryList = Object.keys(config.id_selection); - validCountries = supportedCountries.filter( - (value) => selectedCountryList.includes(value) - ); - if (validCountries.length === 1) { - const selectedCountry = validCountries[0]; - id_info = { - country: validCountries[0] - }; - const idTypes = config.id_selection[selectedCountry]; - if (idTypes.length === 1 || typeof idTypes === "string") { - id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; - disableBackOnFirstScreen = true; - setInitialScreen(partnerConstraints); - } - } - } else { - validCountries = Object.keys(partnerConstraints.idSelection.enhanced_kyc); - } - if (!id_info || !id_info.id_type) { - const selectCountry = SelectIDType.querySelector("#country"); - const selectIDType = SelectIDType.querySelector("#id_type"); - const hostedWebConfigForm = document.querySelector( - 'form[name="hosted-web-config"]' - ); - selectCountry.disabled = false; - setActiveScreen(SelectIDType); - const loadIdTypes = (countryCode) => { - if (countryCode) { - const validIDTypes = config.id_selection ? config.id_selection : partnerConstraints.idSelection.enhanced_kyc; - const constrainedIDTypes = Object.keys( - generalConstraints[countryCode].id_types - ); - const selectedIDTypes = validIDTypes[countryCode].filter( - (value) => constrainedIDTypes.includes(value) - ); - selectIDType.innerHTML = ""; - const initialOption = document.createElement("option"); - initialOption.setAttribute("value", ""); - initialOption.textContent = "--Please Select--"; - selectIDType.appendChild(initialOption); - selectedIDTypes.forEach((IDType) => { - const option = document.createElement("option"); - option.setAttribute("value", IDType); - option.textContent = generalConstraints[countryCode].id_types[IDType].label; - selectIDType.appendChild(option); - }); - selectIDType.disabled = false; - } else { - selectIDType.innerHTML = ""; - const option = document.createElement("option"); - option.disabled = true; - option.setAttribute("value", ""); - option.textContent = "--Select Country First--"; - selectIDType.appendChild(option); - } - }; - selectCountry.addEventListener("change", (e) => { - loadIdTypes(e.target.value); - }); - validCountries.forEach((country) => { - const countryObject = generalConstraints[country]; - if (countryObject) { - const option = document.createElement("option"); - option.setAttribute("value", country); - option.textContent = countryObject.name; - if (id_info && id_info.country && country === id_info.country) { - option.setAttribute("selected", true); - selectCountry.value = country; - selectCountry.disabled = true; - loadIdTypes(country); - } - selectCountry.appendChild(option); - } - }); - hostedWebConfigForm.addEventListener("submit", (e) => { - e.preventDefault(); - const selectedCountry = selectCountry.value; - const selectedIDType = selectIDType.value; - id_info = { - country: selectedCountry, - id_type: selectedIDType - }; - setInitialScreen(partnerConstraints); - }); - } - } - function initiateDemoMode() { - const demoTips = document.querySelectorAll(".demo-tip"); - Array.prototype.forEach.call(demoTips, (tip) => { - tip.hidden = false; - }); - const script = document.createElement("script"); - script.type = "text/javascript"; - script.src = "js/demo-ekyc.min.js"; - document.body.appendChild(script); - } - IDInfoForm.querySelector("#submitForm").addEventListener( - "click", - (event) => { - handleFormSubmit(event); - }, - false - ); - IDInfoForm.querySelector("#back-button").addEventListener( - "click", - (event) => { - event.preventDefault(); - const page = pages.pop(); - setActiveScreen(page); - }, - false - ); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - closeWindow(true); - }, - false - ); - }); - function customizeConsentScreen() { - const partnerDetails = config.partner_details; - const main = document.querySelector("main"); - EndUserConsent2 = document.querySelector("end-user-consent"); - if (EndUserConsent2) { - main.removeChild(EndUserConsent2); - } - EndUserConsent2 = document.createElement("end-user-consent"); - EndUserConsent2.setAttribute( - "base-url", - endpoints[config.environment] || config.environment - ); - EndUserConsent2.setAttribute("country", id_info.country); - EndUserConsent2.setAttribute( - "id-regex", - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ); - EndUserConsent2.setAttribute("id-type", id_info.id_type); - EndUserConsent2.setAttribute( - "id-type-label", - productConstraints[id_info.country].id_types[id_info.id_type].label - ); - EndUserConsent2.setAttribute("partner-id", partnerDetails.partner_id); - EndUserConsent2.setAttribute("partner-name", partnerDetails.name); - EndUserConsent2.setAttribute("partner-logo", partnerDetails.logo_url); - EndUserConsent2.setAttribute("policy-url", partnerDetails.policy_url); - EndUserConsent2.setAttribute("theme-color", partnerDetails.theme_color); - EndUserConsent2.setAttribute("token", config.token); - if (disableBackOnFirstScreen) { - EndUserConsent2.setAttribute("hide-back-to-host", true); - } - if (config.demo_mode) { - EndUserConsent2.setAttribute("demo-mode", config.demo_mode); - localStorage.setItem( - "SmileIdentityConstraints", - JSON.stringify(productConstraints, null, 2) - ); - initiateDemoMode(); - } - EndUserConsent2.addEventListener( - "SmileIdentity::Exit", - () => { - setActiveScreen(SelectIDType); - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentGranted", - (event) => { - consent_information = event.detail; - if (consent_information.consented.personal_details) { - id_info.consent_information = consent_information; - setActiveScreen(IDInfoForm); - } - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentGranted::TOTP", - (event) => { - consent_information = event.detail; - if (consent_information.consented.personal_details) { - id_info.id_number = consent_information.id_number; - id_info.session_id = consent_information.session_id; - id_info.consent_information = consent_information; - handleFormSubmit(); - } - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentDenied", - () => { - referenceWindow.postMessage("SmileIdentity::ConsentDenied", "*"); - closeWindow(); - }, - false - ); - EndUserConsent2.addEventListener( - "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated", - (event) => { - referenceWindow.postMessage(event.detail, "*"); - closeWindow(); - }, - false - ); - main.appendChild(EndUserConsent2); - } - function customizeForm() { - setGuideTextForIDType(); - setFormInputs(); - } - function setGuideTextForIDType() { - const label = document.querySelector('[for="id_number"]'); - const input = document.querySelector("#id_number"); - label.innerHTML = productConstraints[id_info.country].id_types[id_info.id_type].label; - input.setAttribute( - "placeholder", - productConstraints[id_info.country].id_types[id_info.id_type].test_data - ); - input.setAttribute( - "pattern", - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ); - } - function loadBankCodes(bankCodes, placeholderElement) { - const autocomplete = document.createElement("smileid-combobox"); - autocomplete.setAttribute("id", "bank_code"); - autocomplete.innerHTML = ` - - - - - ${bankCodes.map( - (bank) => ` - - ${bank.name} - - ` - ).join("\n")} - - `; - placeholderElement.replaceWith(autocomplete); - autocomplete.addEventListener("change", (e) => { - id_info.bank_code = e.detail ? e.detail.value : ""; - }); - return autocomplete; - } - function setFormInputs() { - const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; - const showIdNumber = requiredFields.some( - (fieldName) => fieldName.includes("id_number") - ); - if (showIdNumber) { - const IdNumber = IDInfoForm.querySelector("div#id-number"); - IdNumber.hidden = false; - } - const showNames = requiredFields.some( - (fieldName) => fieldName.includes("name") - ); - if (showNames) { - const Names = IDInfoForm.querySelector("fieldset#names"); - Names.hidden = false; - } - const showDOB = requiredFields.some( - (fieldName) => fieldName.includes("dob") - ); - if (showDOB) { - const DOB = IDInfoForm.querySelector("fieldset#dob"); - DOB.hidden = false; - } - const showCitizenship = requiredFields.some( - (fieldName) => fieldName.includes("citizenship") - ); - if (showCitizenship) { - const Citizenship = IDInfoForm.querySelector("fieldset#citizenships"); - Citizenship.hidden = false; - } - const showBankCode = requiredFields.some( - (fieldName) => fieldName.includes("bank_code") - ); - if (showBankCode) { - const BankCode = IDInfoForm.querySelector("fieldset#bank-code"); - loadBankCodes(ngBankCodes, BankCode.querySelector("#bank_code")); - BankCode.hidden = false; - } - } - function getPartnerParams() { - function parseJWT(token) { - const base64Url = token.split(".")[1]; - const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); - const jsonPayload = decodeURIComponent( - atob(base64).split("").map(function(c) { - return `%${c.charCodeAt(0).toString(16)}`; - }).join("") - ); - return JSON.parse(jsonPayload); - } - const { partner_params: partnerParams } = parseJWT(config.token); - partner_params = { ...partnerParams, ...config.partner_params || {} }; - } - function setActiveScreen(node) { - activeScreen.hidden = true; - node.hidden = false; - pages.push(activeScreen); - activeScreen = node; - } - function resetForm() { - const invalidElements = IDInfoForm.querySelectorAll("[aria-invalid]"); - invalidElements.forEach((el) => el.removeAttribute("aria-invalid")); - const validationMessages = document.querySelectorAll(".validation-message"); - validationMessages.forEach((el) => el.remove()); - } - function validateInputs(payload) { - const validationConstraints = {}; - const requiredFields = productConstraints[id_info.country].id_types[id_info.id_type].required_fields; - const showIdNumber = requiredFields.some( - (fieldName) => fieldName.includes("id_number") - ); - if (showIdNumber) { - validationConstraints.id_number = { - presence: { - allowEmpty: false, - message: "is required" - }, - format: new RegExp( - productConstraints[id_info.country].id_types[id_info.id_type].id_number_regex - ) - }; - } - const showNames = requiredFields.some( - (fieldName) => fieldName.includes("name") - ); - if (showNames) { - validationConstraints.first_name = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.last_name = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const showDOB = requiredFields.some( - (fieldName) => fieldName.includes("dob") - ); - if (showDOB) { - validationConstraints.day = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.month = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - validationConstraints.year = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const showCitizenship = requiredFields.some( - (fieldName) => fieldName.includes("citizenship") - ); - if (showCitizenship) { - validationConstraints.citizenship = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const showBankCode = requiredFields.some( - (fieldName) => fieldName.includes("bank_code") - ); - if (showBankCode) { - validationConstraints.bank_code = { - presence: { - allowEmpty: false, - message: "is required" - } - }; - } - const validation = (0, import_validate2.default)(payload, validationConstraints); - if (validation) { - handleValidationErrors(validation); - const submitButton = IDInfoForm.querySelector('[type="button"]'); - submitButton.removeAttribute("disabled"); - } - return validation; - } - function handleValidationErrors(errors) { - const fields = Object.keys(errors); - fields.forEach((field) => { - const input = IDInfoForm.querySelector(`#${field}`); - input.setAttribute("aria-invalid", "true"); - input.setAttribute("aria-describedby", `${field}-hint`); - const errorDiv = document.createElement("div"); - errorDiv.setAttribute("id", `${field}-hint`); - errorDiv.setAttribute("class", "validation-message"); - errorDiv.textContent = errors[field][0]; - input.insertAdjacentElement("afterend", errorDiv); - }); - } - async function handleFormSubmit(event) { - if (event) { - event.preventDefault(); - resetForm(); - } - const form = IDInfoForm.querySelector("form"); - const formData = new FormData(form); - const payload = { ...id_info, ...Object.fromEntries(formData.entries()) }; - const isInvalid = validateInputs(payload); - if (isInvalid) { - return; - } - id_info = { - dob: `${payload.year}-${payload.month}-${payload.day}`, - entered: true, - ...payload, - ...id_info - }; - try { - if (event && event.target) - event.target.disabled = true; - await submitIdInfoForm(); - if (event && event.target) - event.target.disabled = false; - complete(); - } catch (error) { - if (event && event.target) - event.target.disabled = false; - displayErrorMessage("Something went wrong"); - console.error( - `SmileIdentity - ${error.name || error.message}: ${error.cause}` - ); - } - } - function displayErrorMessage(message) { - const p = document.createElement("p"); - p.textContent = message; - p.classList.add("validation-message"); - p.style.fontSize = "1.5rem"; - p.style.textAlign = "center"; - const main = document.querySelector("main"); - main.prepend(p); - } - async function submitIdInfoForm() { - const { year, month, day, ...data } = id_info; - const dob = year && month && day ? `${year}-${month}-${day}` : void 0; - const { - callback_url, - token, - partner_details: { partner_id } - } = config; - const payload = { - ...data, - dob, - partner_id, - callback_url, - token, - source_sdk: config.sdk || "hosted_web", - source_sdk_version: config.sdk_version || version, - partner_params: { - ...partner_params, - job_type: 5 - } - }; - const URL = `${endpoints[config.environment]}/async_id_verification`; - const response = await postData2(URL, payload); - const json = await response.json(); - if (json.error) - throw new Error(json.error); - } - function complete() { - const countryName = productConstraints[id_info.country].name; - const idTypeName = productConstraints[id_info.country].id_types[id_info.id_type].label; - const thankYouMessage = CompleteScreen.querySelector("#thank-you-message"); - thankYouMessage.textContent = `We will process your ${countryName} - ${idTypeName} information to verify your identity`; - setActiveScreen(CompleteScreen); - handleSuccess(); - window.setTimeout(closeWindow, 2e3); - } - function closeWindow(userTriggered) { - const message = userTriggered ? "SmileIdentity::Close" : "SmileIdentity::Close::System"; - referenceWindow.postMessage(message, "*"); - } - function handleSuccess() { - referenceWindow.postMessage("SmileIdentity::Success", "*"); - } - })(); -})(); -/*! Bundled license information: - -validate.js/validate.js: - (*! - * validate.js 0.13.1 - * - * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp - * Validate.js may be freely distributed under the MIT license. - * For all details and documentation: - * http://validatejs.org/ - *) -*/ diff --git a/packages/embed/build/js/enhanced-document-verification.min.js b/packages/embed/build/js/enhanced-document-verification.min.js deleted file mode 100644 index faa10499..00000000 --- a/packages/embed/build/js/enhanced-document-verification.min.js +++ /dev/null @@ -1,4838 +0,0 @@ -(() => { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] - }) : x)(function(x) { - if (typeof require !== "undefined") - return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); - }); - var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod - )); - - // ../../node_modules/jszip/dist/jszip.min.js - var require_jszip_min = __commonJS({ - "../../node_modules/jszip/dist/jszip.min.js"(exports, module) { - !function(e) { - if ("object" == typeof exports && "undefined" != typeof module) - module.exports = e(); - else if ("function" == typeof define && define.amd) - define([], e); - else { - ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e(); - } - }(function() { - return function s(a, o, h) { - function u(r, e2) { - if (!o[r]) { - if (!a[r]) { - var t = "function" == typeof __require && __require; - if (!e2 && t) - return t(r, true); - if (l) - return l(r, true); - var n = new Error("Cannot find module '" + r + "'"); - throw n.code = "MODULE_NOT_FOUND", n; - } - var i = o[r] = { exports: {} }; - a[r][0].call(i.exports, function(e3) { - var t2 = a[r][1][e3]; - return u(t2 || e3); - }, i, i.exports, s, a, o, h); - } - return o[r].exports; - } - for (var l = "function" == typeof __require && __require, e = 0; e < h.length; e++) - u(h[e]); - return u; - }({ 1: [function(e, t, r) { - "use strict"; - var d = e("./utils"), c = e("./support"), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - r.encode = function(e2) { - for (var t2, r2, n, i, s, a, o, h = [], u = 0, l = e2.length, f = l, c2 = "string" !== d.getTypeOf(e2); u < e2.length; ) - f = l - u, n = c2 ? (t2 = e2[u++], r2 = u < l ? e2[u++] : 0, u < l ? e2[u++] : 0) : (t2 = e2.charCodeAt(u++), r2 = u < l ? e2.charCodeAt(u++) : 0, u < l ? e2.charCodeAt(u++) : 0), i = t2 >> 2, s = (3 & t2) << 4 | r2 >> 4, a = 1 < f ? (15 & r2) << 2 | n >> 6 : 64, o = 2 < f ? 63 & n : 64, h.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)); - return h.join(""); - }, r.decode = function(e2) { - var t2, r2, n, i, s, a, o = 0, h = 0, u = "data:"; - if (e2.substr(0, u.length) === u) - throw new Error("Invalid base64 input, it looks like a data url."); - var l, f = 3 * (e2 = e2.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; - if (e2.charAt(e2.length - 1) === p.charAt(64) && f--, e2.charAt(e2.length - 2) === p.charAt(64) && f--, f % 1 != 0) - throw new Error("Invalid base64 input, bad content length."); - for (l = c.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e2.length; ) - t2 = p.indexOf(e2.charAt(o++)) << 2 | (i = p.indexOf(e2.charAt(o++))) >> 4, r2 = (15 & i) << 4 | (s = p.indexOf(e2.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e2.charAt(o++))), l[h++] = t2, 64 !== s && (l[h++] = r2), 64 !== a && (l[h++] = n); - return l; - }; - }, { "./support": 30, "./utils": 32 }], 2: [function(e, t, r) { - "use strict"; - var n = e("./external"), i = e("./stream/DataWorker"), s = e("./stream/Crc32Probe"), a = e("./stream/DataLengthProbe"); - function o(e2, t2, r2, n2, i2) { - this.compressedSize = e2, this.uncompressedSize = t2, this.crc32 = r2, this.compression = n2, this.compressedContent = i2; - } - o.prototype = { getContentWorker: function() { - var e2 = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), t2 = this; - return e2.on("end", function() { - if (this.streamInfo.data_length !== t2.uncompressedSize) - throw new Error("Bug : uncompressed data size mismatch"); - }), e2; - }, getCompressedWorker: function() { - return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); - } }, o.createWorkerFrom = function(e2, t2, r2) { - return e2.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t2.compressWorker(r2)).pipe(new a("compressedSize")).withStreamInfo("compression", t2); - }, t.exports = o; - }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e, t, r) { - "use strict"; - var n = e("./stream/GenericWorker"); - r.STORE = { magic: "\0\0", compressWorker: function() { - return new n("STORE compression"); - }, uncompressWorker: function() { - return new n("STORE decompression"); - } }, r.DEFLATE = e("./flate"); - }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e, t, r) { - "use strict"; - var n = e("./utils"); - var o = function() { - for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { - e2 = r2; - for (var n2 = 0; n2 < 8; n2++) - e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; - t2[r2] = e2; - } - return t2; - }(); - t.exports = function(e2, t2) { - return void 0 !== e2 && e2.length ? "string" !== n.getTypeOf(e2) ? function(e3, t3, r2, n2) { - var i = o, s = n2 + r2; - e3 ^= -1; - for (var a = n2; a < s; a++) - e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3[a])]; - return -1 ^ e3; - }(0 | t2, e2, e2.length, 0) : function(e3, t3, r2, n2) { - var i = o, s = n2 + r2; - e3 ^= -1; - for (var a = n2; a < s; a++) - e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3.charCodeAt(a))]; - return -1 ^ e3; - }(0 | t2, e2, e2.length, 0) : 0; - }; - }, { "./utils": 32 }], 5: [function(e, t, r) { - "use strict"; - r.base64 = false, r.binary = false, r.dir = false, r.createFolders = true, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null; - }, {}], 6: [function(e, t, r) { - "use strict"; - var n = null; - n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n }; - }, { lie: 37 }], 7: [function(e, t, r) { - "use strict"; - var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i = e("pako"), s = e("./utils"), a = e("./stream/GenericWorker"), o = n ? "uint8array" : "array"; - function h(e2, t2) { - a.call(this, "FlateWorker/" + e2), this._pako = null, this._pakoAction = e2, this._pakoOptions = t2, this.meta = {}; - } - r.magic = "\b\0", s.inherits(h, a), h.prototype.processChunk = function(e2) { - this.meta = e2.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e2.data), false); - }, h.prototype.flush = function() { - a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); - }, h.prototype.cleanUp = function() { - a.prototype.cleanUp.call(this), this._pako = null; - }, h.prototype._createPako = function() { - this._pako = new i[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); - var t2 = this; - this._pako.onData = function(e2) { - t2.push({ data: e2, meta: t2.meta }); - }; - }, r.compressWorker = function(e2) { - return new h("Deflate", e2); - }, r.uncompressWorker = function() { - return new h("Inflate", {}); - }; - }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e, t, r) { - "use strict"; - function A(e2, t2) { - var r2, n2 = ""; - for (r2 = 0; r2 < t2; r2++) - n2 += String.fromCharCode(255 & e2), e2 >>>= 8; - return n2; - } - function n(e2, t2, r2, n2, i2, s2) { - var a, o, h = e2.file, u = e2.compression, l = s2 !== O.utf8encode, f = I.transformTo("string", s2(h.name)), c = I.transformTo("string", O.utf8encode(h.name)), d = h.comment, p = I.transformTo("string", s2(d)), m = I.transformTo("string", O.utf8encode(d)), _ = c.length !== h.name.length, g = m.length !== d.length, b = "", v = "", y = "", w = h.dir, k = h.date, x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; - t2 && !r2 || (x.crc32 = e2.crc32, x.compressedSize = e2.compressedSize, x.uncompressedSize = e2.uncompressedSize); - var S = 0; - t2 && (S |= 8), l || !_ && !g || (S |= 2048); - var z = 0, C = 0; - w && (z |= 16), "UNIX" === i2 ? (C = 798, z |= function(e3, t3) { - var r3 = e3; - return e3 || (r3 = t3 ? 16893 : 33204), (65535 & r3) << 16; - }(h.unixPermissions, w)) : (C = 20, z |= function(e3) { - return 63 & (e3 || 0); - }(h.dosPermissions)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v = A(1, 1) + A(B(f), 4) + c, b += "up" + A(v.length, 2) + v), g && (y = A(1, 1) + A(B(p), 4) + m, b += "uc" + A(y.length, 2) + y); - var E = ""; - return E += "\n\0", E += A(S, 2), E += u.magic, E += A(a, 2), E += A(o, 2), E += A(x.crc32, 4), E += A(x.compressedSize, 4), E += A(x.uncompressedSize, 4), E += A(f.length, 2), E += A(b.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + E + f + b, dirRecord: R.CENTRAL_FILE_HEADER + A(C, 2) + E + A(p.length, 2) + "\0\0\0\0" + A(z, 4) + A(n2, 4) + f + b + p }; - } - var I = e("../utils"), i = e("../stream/GenericWorker"), O = e("../utf8"), B = e("../crc32"), R = e("../signature"); - function s(e2, t2, r2, n2) { - i.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t2, this.zipPlatform = r2, this.encodeFileName = n2, this.streamFiles = e2, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; - } - I.inherits(s, i), s.prototype.push = function(e2) { - var t2 = e2.meta.percent || 0, r2 = this.entriesCount, n2 = this._sources.length; - this.accumulate ? this.contentBuffer.push(e2) : (this.bytesWritten += e2.data.length, i.prototype.push.call(this, { data: e2.data, meta: { currentFile: this.currentFile, percent: r2 ? (t2 + 100 * (r2 - n2 - 1)) / r2 : 100 } })); - }, s.prototype.openedSource = function(e2) { - this.currentSourceOffset = this.bytesWritten, this.currentFile = e2.file.name; - var t2 = this.streamFiles && !e2.file.dir; - if (t2) { - var r2 = n(e2, t2, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - this.push({ data: r2.fileRecord, meta: { percent: 0 } }); - } else - this.accumulate = true; - }, s.prototype.closedSource = function(e2) { - this.accumulate = false; - var t2 = this.streamFiles && !e2.file.dir, r2 = n(e2, t2, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - if (this.dirRecords.push(r2.dirRecord), t2) - this.push({ data: function(e3) { - return R.DATA_DESCRIPTOR + A(e3.crc32, 4) + A(e3.compressedSize, 4) + A(e3.uncompressedSize, 4); - }(e2), meta: { percent: 100 } }); - else - for (this.push({ data: r2.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) - this.push(this.contentBuffer.shift()); - this.currentFile = null; - }, s.prototype.flush = function() { - for (var e2 = this.bytesWritten, t2 = 0; t2 < this.dirRecords.length; t2++) - this.push({ data: this.dirRecords[t2], meta: { percent: 100 } }); - var r2 = this.bytesWritten - e2, n2 = function(e3, t3, r3, n3, i2) { - var s2 = I.transformTo("string", i2(n3)); - return R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A(e3, 2) + A(e3, 2) + A(t3, 4) + A(r3, 4) + A(s2.length, 2) + s2; - }(this.dirRecords.length, r2, e2, this.zipComment, this.encodeFileName); - this.push({ data: n2, meta: { percent: 100 } }); - }, s.prototype.prepareNextSource = function() { - this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); - }, s.prototype.registerPrevious = function(e2) { - this._sources.push(e2); - var t2 = this; - return e2.on("data", function(e3) { - t2.processChunk(e3); - }), e2.on("end", function() { - t2.closedSource(t2.previous.streamInfo), t2._sources.length ? t2.prepareNextSource() : t2.end(); - }), e2.on("error", function(e3) { - t2.error(e3); - }), this; - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true)); - }, s.prototype.error = function(e2) { - var t2 = this._sources; - if (!i.prototype.error.call(this, e2)) - return false; - for (var r2 = 0; r2 < t2.length; r2++) - try { - t2[r2].error(e2); - } catch (e3) { - } - return true; - }, s.prototype.lock = function() { - i.prototype.lock.call(this); - for (var e2 = this._sources, t2 = 0; t2 < e2.length; t2++) - e2[t2].lock(); - }, t.exports = s; - }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e, t, r) { - "use strict"; - var u = e("../compressions"), n = e("./ZipFileWorker"); - r.generateWorker = function(e2, a, t2) { - var o = new n(a.streamFiles, t2, a.platform, a.encodeFileName), h = 0; - try { - e2.forEach(function(e3, t3) { - h++; - var r2 = function(e4, t4) { - var r3 = e4 || t4, n3 = u[r3]; - if (!n3) - throw new Error(r3 + " is not a valid compression method !"); - return n3; - }(t3.options.compression, a.compression), n2 = t3.options.compressionOptions || a.compressionOptions || {}, i = t3.dir, s = t3.date; - t3._compressWorker(r2, n2).withStreamInfo("file", { name: e3, dir: i, date: s, comment: t3.comment || "", unixPermissions: t3.unixPermissions, dosPermissions: t3.dosPermissions }).pipe(o); - }), o.entriesCount = h; - } catch (e3) { - o.error(e3); - } - return o; - }; - }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e, t, r) { - "use strict"; - function n() { - if (!(this instanceof n)) - return new n(); - if (arguments.length) - throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); - this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { - var e2 = new n(); - for (var t2 in this) - "function" != typeof this[t2] && (e2[t2] = this[t2]); - return e2; - }; - } - (n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.10.1", n.loadAsync = function(e2, t2) { - return new n().loadAsync(e2, t2); - }, n.external = e("./external"), t.exports = n; - }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e, t, r) { - "use strict"; - var u = e("./utils"), i = e("./external"), n = e("./utf8"), s = e("./zipEntries"), a = e("./stream/Crc32Probe"), l = e("./nodejsUtils"); - function f(n2) { - return new i.Promise(function(e2, t2) { - var r2 = n2.decompressed.getContentWorker().pipe(new a()); - r2.on("error", function(e3) { - t2(e3); - }).on("end", function() { - r2.streamInfo.crc32 !== n2.decompressed.crc32 ? t2(new Error("Corrupted zip : CRC32 mismatch")) : e2(); - }).resume(); - }); - } - t.exports = function(e2, o) { - var h = this; - return o = u.extend(o || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n.utf8decode }), l.isNode && l.isStream(e2) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u.prepareContent("the loaded zip file", e2, true, o.optimizedBinaryString, o.base64).then(function(e3) { - var t2 = new s(o); - return t2.load(e3), t2; - }).then(function(e3) { - var t2 = [i.Promise.resolve(e3)], r2 = e3.files; - if (o.checkCRC32) - for (var n2 = 0; n2 < r2.length; n2++) - t2.push(f(r2[n2])); - return i.Promise.all(t2); - }).then(function(e3) { - for (var t2 = e3.shift(), r2 = t2.files, n2 = 0; n2 < r2.length; n2++) { - var i2 = r2[n2], s2 = i2.fileNameStr, a2 = u.resolve(i2.fileNameStr); - h.file(a2, i2.decompressed, { binary: true, optimizedBinaryString: true, date: i2.date, dir: i2.dir, comment: i2.fileCommentStr.length ? i2.fileCommentStr : null, unixPermissions: i2.unixPermissions, dosPermissions: i2.dosPermissions, createFolders: o.createFolders }), i2.dir || (h.file(a2).unsafeOriginalName = s2); - } - return t2.zipComment.length && (h.comment = t2.zipComment), h; - }); - }; - }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("../stream/GenericWorker"); - function s(e2, t2) { - i.call(this, "Nodejs stream input adapter for " + e2), this._upstreamEnded = false, this._bindStream(t2); - } - n.inherits(s, i), s.prototype._bindStream = function(e2) { - var t2 = this; - (this._stream = e2).pause(), e2.on("data", function(e3) { - t2.push({ data: e3, meta: { percent: 0 } }); - }).on("error", function(e3) { - t2.isPaused ? this.generatedError = e3 : t2.error(e3); - }).on("end", function() { - t2.isPaused ? t2._upstreamEnded = true : t2.end(); - }); - }, s.prototype.pause = function() { - return !!i.prototype.pause.call(this) && (this._stream.pause(), true); - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); - }, t.exports = s; - }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e, t, r) { - "use strict"; - var i = e("readable-stream").Readable; - function n(e2, t2, r2) { - i.call(this, t2), this._helper = e2; - var n2 = this; - e2.on("data", function(e3, t3) { - n2.push(e3) || n2._helper.pause(), r2 && r2(t3); - }).on("error", function(e3) { - n2.emit("error", e3); - }).on("end", function() { - n2.push(null); - }); - } - e("../utils").inherits(n, i), n.prototype._read = function() { - this._helper.resume(); - }, t.exports = n; - }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e, t, r) { - "use strict"; - t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e2, t2) { - if (Buffer.from && Buffer.from !== Uint8Array.from) - return Buffer.from(e2, t2); - if ("number" == typeof e2) - throw new Error('The "data" argument must not be a number'); - return new Buffer(e2, t2); - }, allocBuffer: function(e2) { - if (Buffer.alloc) - return Buffer.alloc(e2); - var t2 = new Buffer(e2); - return t2.fill(0), t2; - }, isBuffer: function(e2) { - return Buffer.isBuffer(e2); - }, isStream: function(e2) { - return e2 && "function" == typeof e2.on && "function" == typeof e2.pause && "function" == typeof e2.resume; - } }; - }, {}], 15: [function(e, t, r) { - "use strict"; - function s(e2, t2, r2) { - var n2, i2 = u.getTypeOf(t2), s2 = u.extend(r2 || {}, f); - s2.date = s2.date || /* @__PURE__ */ new Date(), null !== s2.compression && (s2.compression = s2.compression.toUpperCase()), "string" == typeof s2.unixPermissions && (s2.unixPermissions = parseInt(s2.unixPermissions, 8)), s2.unixPermissions && 16384 & s2.unixPermissions && (s2.dir = true), s2.dosPermissions && 16 & s2.dosPermissions && (s2.dir = true), s2.dir && (e2 = g(e2)), s2.createFolders && (n2 = _(e2)) && b.call(this, n2, true); - var a2 = "string" === i2 && false === s2.binary && false === s2.base64; - r2 && void 0 !== r2.binary || (s2.binary = !a2), (t2 instanceof c && 0 === t2.uncompressedSize || s2.dir || !t2 || 0 === t2.length) && (s2.base64 = false, s2.binary = true, t2 = "", s2.compression = "STORE", i2 = "string"); - var o2 = null; - o2 = t2 instanceof c || t2 instanceof l ? t2 : p.isNode && p.isStream(t2) ? new m(e2, t2) : u.prepareContent(e2, t2, s2.binary, s2.optimizedBinaryString, s2.base64); - var h2 = new d(e2, o2, s2); - this.files[e2] = h2; - } - var i = e("./utf8"), u = e("./utils"), l = e("./stream/GenericWorker"), a = e("./stream/StreamHelper"), f = e("./defaults"), c = e("./compressedObject"), d = e("./zipObject"), o = e("./generate"), p = e("./nodejsUtils"), m = e("./nodejs/NodejsStreamInputAdapter"), _ = function(e2) { - "/" === e2.slice(-1) && (e2 = e2.substring(0, e2.length - 1)); - var t2 = e2.lastIndexOf("/"); - return 0 < t2 ? e2.substring(0, t2) : ""; - }, g = function(e2) { - return "/" !== e2.slice(-1) && (e2 += "/"), e2; - }, b = function(e2, t2) { - return t2 = void 0 !== t2 ? t2 : f.createFolders, e2 = g(e2), this.files[e2] || s.call(this, e2, null, { dir: true, createFolders: t2 }), this.files[e2]; - }; - function h(e2) { - return "[object RegExp]" === Object.prototype.toString.call(e2); - } - var n = { load: function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, forEach: function(e2) { - var t2, r2, n2; - for (t2 in this.files) - n2 = this.files[t2], (r2 = t2.slice(this.root.length, t2.length)) && t2.slice(0, this.root.length) === this.root && e2(r2, n2); - }, filter: function(r2) { - var n2 = []; - return this.forEach(function(e2, t2) { - r2(e2, t2) && n2.push(t2); - }), n2; - }, file: function(e2, t2, r2) { - if (1 !== arguments.length) - return e2 = this.root + e2, s.call(this, e2, t2, r2), this; - if (h(e2)) { - var n2 = e2; - return this.filter(function(e3, t3) { - return !t3.dir && n2.test(e3); - }); - } - var i2 = this.files[this.root + e2]; - return i2 && !i2.dir ? i2 : null; - }, folder: function(r2) { - if (!r2) - return this; - if (h(r2)) - return this.filter(function(e3, t3) { - return t3.dir && r2.test(e3); - }); - var e2 = this.root + r2, t2 = b.call(this, e2), n2 = this.clone(); - return n2.root = t2.name, n2; - }, remove: function(r2) { - r2 = this.root + r2; - var e2 = this.files[r2]; - if (e2 || ("/" !== r2.slice(-1) && (r2 += "/"), e2 = this.files[r2]), e2 && !e2.dir) - delete this.files[r2]; - else - for (var t2 = this.filter(function(e3, t3) { - return t3.name.slice(0, r2.length) === r2; - }), n2 = 0; n2 < t2.length; n2++) - delete this.files[t2[n2].name]; - return this; - }, generate: function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, generateInternalStream: function(e2) { - var t2, r2 = {}; - try { - if ((r2 = u.extend(e2 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r2.type.toLowerCase(), r2.compression = r2.compression.toUpperCase(), "binarystring" === r2.type && (r2.type = "string"), !r2.type) - throw new Error("No output type specified."); - u.checkSupport(r2.type), "darwin" !== r2.platform && "freebsd" !== r2.platform && "linux" !== r2.platform && "sunos" !== r2.platform || (r2.platform = "UNIX"), "win32" === r2.platform && (r2.platform = "DOS"); - var n2 = r2.comment || this.comment || ""; - t2 = o.generateWorker(this, r2, n2); - } catch (e3) { - (t2 = new l("error")).error(e3); - } - return new a(t2, r2.type || "string", r2.mimeType); - }, generateAsync: function(e2, t2) { - return this.generateInternalStream(e2).accumulate(t2); - }, generateNodeStream: function(e2, t2) { - return (e2 = e2 || {}).type || (e2.type = "nodebuffer"), this.generateInternalStream(e2).toNodejsStream(t2); - } }; - t.exports = n; - }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e, t, r) { - "use strict"; - t.exports = e("stream"); - }, { stream: void 0 }], 17: [function(e, t, r) { - "use strict"; - var n = e("./DataReader"); - function i(e2) { - n.call(this, e2); - for (var t2 = 0; t2 < this.data.length; t2++) - e2[t2] = 255 & e2[t2]; - } - e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { - return this.data[this.zero + e2]; - }, i.prototype.lastIndexOfSignature = function(e2) { - for (var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.length - 4; 0 <= s; --s) - if (this.data[s] === t2 && this.data[s + 1] === r2 && this.data[s + 2] === n2 && this.data[s + 3] === i2) - return s - this.zero; - return -1; - }, i.prototype.readAndCheckSignature = function(e2) { - var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.readData(4); - return t2 === s[0] && r2 === s[1] && n2 === s[2] && i2 === s[3]; - }, i.prototype.readData = function(e2) { - if (this.checkOffset(e2), 0 === e2) - return []; - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e, t, r) { - "use strict"; - var n = e("../utils"); - function i(e2) { - this.data = e2, this.length = e2.length, this.index = 0, this.zero = 0; - } - i.prototype = { checkOffset: function(e2) { - this.checkIndex(this.index + e2); - }, checkIndex: function(e2) { - if (this.length < this.zero + e2 || e2 < 0) - throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e2 + "). Corrupted zip ?"); - }, setIndex: function(e2) { - this.checkIndex(e2), this.index = e2; - }, skip: function(e2) { - this.setIndex(this.index + e2); - }, byteAt: function() { - }, readInt: function(e2) { - var t2, r2 = 0; - for (this.checkOffset(e2), t2 = this.index + e2 - 1; t2 >= this.index; t2--) - r2 = (r2 << 8) + this.byteAt(t2); - return this.index += e2, r2; - }, readString: function(e2) { - return n.transformTo("string", this.readData(e2)); - }, readData: function() { - }, lastIndexOfSignature: function() { - }, readAndCheckSignature: function() { - }, readDate: function() { - var e2 = this.readInt(4); - return new Date(Date.UTC(1980 + (e2 >> 25 & 127), (e2 >> 21 & 15) - 1, e2 >> 16 & 31, e2 >> 11 & 31, e2 >> 5 & 63, (31 & e2) << 1)); - } }, t.exports = i; - }, { "../utils": 32 }], 19: [function(e, t, r) { - "use strict"; - var n = e("./Uint8ArrayReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.readData = function(e2) { - this.checkOffset(e2); - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e, t, r) { - "use strict"; - var n = e("./DataReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { - return this.data.charCodeAt(this.zero + e2); - }, i.prototype.lastIndexOfSignature = function(e2) { - return this.data.lastIndexOf(e2) - this.zero; - }, i.prototype.readAndCheckSignature = function(e2) { - return e2 === this.readData(4); - }, i.prototype.readData = function(e2) { - this.checkOffset(e2); - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e, t, r) { - "use strict"; - var n = e("./ArrayReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.readData = function(e2) { - if (this.checkOffset(e2), 0 === e2) - return new Uint8Array(0); - var t2 = this.data.subarray(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("../support"), s = e("./ArrayReader"), a = e("./StringReader"), o = e("./NodeBufferReader"), h = e("./Uint8ArrayReader"); - t.exports = function(e2) { - var t2 = n.getTypeOf(e2); - return n.checkSupport(t2), "string" !== t2 || i.uint8array ? "nodebuffer" === t2 ? new o(e2) : i.uint8array ? new h(n.transformTo("uint8array", e2)) : new s(n.transformTo("array", e2)) : new a(e2); - }; - }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e, t, r) { - "use strict"; - r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\x07\b"; - }, {}], 24: [function(e, t, r) { - "use strict"; - var n = e("./GenericWorker"), i = e("../utils"); - function s(e2) { - n.call(this, "ConvertWorker to " + e2), this.destType = e2; - } - i.inherits(s, n), s.prototype.processChunk = function(e2) { - this.push({ data: i.transformTo(this.destType, e2.data), meta: e2.meta }); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e, t, r) { - "use strict"; - var n = e("./GenericWorker"), i = e("../crc32"); - function s() { - n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); - } - e("../utils").inherits(s, n), s.prototype.processChunk = function(e2) { - this.streamInfo.crc32 = i(e2.data, this.streamInfo.crc32 || 0), this.push(e2); - }, t.exports = s; - }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("./GenericWorker"); - function s(e2) { - i.call(this, "DataLengthProbe for " + e2), this.propName = e2, this.withStreamInfo(e2, 0); - } - n.inherits(s, i), s.prototype.processChunk = function(e2) { - if (e2) { - var t2 = this.streamInfo[this.propName] || 0; - this.streamInfo[this.propName] = t2 + e2.data.length; - } - i.prototype.processChunk.call(this, e2); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("./GenericWorker"); - function s(e2) { - i.call(this, "DataWorker"); - var t2 = this; - this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e2.then(function(e3) { - t2.dataIsReady = true, t2.data = e3, t2.max = e3 && e3.length || 0, t2.type = n.getTypeOf(e3), t2.isPaused || t2._tickAndRepeat(); - }, function(e3) { - t2.error(e3); - }); - } - n.inherits(s, i), s.prototype.cleanUp = function() { - i.prototype.cleanUp.call(this), this.data = null; - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n.delay(this._tickAndRepeat, [], this)), true); - }, s.prototype._tickAndRepeat = function() { - this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); - }, s.prototype._tick = function() { - if (this.isPaused || this.isFinished) - return false; - var e2 = null, t2 = Math.min(this.max, this.index + 16384); - if (this.index >= this.max) - return this.end(); - switch (this.type) { - case "string": - e2 = this.data.substring(this.index, t2); - break; - case "uint8array": - e2 = this.data.subarray(this.index, t2); - break; - case "array": - case "nodebuffer": - e2 = this.data.slice(this.index, t2); - } - return this.index = t2, this.push({ data: e2, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e, t, r) { - "use strict"; - function n(e2) { - this.name = e2 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; - } - n.prototype = { push: function(e2) { - this.emit("data", e2); - }, end: function() { - if (this.isFinished) - return false; - this.flush(); - try { - this.emit("end"), this.cleanUp(), this.isFinished = true; - } catch (e2) { - this.emit("error", e2); - } - return true; - }, error: function(e2) { - return !this.isFinished && (this.isPaused ? this.generatedError = e2 : (this.isFinished = true, this.emit("error", e2), this.previous && this.previous.error(e2), this.cleanUp()), true); - }, on: function(e2, t2) { - return this._listeners[e2].push(t2), this; - }, cleanUp: function() { - this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; - }, emit: function(e2, t2) { - if (this._listeners[e2]) - for (var r2 = 0; r2 < this._listeners[e2].length; r2++) - this._listeners[e2][r2].call(this, t2); - }, pipe: function(e2) { - return e2.registerPrevious(this); - }, registerPrevious: function(e2) { - if (this.isLocked) - throw new Error("The stream '" + this + "' has already been used."); - this.streamInfo = e2.streamInfo, this.mergeStreamInfo(), this.previous = e2; - var t2 = this; - return e2.on("data", function(e3) { - t2.processChunk(e3); - }), e2.on("end", function() { - t2.end(); - }), e2.on("error", function(e3) { - t2.error(e3); - }), this; - }, pause: function() { - return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); - }, resume: function() { - if (!this.isPaused || this.isFinished) - return false; - var e2 = this.isPaused = false; - return this.generatedError && (this.error(this.generatedError), e2 = true), this.previous && this.previous.resume(), !e2; - }, flush: function() { - }, processChunk: function(e2) { - this.push(e2); - }, withStreamInfo: function(e2, t2) { - return this.extraStreamInfo[e2] = t2, this.mergeStreamInfo(), this; - }, mergeStreamInfo: function() { - for (var e2 in this.extraStreamInfo) - Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e2) && (this.streamInfo[e2] = this.extraStreamInfo[e2]); - }, lock: function() { - if (this.isLocked) - throw new Error("The stream '" + this + "' has already been used."); - this.isLocked = true, this.previous && this.previous.lock(); - }, toString: function() { - var e2 = "Worker " + this.name; - return this.previous ? this.previous + " -> " + e2 : e2; - } }, t.exports = n; - }, {}], 29: [function(e, t, r) { - "use strict"; - var h = e("../utils"), i = e("./ConvertWorker"), s = e("./GenericWorker"), u = e("../base64"), n = e("../support"), a = e("../external"), o = null; - if (n.nodestream) - try { - o = e("../nodejs/NodejsStreamOutputAdapter"); - } catch (e2) { - } - function l(e2, o2) { - return new a.Promise(function(t2, r2) { - var n2 = [], i2 = e2._internalType, s2 = e2._outputType, a2 = e2._mimeType; - e2.on("data", function(e3, t3) { - n2.push(e3), o2 && o2(t3); - }).on("error", function(e3) { - n2 = [], r2(e3); - }).on("end", function() { - try { - var e3 = function(e4, t3, r3) { - switch (e4) { - case "blob": - return h.newBlob(h.transformTo("arraybuffer", t3), r3); - case "base64": - return u.encode(t3); - default: - return h.transformTo(e4, t3); - } - }(s2, function(e4, t3) { - var r3, n3 = 0, i3 = null, s3 = 0; - for (r3 = 0; r3 < t3.length; r3++) - s3 += t3[r3].length; - switch (e4) { - case "string": - return t3.join(""); - case "array": - return Array.prototype.concat.apply([], t3); - case "uint8array": - for (i3 = new Uint8Array(s3), r3 = 0; r3 < t3.length; r3++) - i3.set(t3[r3], n3), n3 += t3[r3].length; - return i3; - case "nodebuffer": - return Buffer.concat(t3); - default: - throw new Error("concat : unsupported type '" + e4 + "'"); - } - }(i2, n2), a2); - t2(e3); - } catch (e4) { - r2(e4); - } - n2 = []; - }).resume(); - }); - } - function f(e2, t2, r2) { - var n2 = t2; - switch (t2) { - case "blob": - case "arraybuffer": - n2 = "uint8array"; - break; - case "base64": - n2 = "string"; - } - try { - this._internalType = n2, this._outputType = t2, this._mimeType = r2, h.checkSupport(n2), this._worker = e2.pipe(new i(n2)), e2.lock(); - } catch (e3) { - this._worker = new s("error"), this._worker.error(e3); - } - } - f.prototype = { accumulate: function(e2) { - return l(this, e2); - }, on: function(e2, t2) { - var r2 = this; - return "data" === e2 ? this._worker.on(e2, function(e3) { - t2.call(r2, e3.data, e3.meta); - }) : this._worker.on(e2, function() { - h.delay(t2, arguments, r2); - }), this; - }, resume: function() { - return h.delay(this._worker.resume, [], this._worker), this; - }, pause: function() { - return this._worker.pause(), this; - }, toNodejsStream: function(e2) { - if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) - throw new Error(this._outputType + " is not supported by this method"); - return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e2); - } }, t.exports = f; - }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e, t, r) { - "use strict"; - if (r.base64 = true, r.array = true, r.string = true, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) - r.blob = false; - else { - var n = new ArrayBuffer(0); - try { - r.blob = 0 === new Blob([n], { type: "application/zip" }).size; - } catch (e2) { - try { - var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); - i.append(n), r.blob = 0 === i.getBlob("application/zip").size; - } catch (e3) { - r.blob = false; - } - } - } - try { - r.nodestream = !!e("readable-stream").Readable; - } catch (e2) { - r.nodestream = false; - } - }, { "readable-stream": 16 }], 31: [function(e, t, s) { - "use strict"; - for (var o = e("./utils"), h = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), u = new Array(256), i = 0; i < 256; i++) - u[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1; - u[254] = u[254] = 1; - function a() { - n.call(this, "utf-8 decode"), this.leftOver = null; - } - function l() { - n.call(this, "utf-8 encode"); - } - s.utf8encode = function(e2) { - return h.nodebuffer ? r.newBufferFrom(e2, "utf-8") : function(e3) { - var t2, r2, n2, i2, s2, a2 = e3.length, o2 = 0; - for (i2 = 0; i2 < a2; i2++) - 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o2 += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; - for (t2 = h.uint8array ? new Uint8Array(o2) : new Array(o2), i2 = s2 = 0; s2 < o2; i2++) - 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); - return t2; - }(e2); - }, s.utf8decode = function(e2) { - return h.nodebuffer ? o.transformTo("nodebuffer", e2).toString("utf-8") : function(e3) { - var t2, r2, n2, i2, s2 = e3.length, a2 = new Array(2 * s2); - for (t2 = r2 = 0; t2 < s2; ) - if ((n2 = e3[t2++]) < 128) - a2[r2++] = n2; - else if (4 < (i2 = u[n2])) - a2[r2++] = 65533, t2 += i2 - 1; - else { - for (n2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && t2 < s2; ) - n2 = n2 << 6 | 63 & e3[t2++], i2--; - 1 < i2 ? a2[r2++] = 65533 : n2 < 65536 ? a2[r2++] = n2 : (n2 -= 65536, a2[r2++] = 55296 | n2 >> 10 & 1023, a2[r2++] = 56320 | 1023 & n2); - } - return a2.length !== r2 && (a2.subarray ? a2 = a2.subarray(0, r2) : a2.length = r2), o.applyFromCharCode(a2); - }(e2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2)); - }, o.inherits(a, n), a.prototype.processChunk = function(e2) { - var t2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2.data); - if (this.leftOver && this.leftOver.length) { - if (h.uint8array) { - var r2 = t2; - (t2 = new Uint8Array(r2.length + this.leftOver.length)).set(this.leftOver, 0), t2.set(r2, this.leftOver.length); - } else - t2 = this.leftOver.concat(t2); - this.leftOver = null; - } - var n2 = function(e3, t3) { - var r3; - for ((t3 = t3 || e3.length) > e3.length && (t3 = e3.length), r3 = t3 - 1; 0 <= r3 && 128 == (192 & e3[r3]); ) - r3--; - return r3 < 0 ? t3 : 0 === r3 ? t3 : r3 + u[e3[r3]] > t3 ? r3 : t3; - }(t2), i2 = t2; - n2 !== t2.length && (h.uint8array ? (i2 = t2.subarray(0, n2), this.leftOver = t2.subarray(n2, t2.length)) : (i2 = t2.slice(0, n2), this.leftOver = t2.slice(n2, t2.length))), this.push({ data: s.utf8decode(i2), meta: e2.meta }); - }, a.prototype.flush = function() { - this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); - }, s.Utf8DecodeWorker = a, o.inherits(l, n), l.prototype.processChunk = function(e2) { - this.push({ data: s.utf8encode(e2.data), meta: e2.meta }); - }, s.Utf8EncodeWorker = l; - }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e, t, a) { - "use strict"; - var o = e("./support"), h = e("./base64"), r = e("./nodejsUtils"), u = e("./external"); - function n(e2) { - return e2; - } - function l(e2, t2) { - for (var r2 = 0; r2 < e2.length; ++r2) - t2[r2] = 255 & e2.charCodeAt(r2); - return t2; - } - e("setimmediate"), a.newBlob = function(t2, r2) { - a.checkSupport("blob"); - try { - return new Blob([t2], { type: r2 }); - } catch (e2) { - try { - var n2 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); - return n2.append(t2), n2.getBlob(r2); - } catch (e3) { - throw new Error("Bug : can't construct the Blob."); - } - } - }; - var i = { stringifyByChunk: function(e2, t2, r2) { - var n2 = [], i2 = 0, s2 = e2.length; - if (s2 <= r2) - return String.fromCharCode.apply(null, e2); - for (; i2 < s2; ) - "array" === t2 || "nodebuffer" === t2 ? n2.push(String.fromCharCode.apply(null, e2.slice(i2, Math.min(i2 + r2, s2)))) : n2.push(String.fromCharCode.apply(null, e2.subarray(i2, Math.min(i2 + r2, s2)))), i2 += r2; - return n2.join(""); - }, stringifyByChar: function(e2) { - for (var t2 = "", r2 = 0; r2 < e2.length; r2++) - t2 += String.fromCharCode(e2[r2]); - return t2; - }, applyCanBeUsed: { uint8array: function() { - try { - return o.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; - } catch (e2) { - return false; - } - }(), nodebuffer: function() { - try { - return o.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length; - } catch (e2) { - return false; - } - }() } }; - function s(e2) { - var t2 = 65536, r2 = a.getTypeOf(e2), n2 = true; - if ("uint8array" === r2 ? n2 = i.applyCanBeUsed.uint8array : "nodebuffer" === r2 && (n2 = i.applyCanBeUsed.nodebuffer), n2) - for (; 1 < t2; ) - try { - return i.stringifyByChunk(e2, r2, t2); - } catch (e3) { - t2 = Math.floor(t2 / 2); - } - return i.stringifyByChar(e2); - } - function f(e2, t2) { - for (var r2 = 0; r2 < e2.length; r2++) - t2[r2] = e2[r2]; - return t2; - } - a.applyFromCharCode = s; - var c = {}; - c.string = { string: n, array: function(e2) { - return l(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return c.string.uint8array(e2).buffer; - }, uint8array: function(e2) { - return l(e2, new Uint8Array(e2.length)); - }, nodebuffer: function(e2) { - return l(e2, r.allocBuffer(e2.length)); - } }, c.array = { string: s, array: n, arraybuffer: function(e2) { - return new Uint8Array(e2).buffer; - }, uint8array: function(e2) { - return new Uint8Array(e2); - }, nodebuffer: function(e2) { - return r.newBufferFrom(e2); - } }, c.arraybuffer = { string: function(e2) { - return s(new Uint8Array(e2)); - }, array: function(e2) { - return f(new Uint8Array(e2), new Array(e2.byteLength)); - }, arraybuffer: n, uint8array: function(e2) { - return new Uint8Array(e2); - }, nodebuffer: function(e2) { - return r.newBufferFrom(new Uint8Array(e2)); - } }, c.uint8array = { string: s, array: function(e2) { - return f(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return e2.buffer; - }, uint8array: n, nodebuffer: function(e2) { - return r.newBufferFrom(e2); - } }, c.nodebuffer = { string: s, array: function(e2) { - return f(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return c.nodebuffer.uint8array(e2).buffer; - }, uint8array: function(e2) { - return f(e2, new Uint8Array(e2.length)); - }, nodebuffer: n }, a.transformTo = function(e2, t2) { - if (t2 = t2 || "", !e2) - return t2; - a.checkSupport(e2); - var r2 = a.getTypeOf(t2); - return c[r2][e2](t2); - }, a.resolve = function(e2) { - for (var t2 = e2.split("/"), r2 = [], n2 = 0; n2 < t2.length; n2++) { - var i2 = t2[n2]; - "." === i2 || "" === i2 && 0 !== n2 && n2 !== t2.length - 1 || (".." === i2 ? r2.pop() : r2.push(i2)); - } - return r2.join("/"); - }, a.getTypeOf = function(e2) { - return "string" == typeof e2 ? "string" : "[object Array]" === Object.prototype.toString.call(e2) ? "array" : o.nodebuffer && r.isBuffer(e2) ? "nodebuffer" : o.uint8array && e2 instanceof Uint8Array ? "uint8array" : o.arraybuffer && e2 instanceof ArrayBuffer ? "arraybuffer" : void 0; - }, a.checkSupport = function(e2) { - if (!o[e2.toLowerCase()]) - throw new Error(e2 + " is not supported by this platform"); - }, a.MAX_VALUE_16BITS = 65535, a.MAX_VALUE_32BITS = -1, a.pretty = function(e2) { - var t2, r2, n2 = ""; - for (r2 = 0; r2 < (e2 || "").length; r2++) - n2 += "\\x" + ((t2 = e2.charCodeAt(r2)) < 16 ? "0" : "") + t2.toString(16).toUpperCase(); - return n2; - }, a.delay = function(e2, t2, r2) { - setImmediate(function() { - e2.apply(r2 || null, t2 || []); - }); - }, a.inherits = function(e2, t2) { - function r2() { - } - r2.prototype = t2.prototype, e2.prototype = new r2(); - }, a.extend = function() { - var e2, t2, r2 = {}; - for (e2 = 0; e2 < arguments.length; e2++) - for (t2 in arguments[e2]) - Object.prototype.hasOwnProperty.call(arguments[e2], t2) && void 0 === r2[t2] && (r2[t2] = arguments[e2][t2]); - return r2; - }, a.prepareContent = function(r2, e2, n2, i2, s2) { - return u.Promise.resolve(e2).then(function(n3) { - return o.blob && (n3 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n3))) && "undefined" != typeof FileReader ? new u.Promise(function(t2, r3) { - var e3 = new FileReader(); - e3.onload = function(e4) { - t2(e4.target.result); - }, e3.onerror = function(e4) { - r3(e4.target.error); - }, e3.readAsArrayBuffer(n3); - }) : n3; - }).then(function(e3) { - var t2 = a.getTypeOf(e3); - return t2 ? ("arraybuffer" === t2 ? e3 = a.transformTo("uint8array", e3) : "string" === t2 && (s2 ? e3 = h.decode(e3) : n2 && true !== i2 && (e3 = function(e4) { - return l(e4, o.uint8array ? new Uint8Array(e4.length) : new Array(e4.length)); - }(e3))), e3) : u.Promise.reject(new Error("Can't read the data of '" + r2 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); - }); - }; - }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e, t, r) { - "use strict"; - var n = e("./reader/readerFor"), i = e("./utils"), s = e("./signature"), a = e("./zipEntry"), o = e("./support"); - function h(e2) { - this.files = [], this.loadOptions = e2; - } - h.prototype = { checkSignature: function(e2) { - if (!this.reader.readAndCheckSignature(e2)) { - this.reader.index -= 4; - var t2 = this.reader.readString(4); - throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t2) + ", expected " + i.pretty(e2) + ")"); - } - }, isSignature: function(e2, t2) { - var r2 = this.reader.index; - this.reader.setIndex(e2); - var n2 = this.reader.readString(4) === t2; - return this.reader.setIndex(r2), n2; - }, readBlockEndOfCentral: function() { - this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); - var e2 = this.reader.readData(this.zipCommentLength), t2 = o.uint8array ? "uint8array" : "array", r2 = i.transformTo(t2, e2); - this.zipComment = this.loadOptions.decodeFileName(r2); - }, readBlockZip64EndOfCentral: function() { - this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; - for (var e2, t2, r2, n2 = this.zip64EndOfCentralSize - 44; 0 < n2; ) - e2 = this.reader.readInt(2), t2 = this.reader.readInt(4), r2 = this.reader.readData(t2), this.zip64ExtensibleData[e2] = { id: e2, length: t2, value: r2 }; - }, readBlockZip64EndOfCentralLocator: function() { - if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) - throw new Error("Multi-volumes zip are not supported"); - }, readLocalFiles: function() { - var e2, t2; - for (e2 = 0; e2 < this.files.length; e2++) - t2 = this.files[e2], this.reader.setIndex(t2.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t2.readLocalPart(this.reader), t2.handleUTF8(), t2.processAttributes(); - }, readCentralDir: function() { - var e2; - for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER); ) - (e2 = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e2); - if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) - throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); - }, readEndOfCentral: function() { - var e2 = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END); - if (e2 < 0) - throw !this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); - this.reader.setIndex(e2); - var t2 = e2; - if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) { - if (this.zip64 = true, (e2 = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) - throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); - if (this.reader.setIndex(e2), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) - throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); - this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); - } - var r2 = this.centralDirOffset + this.centralDirSize; - this.zip64 && (r2 += 20, r2 += 12 + this.zip64EndOfCentralSize); - var n2 = t2 - r2; - if (0 < n2) - this.isSignature(t2, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n2); - else if (n2 < 0) - throw new Error("Corrupted zip: missing " + Math.abs(n2) + " bytes."); - }, prepareReader: function(e2) { - this.reader = n(e2); - }, load: function(e2) { - this.prepareReader(e2), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); - } }, t.exports = h; - }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e, t, r) { - "use strict"; - var n = e("./reader/readerFor"), s = e("./utils"), i = e("./compressedObject"), a = e("./crc32"), o = e("./utf8"), h = e("./compressions"), u = e("./support"); - function l(e2, t2) { - this.options = e2, this.loadOptions = t2; - } - l.prototype = { isEncrypted: function() { - return 1 == (1 & this.bitFlag); - }, useUTF8: function() { - return 2048 == (2048 & this.bitFlag); - }, readLocalPart: function(e2) { - var t2, r2; - if (e2.skip(22), this.fileNameLength = e2.readInt(2), r2 = e2.readInt(2), this.fileName = e2.readData(this.fileNameLength), e2.skip(r2), -1 === this.compressedSize || -1 === this.uncompressedSize) - throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); - if (null === (t2 = function(e3) { - for (var t3 in h) - if (Object.prototype.hasOwnProperty.call(h, t3) && h[t3].magic === e3) - return h[t3]; - return null; - }(this.compressionMethod))) - throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")"); - this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t2, e2.readData(this.compressedSize)); - }, readCentralPart: function(e2) { - this.versionMadeBy = e2.readInt(2), e2.skip(2), this.bitFlag = e2.readInt(2), this.compressionMethod = e2.readString(2), this.date = e2.readDate(), this.crc32 = e2.readInt(4), this.compressedSize = e2.readInt(4), this.uncompressedSize = e2.readInt(4); - var t2 = e2.readInt(2); - if (this.extraFieldsLength = e2.readInt(2), this.fileCommentLength = e2.readInt(2), this.diskNumberStart = e2.readInt(2), this.internalFileAttributes = e2.readInt(2), this.externalFileAttributes = e2.readInt(4), this.localHeaderOffset = e2.readInt(4), this.isEncrypted()) - throw new Error("Encrypted zip are not supported"); - e2.skip(t2), this.readExtraFields(e2), this.parseZIP64ExtraField(e2), this.fileComment = e2.readData(this.fileCommentLength); - }, processAttributes: function() { - this.unixPermissions = null, this.dosPermissions = null; - var e2 = this.versionMadeBy >> 8; - this.dir = !!(16 & this.externalFileAttributes), 0 == e2 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e2 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); - }, parseZIP64ExtraField: function() { - if (this.extraFields[1]) { - var e2 = n(this.extraFields[1].value); - this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = e2.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = e2.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = e2.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = e2.readInt(4)); - } - }, readExtraFields: function(e2) { - var t2, r2, n2, i2 = e2.index + this.extraFieldsLength; - for (this.extraFields || (this.extraFields = {}); e2.index + 4 < i2; ) - t2 = e2.readInt(2), r2 = e2.readInt(2), n2 = e2.readData(r2), this.extraFields[t2] = { id: t2, length: r2, value: n2 }; - e2.setIndex(i2); - }, handleUTF8: function() { - var e2 = u.uint8array ? "uint8array" : "array"; - if (this.useUTF8()) - this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment); - else { - var t2 = this.findExtraFieldUnicodePath(); - if (null !== t2) - this.fileNameStr = t2; - else { - var r2 = s.transformTo(e2, this.fileName); - this.fileNameStr = this.loadOptions.decodeFileName(r2); - } - var n2 = this.findExtraFieldUnicodeComment(); - if (null !== n2) - this.fileCommentStr = n2; - else { - var i2 = s.transformTo(e2, this.fileComment); - this.fileCommentStr = this.loadOptions.decodeFileName(i2); - } - } - }, findExtraFieldUnicodePath: function() { - var e2 = this.extraFields[28789]; - if (e2) { - var t2 = n(e2.value); - return 1 !== t2.readInt(1) ? null : a(this.fileName) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); - } - return null; - }, findExtraFieldUnicodeComment: function() { - var e2 = this.extraFields[25461]; - if (e2) { - var t2 = n(e2.value); - return 1 !== t2.readInt(1) ? null : a(this.fileComment) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); - } - return null; - } }, t.exports = l; - }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e, t, r) { - "use strict"; - function n(e2, t2, r2) { - this.name = e2, this.dir = r2.dir, this.date = r2.date, this.comment = r2.comment, this.unixPermissions = r2.unixPermissions, this.dosPermissions = r2.dosPermissions, this._data = t2, this._dataBinary = r2.binary, this.options = { compression: r2.compression, compressionOptions: r2.compressionOptions }; - } - var s = e("./stream/StreamHelper"), i = e("./stream/DataWorker"), a = e("./utf8"), o = e("./compressedObject"), h = e("./stream/GenericWorker"); - n.prototype = { internalStream: function(e2) { - var t2 = null, r2 = "string"; - try { - if (!e2) - throw new Error("No output type specified."); - var n2 = "string" === (r2 = e2.toLowerCase()) || "text" === r2; - "binarystring" !== r2 && "text" !== r2 || (r2 = "string"), t2 = this._decompressWorker(); - var i2 = !this._dataBinary; - i2 && !n2 && (t2 = t2.pipe(new a.Utf8EncodeWorker())), !i2 && n2 && (t2 = t2.pipe(new a.Utf8DecodeWorker())); - } catch (e3) { - (t2 = new h("error")).error(e3); - } - return new s(t2, r2, ""); - }, async: function(e2, t2) { - return this.internalStream(e2).accumulate(t2); - }, nodeStream: function(e2, t2) { - return this.internalStream(e2 || "nodebuffer").toNodejsStream(t2); - }, _compressWorker: function(e2, t2) { - if (this._data instanceof o && this._data.compression.magic === e2.magic) - return this._data.getCompressedWorker(); - var r2 = this._decompressWorker(); - return this._dataBinary || (r2 = r2.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r2, e2, t2); - }, _decompressWorker: function() { - return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof h ? this._data : new i(this._data); - } }; - for (var u = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, f = 0; f < u.length; f++) - n.prototype[u[f]] = l; - t.exports = n; - }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e, l, t) { - (function(t2) { - "use strict"; - var r, n, e2 = t2.MutationObserver || t2.WebKitMutationObserver; - if (e2) { - var i = 0, s = new e2(u), a = t2.document.createTextNode(""); - s.observe(a, { characterData: true }), r = function() { - a.data = i = ++i % 2; - }; - } else if (t2.setImmediate || void 0 === t2.MessageChannel) - r = "document" in t2 && "onreadystatechange" in t2.document.createElement("script") ? function() { - var e3 = t2.document.createElement("script"); - e3.onreadystatechange = function() { - u(), e3.onreadystatechange = null, e3.parentNode.removeChild(e3), e3 = null; - }, t2.document.documentElement.appendChild(e3); - } : function() { - setTimeout(u, 0); - }; - else { - var o = new t2.MessageChannel(); - o.port1.onmessage = u, r = function() { - o.port2.postMessage(0); - }; - } - var h = []; - function u() { - var e3, t3; - n = true; - for (var r2 = h.length; r2; ) { - for (t3 = h, h = [], e3 = -1; ++e3 < r2; ) - t3[e3](); - r2 = h.length; - } - n = false; - } - l.exports = function(e3) { - 1 !== h.push(e3) || n || r(); - }; - }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); - }, {}], 37: [function(e, t, r) { - "use strict"; - var i = e("immediate"); - function u() { - } - var l = {}, s = ["REJECTED"], a = ["FULFILLED"], n = ["PENDING"]; - function o(e2) { - if ("function" != typeof e2) - throw new TypeError("resolver must be a function"); - this.state = n, this.queue = [], this.outcome = void 0, e2 !== u && d(this, e2); - } - function h(e2, t2, r2) { - this.promise = e2, "function" == typeof t2 && (this.onFulfilled = t2, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r2 && (this.onRejected = r2, this.callRejected = this.otherCallRejected); - } - function f(t2, r2, n2) { - i(function() { - var e2; - try { - e2 = r2(n2); - } catch (e3) { - return l.reject(t2, e3); - } - e2 === t2 ? l.reject(t2, new TypeError("Cannot resolve promise with itself")) : l.resolve(t2, e2); - }); - } - function c(e2) { - var t2 = e2 && e2.then; - if (e2 && ("object" == typeof e2 || "function" == typeof e2) && "function" == typeof t2) - return function() { - t2.apply(e2, arguments); - }; - } - function d(t2, e2) { - var r2 = false; - function n2(e3) { - r2 || (r2 = true, l.reject(t2, e3)); - } - function i2(e3) { - r2 || (r2 = true, l.resolve(t2, e3)); - } - var s2 = p(function() { - e2(i2, n2); - }); - "error" === s2.status && n2(s2.value); - } - function p(e2, t2) { - var r2 = {}; - try { - r2.value = e2(t2), r2.status = "success"; - } catch (e3) { - r2.status = "error", r2.value = e3; - } - return r2; - } - (t.exports = o).prototype.finally = function(t2) { - if ("function" != typeof t2) - return this; - var r2 = this.constructor; - return this.then(function(e2) { - return r2.resolve(t2()).then(function() { - return e2; - }); - }, function(e2) { - return r2.resolve(t2()).then(function() { - throw e2; - }); - }); - }, o.prototype.catch = function(e2) { - return this.then(null, e2); - }, o.prototype.then = function(e2, t2) { - if ("function" != typeof e2 && this.state === a || "function" != typeof t2 && this.state === s) - return this; - var r2 = new this.constructor(u); - this.state !== n ? f(r2, this.state === a ? e2 : t2, this.outcome) : this.queue.push(new h(r2, e2, t2)); - return r2; - }, h.prototype.callFulfilled = function(e2) { - l.resolve(this.promise, e2); - }, h.prototype.otherCallFulfilled = function(e2) { - f(this.promise, this.onFulfilled, e2); - }, h.prototype.callRejected = function(e2) { - l.reject(this.promise, e2); - }, h.prototype.otherCallRejected = function(e2) { - f(this.promise, this.onRejected, e2); - }, l.resolve = function(e2, t2) { - var r2 = p(c, t2); - if ("error" === r2.status) - return l.reject(e2, r2.value); - var n2 = r2.value; - if (n2) - d(e2, n2); - else { - e2.state = a, e2.outcome = t2; - for (var i2 = -1, s2 = e2.queue.length; ++i2 < s2; ) - e2.queue[i2].callFulfilled(t2); - } - return e2; - }, l.reject = function(e2, t2) { - e2.state = s, e2.outcome = t2; - for (var r2 = -1, n2 = e2.queue.length; ++r2 < n2; ) - e2.queue[r2].callRejected(t2); - return e2; - }, o.resolve = function(e2) { - if (e2 instanceof this) - return e2; - return l.resolve(new this(u), e2); - }, o.reject = function(e2) { - var t2 = new this(u); - return l.reject(t2, e2); - }, o.all = function(e2) { - var r2 = this; - if ("[object Array]" !== Object.prototype.toString.call(e2)) - return this.reject(new TypeError("must be an array")); - var n2 = e2.length, i2 = false; - if (!n2) - return this.resolve([]); - var s2 = new Array(n2), a2 = 0, t2 = -1, o2 = new this(u); - for (; ++t2 < n2; ) - h2(e2[t2], t2); - return o2; - function h2(e3, t3) { - r2.resolve(e3).then(function(e4) { - s2[t3] = e4, ++a2 !== n2 || i2 || (i2 = true, l.resolve(o2, s2)); - }, function(e4) { - i2 || (i2 = true, l.reject(o2, e4)); - }); - } - }, o.race = function(e2) { - var t2 = this; - if ("[object Array]" !== Object.prototype.toString.call(e2)) - return this.reject(new TypeError("must be an array")); - var r2 = e2.length, n2 = false; - if (!r2) - return this.resolve([]); - var i2 = -1, s2 = new this(u); - for (; ++i2 < r2; ) - a2 = e2[i2], t2.resolve(a2).then(function(e3) { - n2 || (n2 = true, l.resolve(s2, e3)); - }, function(e3) { - n2 || (n2 = true, l.reject(s2, e3)); - }); - var a2; - return s2; - }; - }, { immediate: 36 }], 38: [function(e, t, r) { - "use strict"; - var n = {}; - (0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n; - }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e, t, r) { - "use strict"; - var a = e("./zlib/deflate"), o = e("./utils/common"), h = e("./utils/strings"), i = e("./zlib/messages"), s = e("./zlib/zstream"), u = Object.prototype.toString, l = 0, f = -1, c = 0, d = 8; - function p(e2) { - if (!(this instanceof p)) - return new p(e2); - this.options = o.assign({ level: f, method: d, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c, to: "" }, e2 || {}); - var t2 = this.options; - t2.raw && 0 < t2.windowBits ? t2.windowBits = -t2.windowBits : t2.gzip && 0 < t2.windowBits && t2.windowBits < 16 && (t2.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0; - var r2 = a.deflateInit2(this.strm, t2.level, t2.method, t2.windowBits, t2.memLevel, t2.strategy); - if (r2 !== l) - throw new Error(i[r2]); - if (t2.header && a.deflateSetHeader(this.strm, t2.header), t2.dictionary) { - var n2; - if (n2 = "string" == typeof t2.dictionary ? h.string2buf(t2.dictionary) : "[object ArrayBuffer]" === u.call(t2.dictionary) ? new Uint8Array(t2.dictionary) : t2.dictionary, (r2 = a.deflateSetDictionary(this.strm, n2)) !== l) - throw new Error(i[r2]); - this._dict_set = true; - } - } - function n(e2, t2) { - var r2 = new p(t2); - if (r2.push(e2, true), r2.err) - throw r2.msg || i[r2.err]; - return r2.result; - } - p.prototype.push = function(e2, t2) { - var r2, n2, i2 = this.strm, s2 = this.options.chunkSize; - if (this.ended) - return false; - n2 = t2 === ~~t2 ? t2 : true === t2 ? 4 : 0, "string" == typeof e2 ? i2.input = h.string2buf(e2) : "[object ArrayBuffer]" === u.call(e2) ? i2.input = new Uint8Array(e2) : i2.input = e2, i2.next_in = 0, i2.avail_in = i2.input.length; - do { - if (0 === i2.avail_out && (i2.output = new o.Buf8(s2), i2.next_out = 0, i2.avail_out = s2), 1 !== (r2 = a.deflate(i2, n2)) && r2 !== l) - return this.onEnd(r2), !(this.ended = true); - 0 !== i2.avail_out && (0 !== i2.avail_in || 4 !== n2 && 2 !== n2) || ("string" === this.options.to ? this.onData(h.buf2binstring(o.shrinkBuf(i2.output, i2.next_out))) : this.onData(o.shrinkBuf(i2.output, i2.next_out))); - } while ((0 < i2.avail_in || 0 === i2.avail_out) && 1 !== r2); - return 4 === n2 ? (r2 = a.deflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === l) : 2 !== n2 || (this.onEnd(l), !(i2.avail_out = 0)); - }, p.prototype.onData = function(e2) { - this.chunks.push(e2); - }, p.prototype.onEnd = function(e2) { - e2 === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; - }, r.Deflate = p, r.deflate = n, r.deflateRaw = function(e2, t2) { - return (t2 = t2 || {}).raw = true, n(e2, t2); - }, r.gzip = function(e2, t2) { - return (t2 = t2 || {}).gzip = true, n(e2, t2); - }; - }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e, t, r) { - "use strict"; - var c = e("./zlib/inflate"), d = e("./utils/common"), p = e("./utils/strings"), m = e("./zlib/constants"), n = e("./zlib/messages"), i = e("./zlib/zstream"), s = e("./zlib/gzheader"), _ = Object.prototype.toString; - function a(e2) { - if (!(this instanceof a)) - return new a(e2); - this.options = d.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {}); - var t2 = this.options; - t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0; - var r2 = c.inflateInit2(this.strm, t2.windowBits); - if (r2 !== m.Z_OK) - throw new Error(n[r2]); - this.header = new s(), c.inflateGetHeader(this.strm, this.header); - } - function o(e2, t2) { - var r2 = new a(t2); - if (r2.push(e2, true), r2.err) - throw r2.msg || n[r2.err]; - return r2.result; - } - a.prototype.push = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h = this.strm, u = this.options.chunkSize, l = this.options.dictionary, f = false; - if (this.ended) - return false; - n2 = t2 === ~~t2 ? t2 : true === t2 ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e2 ? h.input = p.binstring2buf(e2) : "[object ArrayBuffer]" === _.call(e2) ? h.input = new Uint8Array(e2) : h.input = e2, h.next_in = 0, h.avail_in = h.input.length; - do { - if (0 === h.avail_out && (h.output = new d.Buf8(u), h.next_out = 0, h.avail_out = u), (r2 = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && l && (o2 = "string" == typeof l ? p.string2buf(l) : "[object ArrayBuffer]" === _.call(l) ? new Uint8Array(l) : l, r2 = c.inflateSetDictionary(this.strm, o2)), r2 === m.Z_BUF_ERROR && true === f && (r2 = m.Z_OK, f = false), r2 !== m.Z_STREAM_END && r2 !== m.Z_OK) - return this.onEnd(r2), !(this.ended = true); - h.next_out && (0 !== h.avail_out && r2 !== m.Z_STREAM_END && (0 !== h.avail_in || n2 !== m.Z_FINISH && n2 !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i2 = p.utf8border(h.output, h.next_out), s2 = h.next_out - i2, a2 = p.buf2string(h.output, i2), h.next_out = s2, h.avail_out = u - s2, s2 && d.arraySet(h.output, h.output, i2, s2, 0), this.onData(a2)) : this.onData(d.shrinkBuf(h.output, h.next_out)))), 0 === h.avail_in && 0 === h.avail_out && (f = true); - } while ((0 < h.avail_in || 0 === h.avail_out) && r2 !== m.Z_STREAM_END); - return r2 === m.Z_STREAM_END && (n2 = m.Z_FINISH), n2 === m.Z_FINISH ? (r2 = c.inflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === m.Z_OK) : n2 !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(h.avail_out = 0)); - }, a.prototype.onData = function(e2) { - this.chunks.push(e2); - }, a.prototype.onEnd = function(e2) { - e2 === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; - }, r.Inflate = a, r.inflate = o, r.inflateRaw = function(e2, t2) { - return (t2 = t2 || {}).raw = true, o(e2, t2); - }, r.ungzip = o; - }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e, t, r) { - "use strict"; - var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; - r.assign = function(e2) { - for (var t2 = Array.prototype.slice.call(arguments, 1); t2.length; ) { - var r2 = t2.shift(); - if (r2) { - if ("object" != typeof r2) - throw new TypeError(r2 + "must be non-object"); - for (var n2 in r2) - r2.hasOwnProperty(n2) && (e2[n2] = r2[n2]); - } - } - return e2; - }, r.shrinkBuf = function(e2, t2) { - return e2.length === t2 ? e2 : e2.subarray ? e2.subarray(0, t2) : (e2.length = t2, e2); - }; - var i = { arraySet: function(e2, t2, r2, n2, i2) { - if (t2.subarray && e2.subarray) - e2.set(t2.subarray(r2, r2 + n2), i2); - else - for (var s2 = 0; s2 < n2; s2++) - e2[i2 + s2] = t2[r2 + s2]; - }, flattenChunks: function(e2) { - var t2, r2, n2, i2, s2, a; - for (t2 = n2 = 0, r2 = e2.length; t2 < r2; t2++) - n2 += e2[t2].length; - for (a = new Uint8Array(n2), t2 = i2 = 0, r2 = e2.length; t2 < r2; t2++) - s2 = e2[t2], a.set(s2, i2), i2 += s2.length; - return a; - } }, s = { arraySet: function(e2, t2, r2, n2, i2) { - for (var s2 = 0; s2 < n2; s2++) - e2[i2 + s2] = t2[r2 + s2]; - }, flattenChunks: function(e2) { - return [].concat.apply([], e2); - } }; - r.setTyped = function(e2) { - e2 ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s)); - }, r.setTyped(n); - }, {}], 42: [function(e, t, r) { - "use strict"; - var h = e("./common"), i = true, s = true; - try { - String.fromCharCode.apply(null, [0]); - } catch (e2) { - i = false; - } - try { - String.fromCharCode.apply(null, new Uint8Array(1)); - } catch (e2) { - s = false; - } - for (var u = new h.Buf8(256), n = 0; n < 256; n++) - u[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; - function l(e2, t2) { - if (t2 < 65537 && (e2.subarray && s || !e2.subarray && i)) - return String.fromCharCode.apply(null, h.shrinkBuf(e2, t2)); - for (var r2 = "", n2 = 0; n2 < t2; n2++) - r2 += String.fromCharCode(e2[n2]); - return r2; - } - u[254] = u[254] = 1, r.string2buf = function(e2) { - var t2, r2, n2, i2, s2, a = e2.length, o = 0; - for (i2 = 0; i2 < a; i2++) - 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; - for (t2 = new h.Buf8(o), i2 = s2 = 0; s2 < o; i2++) - 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); - return t2; - }, r.buf2binstring = function(e2) { - return l(e2, e2.length); - }, r.binstring2buf = function(e2) { - for (var t2 = new h.Buf8(e2.length), r2 = 0, n2 = t2.length; r2 < n2; r2++) - t2[r2] = e2.charCodeAt(r2); - return t2; - }, r.buf2string = function(e2, t2) { - var r2, n2, i2, s2, a = t2 || e2.length, o = new Array(2 * a); - for (r2 = n2 = 0; r2 < a; ) - if ((i2 = e2[r2++]) < 128) - o[n2++] = i2; - else if (4 < (s2 = u[i2])) - o[n2++] = 65533, r2 += s2 - 1; - else { - for (i2 &= 2 === s2 ? 31 : 3 === s2 ? 15 : 7; 1 < s2 && r2 < a; ) - i2 = i2 << 6 | 63 & e2[r2++], s2--; - 1 < s2 ? o[n2++] = 65533 : i2 < 65536 ? o[n2++] = i2 : (i2 -= 65536, o[n2++] = 55296 | i2 >> 10 & 1023, o[n2++] = 56320 | 1023 & i2); - } - return l(o, n2); - }, r.utf8border = function(e2, t2) { - var r2; - for ((t2 = t2 || e2.length) > e2.length && (t2 = e2.length), r2 = t2 - 1; 0 <= r2 && 128 == (192 & e2[r2]); ) - r2--; - return r2 < 0 ? t2 : 0 === r2 ? t2 : r2 + u[e2[r2]] > t2 ? r2 : t2; - }; - }, { "./common": 41 }], 43: [function(e, t, r) { - "use strict"; - t.exports = function(e2, t2, r2, n) { - for (var i = 65535 & e2 | 0, s = e2 >>> 16 & 65535 | 0, a = 0; 0 !== r2; ) { - for (r2 -= a = 2e3 < r2 ? 2e3 : r2; s = s + (i = i + t2[n++] | 0) | 0, --a; ) - ; - i %= 65521, s %= 65521; - } - return i | s << 16 | 0; - }; - }, {}], 44: [function(e, t, r) { - "use strict"; - t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; - }, {}], 45: [function(e, t, r) { - "use strict"; - var o = function() { - for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { - e2 = r2; - for (var n = 0; n < 8; n++) - e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; - t2[r2] = e2; - } - return t2; - }(); - t.exports = function(e2, t2, r2, n) { - var i = o, s = n + r2; - e2 ^= -1; - for (var a = n; a < s; a++) - e2 = e2 >>> 8 ^ i[255 & (e2 ^ t2[a])]; - return -1 ^ e2; - }; - }, {}], 46: [function(e, t, r) { - "use strict"; - var h, c = e("../utils/common"), u = e("./trees"), d = e("./adler32"), p = e("./crc32"), n = e("./messages"), l = 0, f = 4, m = 0, _ = -2, g = -1, b = 4, i = 2, v = 8, y = 9, s = 286, a = 30, o = 19, w = 2 * s + 1, k = 15, x = 3, S = 258, z = S + x + 1, C = 42, E = 113, A = 1, I = 2, O = 3, B = 4; - function R(e2, t2) { - return e2.msg = n[t2], t2; - } - function T(e2) { - return (e2 << 1) - (4 < e2 ? 9 : 0); - } - function D(e2) { - for (var t2 = e2.length; 0 <= --t2; ) - e2[t2] = 0; - } - function F(e2) { - var t2 = e2.state, r2 = t2.pending; - r2 > e2.avail_out && (r2 = e2.avail_out), 0 !== r2 && (c.arraySet(e2.output, t2.pending_buf, t2.pending_out, r2, e2.next_out), e2.next_out += r2, t2.pending_out += r2, e2.total_out += r2, e2.avail_out -= r2, t2.pending -= r2, 0 === t2.pending && (t2.pending_out = 0)); - } - function N(e2, t2) { - u._tr_flush_block(e2, 0 <= e2.block_start ? e2.block_start : -1, e2.strstart - e2.block_start, t2), e2.block_start = e2.strstart, F(e2.strm); - } - function U(e2, t2) { - e2.pending_buf[e2.pending++] = t2; - } - function P(e2, t2) { - e2.pending_buf[e2.pending++] = t2 >>> 8 & 255, e2.pending_buf[e2.pending++] = 255 & t2; - } - function L(e2, t2) { - var r2, n2, i2 = e2.max_chain_length, s2 = e2.strstart, a2 = e2.prev_length, o2 = e2.nice_match, h2 = e2.strstart > e2.w_size - z ? e2.strstart - (e2.w_size - z) : 0, u2 = e2.window, l2 = e2.w_mask, f2 = e2.prev, c2 = e2.strstart + S, d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; - e2.prev_length >= e2.good_match && (i2 >>= 2), o2 > e2.lookahead && (o2 = e2.lookahead); - do { - if (u2[(r2 = t2) + a2] === p2 && u2[r2 + a2 - 1] === d2 && u2[r2] === u2[s2] && u2[++r2] === u2[s2 + 1]) { - s2 += 2, r2++; - do { - } while (u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && s2 < c2); - if (n2 = S - (c2 - s2), s2 = c2 - S, a2 < n2) { - if (e2.match_start = t2, o2 <= (a2 = n2)) - break; - d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; - } - } - } while ((t2 = f2[t2 & l2]) > h2 && 0 != --i2); - return a2 <= e2.lookahead ? a2 : e2.lookahead; - } - function j(e2) { - var t2, r2, n2, i2, s2, a2, o2, h2, u2, l2, f2 = e2.w_size; - do { - if (i2 = e2.window_size - e2.lookahead - e2.strstart, e2.strstart >= f2 + (f2 - z)) { - for (c.arraySet(e2.window, e2.window, f2, f2, 0), e2.match_start -= f2, e2.strstart -= f2, e2.block_start -= f2, t2 = r2 = e2.hash_size; n2 = e2.head[--t2], e2.head[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) - ; - for (t2 = r2 = f2; n2 = e2.prev[--t2], e2.prev[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) - ; - i2 += f2; - } - if (0 === e2.strm.avail_in) - break; - if (a2 = e2.strm, o2 = e2.window, h2 = e2.strstart + e2.lookahead, u2 = i2, l2 = void 0, l2 = a2.avail_in, u2 < l2 && (l2 = u2), r2 = 0 === l2 ? 0 : (a2.avail_in -= l2, c.arraySet(o2, a2.input, a2.next_in, l2, h2), 1 === a2.state.wrap ? a2.adler = d(a2.adler, o2, l2, h2) : 2 === a2.state.wrap && (a2.adler = p(a2.adler, o2, l2, h2)), a2.next_in += l2, a2.total_in += l2, l2), e2.lookahead += r2, e2.lookahead + e2.insert >= x) - for (s2 = e2.strstart - e2.insert, e2.ins_h = e2.window[s2], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + 1]) & e2.hash_mask; e2.insert && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + x - 1]) & e2.hash_mask, e2.prev[s2 & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = s2, s2++, e2.insert--, !(e2.lookahead + e2.insert < x)); ) - ; - } while (e2.lookahead < z && 0 !== e2.strm.avail_in); - } - function Z(e2, t2) { - for (var r2, n2; ; ) { - if (e2.lookahead < z) { - if (j(e2), e2.lookahead < z && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 !== r2 && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2)), e2.match_length >= x) - if (n2 = u._tr_tally(e2, e2.strstart - e2.match_start, e2.match_length - x), e2.lookahead -= e2.match_length, e2.match_length <= e2.max_lazy_match && e2.lookahead >= x) { - for (e2.match_length--; e2.strstart++, e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart, 0 != --e2.match_length; ) - ; - e2.strstart++; - } else - e2.strstart += e2.match_length, e2.match_length = 0, e2.ins_h = e2.window[e2.strstart], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + 1]) & e2.hash_mask; - else - n2 = u._tr_tally(e2, 0, e2.window[e2.strstart]), e2.lookahead--, e2.strstart++; - if (n2 && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } - return e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; - } - function W(e2, t2) { - for (var r2, n2, i2; ; ) { - if (e2.lookahead < z) { - if (j(e2), e2.lookahead < z && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), e2.prev_length = e2.match_length, e2.prev_match = e2.match_start, e2.match_length = x - 1, 0 !== r2 && e2.prev_length < e2.max_lazy_match && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2), e2.match_length <= 5 && (1 === e2.strategy || e2.match_length === x && 4096 < e2.strstart - e2.match_start) && (e2.match_length = x - 1)), e2.prev_length >= x && e2.match_length <= e2.prev_length) { - for (i2 = e2.strstart + e2.lookahead - x, n2 = u._tr_tally(e2, e2.strstart - 1 - e2.prev_match, e2.prev_length - x), e2.lookahead -= e2.prev_length - 1, e2.prev_length -= 2; ++e2.strstart <= i2 && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 != --e2.prev_length; ) - ; - if (e2.match_available = 0, e2.match_length = x - 1, e2.strstart++, n2 && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } else if (e2.match_available) { - if ((n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1])) && N(e2, false), e2.strstart++, e2.lookahead--, 0 === e2.strm.avail_out) - return A; - } else - e2.match_available = 1, e2.strstart++, e2.lookahead--; - } - return e2.match_available && (n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1]), e2.match_available = 0), e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; - } - function M(e2, t2, r2, n2, i2) { - this.good_length = e2, this.max_lazy = t2, this.nice_length = r2, this.max_chain = n2, this.func = i2; - } - function H() { - this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c.Buf16(2 * w), this.dyn_dtree = new c.Buf16(2 * (2 * a + 1)), this.bl_tree = new c.Buf16(2 * (2 * o + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c.Buf16(k + 1), this.heap = new c.Buf16(2 * s + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c.Buf16(2 * s + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; - } - function G(e2) { - var t2; - return e2 && e2.state ? (e2.total_in = e2.total_out = 0, e2.data_type = i, (t2 = e2.state).pending = 0, t2.pending_out = 0, t2.wrap < 0 && (t2.wrap = -t2.wrap), t2.status = t2.wrap ? C : E, e2.adler = 2 === t2.wrap ? 0 : 1, t2.last_flush = l, u._tr_init(t2), m) : R(e2, _); - } - function K(e2) { - var t2 = G(e2); - return t2 === m && function(e3) { - e3.window_size = 2 * e3.w_size, D(e3.head), e3.max_lazy_match = h[e3.level].max_lazy, e3.good_match = h[e3.level].good_length, e3.nice_match = h[e3.level].nice_length, e3.max_chain_length = h[e3.level].max_chain, e3.strstart = 0, e3.block_start = 0, e3.lookahead = 0, e3.insert = 0, e3.match_length = e3.prev_length = x - 1, e3.match_available = 0, e3.ins_h = 0; - }(e2.state), t2; - } - function Y(e2, t2, r2, n2, i2, s2) { - if (!e2) - return _; - var a2 = 1; - if (t2 === g && (t2 = 6), n2 < 0 ? (a2 = 0, n2 = -n2) : 15 < n2 && (a2 = 2, n2 -= 16), i2 < 1 || y < i2 || r2 !== v || n2 < 8 || 15 < n2 || t2 < 0 || 9 < t2 || s2 < 0 || b < s2) - return R(e2, _); - 8 === n2 && (n2 = 9); - var o2 = new H(); - return (e2.state = o2).strm = e2, o2.wrap = a2, o2.gzhead = null, o2.w_bits = n2, o2.w_size = 1 << o2.w_bits, o2.w_mask = o2.w_size - 1, o2.hash_bits = i2 + 7, o2.hash_size = 1 << o2.hash_bits, o2.hash_mask = o2.hash_size - 1, o2.hash_shift = ~~((o2.hash_bits + x - 1) / x), o2.window = new c.Buf8(2 * o2.w_size), o2.head = new c.Buf16(o2.hash_size), o2.prev = new c.Buf16(o2.w_size), o2.lit_bufsize = 1 << i2 + 6, o2.pending_buf_size = 4 * o2.lit_bufsize, o2.pending_buf = new c.Buf8(o2.pending_buf_size), o2.d_buf = 1 * o2.lit_bufsize, o2.l_buf = 3 * o2.lit_bufsize, o2.level = t2, o2.strategy = s2, o2.method = r2, K(e2); - } - h = [new M(0, 0, 0, 0, function(e2, t2) { - var r2 = 65535; - for (r2 > e2.pending_buf_size - 5 && (r2 = e2.pending_buf_size - 5); ; ) { - if (e2.lookahead <= 1) { - if (j(e2), 0 === e2.lookahead && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - e2.strstart += e2.lookahead, e2.lookahead = 0; - var n2 = e2.block_start + r2; - if ((0 === e2.strstart || e2.strstart >= n2) && (e2.lookahead = e2.strstart - n2, e2.strstart = n2, N(e2, false), 0 === e2.strm.avail_out)) - return A; - if (e2.strstart - e2.block_start >= e2.w_size - z && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } - return e2.insert = 0, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : (e2.strstart > e2.block_start && (N(e2, false), e2.strm.avail_out), A); - }), new M(4, 4, 8, 4, Z), new M(4, 5, 16, 8, Z), new M(4, 6, 32, 32, Z), new M(4, 4, 16, 16, W), new M(8, 16, 32, 32, W), new M(8, 16, 128, 128, W), new M(8, 32, 128, 256, W), new M(32, 128, 258, 1024, W), new M(32, 258, 258, 4096, W)], r.deflateInit = function(e2, t2) { - return Y(e2, t2, v, 15, 8, 0); - }, r.deflateInit2 = Y, r.deflateReset = K, r.deflateResetKeep = G, r.deflateSetHeader = function(e2, t2) { - return e2 && e2.state ? 2 !== e2.state.wrap ? _ : (e2.state.gzhead = t2, m) : _; - }, r.deflate = function(e2, t2) { - var r2, n2, i2, s2; - if (!e2 || !e2.state || 5 < t2 || t2 < 0) - return e2 ? R(e2, _) : _; - if (n2 = e2.state, !e2.output || !e2.input && 0 !== e2.avail_in || 666 === n2.status && t2 !== f) - return R(e2, 0 === e2.avail_out ? -5 : _); - if (n2.strm = e2, r2 = n2.last_flush, n2.last_flush = t2, n2.status === C) - if (2 === n2.wrap) - e2.adler = 0, U(n2, 31), U(n2, 139), U(n2, 8), n2.gzhead ? (U(n2, (n2.gzhead.text ? 1 : 0) + (n2.gzhead.hcrc ? 2 : 0) + (n2.gzhead.extra ? 4 : 0) + (n2.gzhead.name ? 8 : 0) + (n2.gzhead.comment ? 16 : 0)), U(n2, 255 & n2.gzhead.time), U(n2, n2.gzhead.time >> 8 & 255), U(n2, n2.gzhead.time >> 16 & 255), U(n2, n2.gzhead.time >> 24 & 255), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 255 & n2.gzhead.os), n2.gzhead.extra && n2.gzhead.extra.length && (U(n2, 255 & n2.gzhead.extra.length), U(n2, n2.gzhead.extra.length >> 8 & 255)), n2.gzhead.hcrc && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending, 0)), n2.gzindex = 0, n2.status = 69) : (U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 3), n2.status = E); - else { - var a2 = v + (n2.w_bits - 8 << 4) << 8; - a2 |= (2 <= n2.strategy || n2.level < 2 ? 0 : n2.level < 6 ? 1 : 6 === n2.level ? 2 : 3) << 6, 0 !== n2.strstart && (a2 |= 32), a2 += 31 - a2 % 31, n2.status = E, P(n2, a2), 0 !== n2.strstart && (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), e2.adler = 1; - } - if (69 === n2.status) - if (n2.gzhead.extra) { - for (i2 = n2.pending; n2.gzindex < (65535 & n2.gzhead.extra.length) && (n2.pending !== n2.pending_buf_size || (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending !== n2.pending_buf_size)); ) - U(n2, 255 & n2.gzhead.extra[n2.gzindex]), n2.gzindex++; - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), n2.gzindex === n2.gzhead.extra.length && (n2.gzindex = 0, n2.status = 73); - } else - n2.status = 73; - if (73 === n2.status) - if (n2.gzhead.name) { - i2 = n2.pending; - do { - if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { - s2 = 1; - break; - } - s2 = n2.gzindex < n2.gzhead.name.length ? 255 & n2.gzhead.name.charCodeAt(n2.gzindex++) : 0, U(n2, s2); - } while (0 !== s2); - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.gzindex = 0, n2.status = 91); - } else - n2.status = 91; - if (91 === n2.status) - if (n2.gzhead.comment) { - i2 = n2.pending; - do { - if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { - s2 = 1; - break; - } - s2 = n2.gzindex < n2.gzhead.comment.length ? 255 & n2.gzhead.comment.charCodeAt(n2.gzindex++) : 0, U(n2, s2); - } while (0 !== s2); - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.status = 103); - } else - n2.status = 103; - if (103 === n2.status && (n2.gzhead.hcrc ? (n2.pending + 2 > n2.pending_buf_size && F(e2), n2.pending + 2 <= n2.pending_buf_size && (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), e2.adler = 0, n2.status = E)) : n2.status = E), 0 !== n2.pending) { - if (F(e2), 0 === e2.avail_out) - return n2.last_flush = -1, m; - } else if (0 === e2.avail_in && T(t2) <= T(r2) && t2 !== f) - return R(e2, -5); - if (666 === n2.status && 0 !== e2.avail_in) - return R(e2, -5); - if (0 !== e2.avail_in || 0 !== n2.lookahead || t2 !== l && 666 !== n2.status) { - var o2 = 2 === n2.strategy ? function(e3, t3) { - for (var r3; ; ) { - if (0 === e3.lookahead && (j(e3), 0 === e3.lookahead)) { - if (t3 === l) - return A; - break; - } - if (e3.match_length = 0, r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++, r3 && (N(e3, false), 0 === e3.strm.avail_out)) - return A; - } - return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; - }(n2, t2) : 3 === n2.strategy ? function(e3, t3) { - for (var r3, n3, i3, s3, a3 = e3.window; ; ) { - if (e3.lookahead <= S) { - if (j(e3), e3.lookahead <= S && t3 === l) - return A; - if (0 === e3.lookahead) - break; - } - if (e3.match_length = 0, e3.lookahead >= x && 0 < e3.strstart && (n3 = a3[i3 = e3.strstart - 1]) === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3]) { - s3 = e3.strstart + S; - do { - } while (n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && i3 < s3); - e3.match_length = S - (s3 - i3), e3.match_length > e3.lookahead && (e3.match_length = e3.lookahead); - } - if (e3.match_length >= x ? (r3 = u._tr_tally(e3, 1, e3.match_length - x), e3.lookahead -= e3.match_length, e3.strstart += e3.match_length, e3.match_length = 0) : (r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++), r3 && (N(e3, false), 0 === e3.strm.avail_out)) - return A; - } - return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; - }(n2, t2) : h[n2.level].func(n2, t2); - if (o2 !== O && o2 !== B || (n2.status = 666), o2 === A || o2 === O) - return 0 === e2.avail_out && (n2.last_flush = -1), m; - if (o2 === I && (1 === t2 ? u._tr_align(n2) : 5 !== t2 && (u._tr_stored_block(n2, 0, 0, false), 3 === t2 && (D(n2.head), 0 === n2.lookahead && (n2.strstart = 0, n2.block_start = 0, n2.insert = 0))), F(e2), 0 === e2.avail_out)) - return n2.last_flush = -1, m; - } - return t2 !== f ? m : n2.wrap <= 0 ? 1 : (2 === n2.wrap ? (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), U(n2, e2.adler >> 16 & 255), U(n2, e2.adler >> 24 & 255), U(n2, 255 & e2.total_in), U(n2, e2.total_in >> 8 & 255), U(n2, e2.total_in >> 16 & 255), U(n2, e2.total_in >> 24 & 255)) : (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), F(e2), 0 < n2.wrap && (n2.wrap = -n2.wrap), 0 !== n2.pending ? m : 1); - }, r.deflateEnd = function(e2) { - var t2; - return e2 && e2.state ? (t2 = e2.state.status) !== C && 69 !== t2 && 73 !== t2 && 91 !== t2 && 103 !== t2 && t2 !== E && 666 !== t2 ? R(e2, _) : (e2.state = null, t2 === E ? R(e2, -3) : m) : _; - }, r.deflateSetDictionary = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h2, u2, l2 = t2.length; - if (!e2 || !e2.state) - return _; - if (2 === (s2 = (r2 = e2.state).wrap) || 1 === s2 && r2.status !== C || r2.lookahead) - return _; - for (1 === s2 && (e2.adler = d(e2.adler, t2, l2, 0)), r2.wrap = 0, l2 >= r2.w_size && (0 === s2 && (D(r2.head), r2.strstart = 0, r2.block_start = 0, r2.insert = 0), u2 = new c.Buf8(r2.w_size), c.arraySet(u2, t2, l2 - r2.w_size, r2.w_size, 0), t2 = u2, l2 = r2.w_size), a2 = e2.avail_in, o2 = e2.next_in, h2 = e2.input, e2.avail_in = l2, e2.next_in = 0, e2.input = t2, j(r2); r2.lookahead >= x; ) { - for (n2 = r2.strstart, i2 = r2.lookahead - (x - 1); r2.ins_h = (r2.ins_h << r2.hash_shift ^ r2.window[n2 + x - 1]) & r2.hash_mask, r2.prev[n2 & r2.w_mask] = r2.head[r2.ins_h], r2.head[r2.ins_h] = n2, n2++, --i2; ) - ; - r2.strstart = n2, r2.lookahead = x - 1, j(r2); - } - return r2.strstart += r2.lookahead, r2.block_start = r2.strstart, r2.insert = r2.lookahead, r2.lookahead = 0, r2.match_length = r2.prev_length = x - 1, r2.match_available = 0, e2.next_in = o2, e2.input = h2, e2.avail_in = a2, r2.wrap = s2, m; - }, r.deflateInfo = "pako deflate (from Nodeca project)"; - }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e, t, r) { - "use strict"; - t.exports = function() { - this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; - }; - }, {}], 48: [function(e, t, r) { - "use strict"; - t.exports = function(e2, t2) { - var r2, n, i, s, a, o, h, u, l, f, c, d, p, m, _, g, b, v, y, w, k, x, S, z, C; - r2 = e2.state, n = e2.next_in, z = e2.input, i = n + (e2.avail_in - 5), s = e2.next_out, C = e2.output, a = s - (t2 - e2.avail_out), o = s + (e2.avail_out - 257), h = r2.dmax, u = r2.wsize, l = r2.whave, f = r2.wnext, c = r2.window, d = r2.hold, p = r2.bits, m = r2.lencode, _ = r2.distcode, g = (1 << r2.lenbits) - 1, b = (1 << r2.distbits) - 1; - e: - do { - p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = m[d & g]; - t: - for (; ; ) { - if (d >>>= y = v >>> 24, p -= y, 0 === (y = v >>> 16 & 255)) - C[s++] = 65535 & v; - else { - if (!(16 & y)) { - if (0 == (64 & y)) { - v = m[(65535 & v) + (d & (1 << y) - 1)]; - continue t; - } - if (32 & y) { - r2.mode = 12; - break e; - } - e2.msg = "invalid literal/length code", r2.mode = 30; - break e; - } - w = 65535 & v, (y &= 15) && (p < y && (d += z[n++] << p, p += 8), w += d & (1 << y) - 1, d >>>= y, p -= y), p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = _[d & b]; - r: - for (; ; ) { - if (d >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) { - if (0 == (64 & y)) { - v = _[(65535 & v) + (d & (1 << y) - 1)]; - continue r; - } - e2.msg = "invalid distance code", r2.mode = 30; - break e; - } - if (k = 65535 & v, p < (y &= 15) && (d += z[n++] << p, (p += 8) < y && (d += z[n++] << p, p += 8)), h < (k += d & (1 << y) - 1)) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break e; - } - if (d >>>= y, p -= y, (y = s - a) < k) { - if (l < (y = k - y) && r2.sane) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break e; - } - if (S = c, (x = 0) === f) { - if (x += u - y, y < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - } else if (f < y) { - if (x += u + f - y, (y -= f) < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - if (x = 0, f < w) { - for (w -= y = f; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - } - } else if (x += f - y, y < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - for (; 2 < w; ) - C[s++] = S[x++], C[s++] = S[x++], C[s++] = S[x++], w -= 3; - w && (C[s++] = S[x++], 1 < w && (C[s++] = S[x++])); - } else { - for (x = s - k; C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], 2 < (w -= 3); ) - ; - w && (C[s++] = C[x++], 1 < w && (C[s++] = C[x++])); - } - break; - } - } - break; - } - } while (n < i && s < o); - n -= w = p >> 3, d &= (1 << (p -= w << 3)) - 1, e2.next_in = n, e2.next_out = s, e2.avail_in = n < i ? i - n + 5 : 5 - (n - i), e2.avail_out = s < o ? o - s + 257 : 257 - (s - o), r2.hold = d, r2.bits = p; - }; - }, {}], 49: [function(e, t, r) { - "use strict"; - var I = e("../utils/common"), O = e("./adler32"), B = e("./crc32"), R = e("./inffast"), T = e("./inftrees"), D = 1, F = 2, N = 0, U = -2, P = 1, n = 852, i = 592; - function L(e2) { - return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24); - } - function s() { - this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; - } - function a(e2) { - var t2; - return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = P, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new I.Buf32(n), t2.distcode = t2.distdyn = new I.Buf32(i), t2.sane = 1, t2.back = -1, N) : U; - } - function o(e2) { - var t2; - return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, a(e2)) : U; - } - function h(e2, t2) { - var r2, n2; - return e2 && e2.state ? (n2 = e2.state, t2 < 0 ? (r2 = 0, t2 = -t2) : (r2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? U : (null !== n2.window && n2.wbits !== t2 && (n2.window = null), n2.wrap = r2, n2.wbits = t2, o(e2))) : U; - } - function u(e2, t2) { - var r2, n2; - return e2 ? (n2 = new s(), (e2.state = n2).window = null, (r2 = h(e2, t2)) !== N && (e2.state = null), r2) : U; - } - var l, f, c = true; - function j(e2) { - if (c) { - var t2; - for (l = new I.Buf32(512), f = new I.Buf32(32), t2 = 0; t2 < 144; ) - e2.lens[t2++] = 8; - for (; t2 < 256; ) - e2.lens[t2++] = 9; - for (; t2 < 280; ) - e2.lens[t2++] = 7; - for (; t2 < 288; ) - e2.lens[t2++] = 8; - for (T(D, e2.lens, 0, 288, l, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; ) - e2.lens[t2++] = 5; - T(F, e2.lens, 0, 32, f, 0, e2.work, { bits: 5 }), c = false; - } - e2.lencode = l, e2.lenbits = 9, e2.distcode = f, e2.distbits = 5; - } - function Z(e2, t2, r2, n2) { - var i2, s2 = e2.state; - return null === s2.window && (s2.wsize = 1 << s2.wbits, s2.wnext = 0, s2.whave = 0, s2.window = new I.Buf8(s2.wsize)), n2 >= s2.wsize ? (I.arraySet(s2.window, t2, r2 - s2.wsize, s2.wsize, 0), s2.wnext = 0, s2.whave = s2.wsize) : (n2 < (i2 = s2.wsize - s2.wnext) && (i2 = n2), I.arraySet(s2.window, t2, r2 - n2, i2, s2.wnext), (n2 -= i2) ? (I.arraySet(s2.window, t2, r2 - n2, n2, 0), s2.wnext = n2, s2.whave = s2.wsize) : (s2.wnext += i2, s2.wnext === s2.wsize && (s2.wnext = 0), s2.whave < s2.wsize && (s2.whave += i2))), 0; - } - r.inflateReset = o, r.inflateReset2 = h, r.inflateResetKeep = a, r.inflateInit = function(e2) { - return u(e2, 15); - }, r.inflateInit2 = u, r.inflate = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h2, u2, l2, f2, c2, d, p, m, _, g, b, v, y, w, k, x, S, z, C = 0, E = new I.Buf8(4), A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in) - return U; - 12 === (r2 = e2.state).mode && (r2.mode = 13), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, f2 = o2, c2 = h2, x = N; - e: - for (; ; ) - switch (r2.mode) { - case P: - if (0 === r2.wrap) { - r2.mode = 13; - break; - } - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (2 & r2.wrap && 35615 === u2) { - E[r2.check = 0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0), l2 = u2 = 0, r2.mode = 2; - break; - } - if (r2.flags = 0, r2.head && (r2.head.done = false), !(1 & r2.wrap) || (((255 & u2) << 8) + (u2 >> 8)) % 31) { - e2.msg = "incorrect header check", r2.mode = 30; - break; - } - if (8 != (15 & u2)) { - e2.msg = "unknown compression method", r2.mode = 30; - break; - } - if (l2 -= 4, k = 8 + (15 & (u2 >>>= 4)), 0 === r2.wbits) - r2.wbits = k; - else if (k > r2.wbits) { - e2.msg = "invalid window size", r2.mode = 30; - break; - } - r2.dmax = 1 << k, e2.adler = r2.check = 1, r2.mode = 512 & u2 ? 10 : 12, l2 = u2 = 0; - break; - case 2: - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (r2.flags = u2, 8 != (255 & r2.flags)) { - e2.msg = "unknown compression method", r2.mode = 30; - break; - } - if (57344 & r2.flags) { - e2.msg = "unknown header flags set", r2.mode = 30; - break; - } - r2.head && (r2.head.text = u2 >> 8 & 1), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 3; - case 3: - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.head && (r2.head.time = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, E[2] = u2 >>> 16 & 255, E[3] = u2 >>> 24 & 255, r2.check = B(r2.check, E, 4, 0)), l2 = u2 = 0, r2.mode = 4; - case 4: - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.head && (r2.head.xflags = 255 & u2, r2.head.os = u2 >> 8), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 5; - case 5: - if (1024 & r2.flags) { - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.length = u2, r2.head && (r2.head.extra_len = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0; - } else - r2.head && (r2.head.extra = null); - r2.mode = 6; - case 6: - if (1024 & r2.flags && (o2 < (d = r2.length) && (d = o2), d && (r2.head && (k = r2.head.extra_len - r2.length, r2.head.extra || (r2.head.extra = new Array(r2.head.extra_len)), I.arraySet(r2.head.extra, n2, s2, d, k)), 512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, r2.length -= d), r2.length)) - break e; - r2.length = 0, r2.mode = 7; - case 7: - if (2048 & r2.flags) { - if (0 === o2) - break e; - for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.name += String.fromCharCode(k)), k && d < o2; ) - ; - if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) - break e; - } else - r2.head && (r2.head.name = null); - r2.length = 0, r2.mode = 8; - case 8: - if (4096 & r2.flags) { - if (0 === o2) - break e; - for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.comment += String.fromCharCode(k)), k && d < o2; ) - ; - if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) - break e; - } else - r2.head && (r2.head.comment = null); - r2.mode = 9; - case 9: - if (512 & r2.flags) { - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 !== (65535 & r2.check)) { - e2.msg = "header crc mismatch", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.head && (r2.head.hcrc = r2.flags >> 9 & 1, r2.head.done = true), e2.adler = r2.check = 0, r2.mode = 12; - break; - case 10: - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - e2.adler = r2.check = L(u2), l2 = u2 = 0, r2.mode = 11; - case 11: - if (0 === r2.havedict) - return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, 2; - e2.adler = r2.check = 1, r2.mode = 12; - case 12: - if (5 === t2 || 6 === t2) - break e; - case 13: - if (r2.last) { - u2 >>>= 7 & l2, l2 -= 7 & l2, r2.mode = 27; - break; - } - for (; l2 < 3; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - switch (r2.last = 1 & u2, l2 -= 1, 3 & (u2 >>>= 1)) { - case 0: - r2.mode = 14; - break; - case 1: - if (j(r2), r2.mode = 20, 6 !== t2) - break; - u2 >>>= 2, l2 -= 2; - break e; - case 2: - r2.mode = 17; - break; - case 3: - e2.msg = "invalid block type", r2.mode = 30; - } - u2 >>>= 2, l2 -= 2; - break; - case 14: - for (u2 >>>= 7 & l2, l2 -= 7 & l2; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if ((65535 & u2) != (u2 >>> 16 ^ 65535)) { - e2.msg = "invalid stored block lengths", r2.mode = 30; - break; - } - if (r2.length = 65535 & u2, l2 = u2 = 0, r2.mode = 15, 6 === t2) - break e; - case 15: - r2.mode = 16; - case 16: - if (d = r2.length) { - if (o2 < d && (d = o2), h2 < d && (d = h2), 0 === d) - break e; - I.arraySet(i2, n2, s2, d, a2), o2 -= d, s2 += d, h2 -= d, a2 += d, r2.length -= d; - break; - } - r2.mode = 12; - break; - case 17: - for (; l2 < 14; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (r2.nlen = 257 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ndist = 1 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ncode = 4 + (15 & u2), u2 >>>= 4, l2 -= 4, 286 < r2.nlen || 30 < r2.ndist) { - e2.msg = "too many length or distance symbols", r2.mode = 30; - break; - } - r2.have = 0, r2.mode = 18; - case 18: - for (; r2.have < r2.ncode; ) { - for (; l2 < 3; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.lens[A[r2.have++]] = 7 & u2, u2 >>>= 3, l2 -= 3; - } - for (; r2.have < 19; ) - r2.lens[A[r2.have++]] = 0; - if (r2.lencode = r2.lendyn, r2.lenbits = 7, S = { bits: r2.lenbits }, x = T(0, r2.lens, 0, 19, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { - e2.msg = "invalid code lengths set", r2.mode = 30; - break; - } - r2.have = 0, r2.mode = 19; - case 19: - for (; r2.have < r2.nlen + r2.ndist; ) { - for (; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (b < 16) - u2 >>>= _, l2 -= _, r2.lens[r2.have++] = b; - else { - if (16 === b) { - for (z = _ + 2; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 >>>= _, l2 -= _, 0 === r2.have) { - e2.msg = "invalid bit length repeat", r2.mode = 30; - break; - } - k = r2.lens[r2.have - 1], d = 3 + (3 & u2), u2 >>>= 2, l2 -= 2; - } else if (17 === b) { - for (z = _ + 3; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - l2 -= _, k = 0, d = 3 + (7 & (u2 >>>= _)), u2 >>>= 3, l2 -= 3; - } else { - for (z = _ + 7; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - l2 -= _, k = 0, d = 11 + (127 & (u2 >>>= _)), u2 >>>= 7, l2 -= 7; - } - if (r2.have + d > r2.nlen + r2.ndist) { - e2.msg = "invalid bit length repeat", r2.mode = 30; - break; - } - for (; d--; ) - r2.lens[r2.have++] = k; - } - } - if (30 === r2.mode) - break; - if (0 === r2.lens[256]) { - e2.msg = "invalid code -- missing end-of-block", r2.mode = 30; - break; - } - if (r2.lenbits = 9, S = { bits: r2.lenbits }, x = T(D, r2.lens, 0, r2.nlen, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { - e2.msg = "invalid literal/lengths set", r2.mode = 30; - break; - } - if (r2.distbits = 6, r2.distcode = r2.distdyn, S = { bits: r2.distbits }, x = T(F, r2.lens, r2.nlen, r2.ndist, r2.distcode, 0, r2.work, S), r2.distbits = S.bits, x) { - e2.msg = "invalid distances set", r2.mode = 30; - break; - } - if (r2.mode = 20, 6 === t2) - break e; - case 20: - r2.mode = 21; - case 21: - if (6 <= o2 && 258 <= h2) { - e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, R(e2, c2), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, 12 === r2.mode && (r2.back = -1); - break; - } - for (r2.back = 0; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (g && 0 == (240 & g)) { - for (v = _, y = g, w = b; g = (C = r2.lencode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - u2 >>>= v, l2 -= v, r2.back += v; - } - if (u2 >>>= _, l2 -= _, r2.back += _, r2.length = b, 0 === g) { - r2.mode = 26; - break; - } - if (32 & g) { - r2.back = -1, r2.mode = 12; - break; - } - if (64 & g) { - e2.msg = "invalid literal/length code", r2.mode = 30; - break; - } - r2.extra = 15 & g, r2.mode = 22; - case 22: - if (r2.extra) { - for (z = r2.extra; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.length += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; - } - r2.was = r2.length, r2.mode = 23; - case 23: - for (; g = (C = r2.distcode[u2 & (1 << r2.distbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (0 == (240 & g)) { - for (v = _, y = g, w = b; g = (C = r2.distcode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - u2 >>>= v, l2 -= v, r2.back += v; - } - if (u2 >>>= _, l2 -= _, r2.back += _, 64 & g) { - e2.msg = "invalid distance code", r2.mode = 30; - break; - } - r2.offset = b, r2.extra = 15 & g, r2.mode = 24; - case 24: - if (r2.extra) { - for (z = r2.extra; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.offset += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; - } - if (r2.offset > r2.dmax) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break; - } - r2.mode = 25; - case 25: - if (0 === h2) - break e; - if (d = c2 - h2, r2.offset > d) { - if ((d = r2.offset - d) > r2.whave && r2.sane) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break; - } - p = d > r2.wnext ? (d -= r2.wnext, r2.wsize - d) : r2.wnext - d, d > r2.length && (d = r2.length), m = r2.window; - } else - m = i2, p = a2 - r2.offset, d = r2.length; - for (h2 < d && (d = h2), h2 -= d, r2.length -= d; i2[a2++] = m[p++], --d; ) - ; - 0 === r2.length && (r2.mode = 21); - break; - case 26: - if (0 === h2) - break e; - i2[a2++] = r2.length, h2--, r2.mode = 21; - break; - case 27: - if (r2.wrap) { - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 |= n2[s2++] << l2, l2 += 8; - } - if (c2 -= h2, e2.total_out += c2, r2.total += c2, c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, a2 - c2) : O(r2.check, i2, c2, a2 - c2)), c2 = h2, (r2.flags ? u2 : L(u2)) !== r2.check) { - e2.msg = "incorrect data check", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.mode = 28; - case 28: - if (r2.wrap && r2.flags) { - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 !== (4294967295 & r2.total)) { - e2.msg = "incorrect length check", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.mode = 29; - case 29: - x = 1; - break e; - case 30: - x = -3; - break e; - case 31: - return -4; - case 32: - default: - return U; - } - return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, (r2.wsize || c2 !== e2.avail_out && r2.mode < 30 && (r2.mode < 27 || 4 !== t2)) && Z(e2, e2.output, e2.next_out, c2 - e2.avail_out) ? (r2.mode = 31, -4) : (f2 -= e2.avail_in, c2 -= e2.avail_out, e2.total_in += f2, e2.total_out += c2, r2.total += c2, r2.wrap && c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, e2.next_out - c2) : O(r2.check, i2, c2, e2.next_out - c2)), e2.data_type = r2.bits + (r2.last ? 64 : 0) + (12 === r2.mode ? 128 : 0) + (20 === r2.mode || 15 === r2.mode ? 256 : 0), (0 == f2 && 0 === c2 || 4 === t2) && x === N && (x = -5), x); - }, r.inflateEnd = function(e2) { - if (!e2 || !e2.state) - return U; - var t2 = e2.state; - return t2.window && (t2.window = null), e2.state = null, N; - }, r.inflateGetHeader = function(e2, t2) { - var r2; - return e2 && e2.state ? 0 == (2 & (r2 = e2.state).wrap) ? U : ((r2.head = t2).done = false, N) : U; - }, r.inflateSetDictionary = function(e2, t2) { - var r2, n2 = t2.length; - return e2 && e2.state ? 0 !== (r2 = e2.state).wrap && 11 !== r2.mode ? U : 11 === r2.mode && O(1, t2, n2, 0) !== r2.check ? -3 : Z(e2, t2, n2, n2) ? (r2.mode = 31, -4) : (r2.havedict = 1, N) : U; - }, r.inflateInfo = "pako inflate (from Nodeca project)"; - }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e, t, r) { - "use strict"; - var D = e("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; - t.exports = function(e2, t2, r2, n, i, s, a, o) { - var h, u, l, f, c, d, p, m, _, g = o.bits, b = 0, v = 0, y = 0, w = 0, k = 0, x = 0, S = 0, z = 0, C = 0, E = 0, A = null, I = 0, O = new D.Buf16(16), B = new D.Buf16(16), R = null, T = 0; - for (b = 0; b <= 15; b++) - O[b] = 0; - for (v = 0; v < n; v++) - O[t2[r2 + v]]++; - for (k = g, w = 15; 1 <= w && 0 === O[w]; w--) - ; - if (w < k && (k = w), 0 === w) - return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0; - for (y = 1; y < w && 0 === O[y]; y++) - ; - for (k < y && (k = y), b = z = 1; b <= 15; b++) - if (z <<= 1, (z -= O[b]) < 0) - return -1; - if (0 < z && (0 === e2 || 1 !== w)) - return -1; - for (B[1] = 0, b = 1; b < 15; b++) - B[b + 1] = B[b] + O[b]; - for (v = 0; v < n; v++) - 0 !== t2[r2 + v] && (a[B[t2[r2 + v]]++] = v); - if (d = 0 === e2 ? (A = R = a, 19) : 1 === e2 ? (A = F, I -= 257, R = N, T -= 257, 256) : (A = U, R = P, -1), b = y, c = s, S = v = E = 0, l = -1, f = (C = 1 << (x = k)) - 1, 1 === e2 && 852 < C || 2 === e2 && 592 < C) - return 1; - for (; ; ) { - for (p = b - S, _ = a[v] < d ? (m = 0, a[v]) : a[v] > d ? (m = R[T + a[v]], A[I + a[v]]) : (m = 96, 0), h = 1 << b - S, y = u = 1 << x; i[c + (E >> S) + (u -= h)] = p << 24 | m << 16 | _ | 0, 0 !== u; ) - ; - for (h = 1 << b - 1; E & h; ) - h >>= 1; - if (0 !== h ? (E &= h - 1, E += h) : E = 0, v++, 0 == --O[b]) { - if (b === w) - break; - b = t2[r2 + a[v]]; - } - if (k < b && (E & f) !== l) { - for (0 === S && (S = k), c += y, z = 1 << (x = b - S); x + S < w && !((z -= O[x + S]) <= 0); ) - x++, z <<= 1; - if (C += 1 << x, 1 === e2 && 852 < C || 2 === e2 && 592 < C) - return 1; - i[l = E & f] = k << 24 | x << 16 | c - s | 0; - } - } - return 0 !== E && (i[c + E] = b - S << 24 | 64 << 16 | 0), o.bits = k, 0; - }; - }, { "../utils/common": 41 }], 51: [function(e, t, r) { - "use strict"; - t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; - }, {}], 52: [function(e, t, r) { - "use strict"; - var i = e("../utils/common"), o = 0, h = 1; - function n(e2) { - for (var t2 = e2.length; 0 <= --t2; ) - e2[t2] = 0; - } - var s = 0, a = 29, u = 256, l = u + 1 + a, f = 30, c = 19, _ = 2 * l + 1, g = 15, d = 16, p = 7, m = 256, b = 16, v = 17, y = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z = new Array(2 * (l + 2)); - n(z); - var C = new Array(2 * f); - n(C); - var E = new Array(512); - n(E); - var A = new Array(256); - n(A); - var I = new Array(a); - n(I); - var O, B, R, T = new Array(f); - function D(e2, t2, r2, n2, i2) { - this.static_tree = e2, this.extra_bits = t2, this.extra_base = r2, this.elems = n2, this.max_length = i2, this.has_stree = e2 && e2.length; - } - function F(e2, t2) { - this.dyn_tree = e2, this.max_code = 0, this.stat_desc = t2; - } - function N(e2) { - return e2 < 256 ? E[e2] : E[256 + (e2 >>> 7)]; - } - function U(e2, t2) { - e2.pending_buf[e2.pending++] = 255 & t2, e2.pending_buf[e2.pending++] = t2 >>> 8 & 255; - } - function P(e2, t2, r2) { - e2.bi_valid > d - r2 ? (e2.bi_buf |= t2 << e2.bi_valid & 65535, U(e2, e2.bi_buf), e2.bi_buf = t2 >> d - e2.bi_valid, e2.bi_valid += r2 - d) : (e2.bi_buf |= t2 << e2.bi_valid & 65535, e2.bi_valid += r2); - } - function L(e2, t2, r2) { - P(e2, r2[2 * t2], r2[2 * t2 + 1]); - } - function j(e2, t2) { - for (var r2 = 0; r2 |= 1 & e2, e2 >>>= 1, r2 <<= 1, 0 < --t2; ) - ; - return r2 >>> 1; - } - function Z(e2, t2, r2) { - var n2, i2, s2 = new Array(g + 1), a2 = 0; - for (n2 = 1; n2 <= g; n2++) - s2[n2] = a2 = a2 + r2[n2 - 1] << 1; - for (i2 = 0; i2 <= t2; i2++) { - var o2 = e2[2 * i2 + 1]; - 0 !== o2 && (e2[2 * i2] = j(s2[o2]++, o2)); - } - } - function W(e2) { - var t2; - for (t2 = 0; t2 < l; t2++) - e2.dyn_ltree[2 * t2] = 0; - for (t2 = 0; t2 < f; t2++) - e2.dyn_dtree[2 * t2] = 0; - for (t2 = 0; t2 < c; t2++) - e2.bl_tree[2 * t2] = 0; - e2.dyn_ltree[2 * m] = 1, e2.opt_len = e2.static_len = 0, e2.last_lit = e2.matches = 0; - } - function M(e2) { - 8 < e2.bi_valid ? U(e2, e2.bi_buf) : 0 < e2.bi_valid && (e2.pending_buf[e2.pending++] = e2.bi_buf), e2.bi_buf = 0, e2.bi_valid = 0; - } - function H(e2, t2, r2, n2) { - var i2 = 2 * t2, s2 = 2 * r2; - return e2[i2] < e2[s2] || e2[i2] === e2[s2] && n2[t2] <= n2[r2]; - } - function G(e2, t2, r2) { - for (var n2 = e2.heap[r2], i2 = r2 << 1; i2 <= e2.heap_len && (i2 < e2.heap_len && H(t2, e2.heap[i2 + 1], e2.heap[i2], e2.depth) && i2++, !H(t2, n2, e2.heap[i2], e2.depth)); ) - e2.heap[r2] = e2.heap[i2], r2 = i2, i2 <<= 1; - e2.heap[r2] = n2; - } - function K(e2, t2, r2) { - var n2, i2, s2, a2, o2 = 0; - if (0 !== e2.last_lit) - for (; n2 = e2.pending_buf[e2.d_buf + 2 * o2] << 8 | e2.pending_buf[e2.d_buf + 2 * o2 + 1], i2 = e2.pending_buf[e2.l_buf + o2], o2++, 0 === n2 ? L(e2, i2, t2) : (L(e2, (s2 = A[i2]) + u + 1, t2), 0 !== (a2 = w[s2]) && P(e2, i2 -= I[s2], a2), L(e2, s2 = N(--n2), r2), 0 !== (a2 = k[s2]) && P(e2, n2 -= T[s2], a2)), o2 < e2.last_lit; ) - ; - L(e2, m, t2); - } - function Y(e2, t2) { - var r2, n2, i2, s2 = t2.dyn_tree, a2 = t2.stat_desc.static_tree, o2 = t2.stat_desc.has_stree, h2 = t2.stat_desc.elems, u2 = -1; - for (e2.heap_len = 0, e2.heap_max = _, r2 = 0; r2 < h2; r2++) - 0 !== s2[2 * r2] ? (e2.heap[++e2.heap_len] = u2 = r2, e2.depth[r2] = 0) : s2[2 * r2 + 1] = 0; - for (; e2.heap_len < 2; ) - s2[2 * (i2 = e2.heap[++e2.heap_len] = u2 < 2 ? ++u2 : 0)] = 1, e2.depth[i2] = 0, e2.opt_len--, o2 && (e2.static_len -= a2[2 * i2 + 1]); - for (t2.max_code = u2, r2 = e2.heap_len >> 1; 1 <= r2; r2--) - G(e2, s2, r2); - for (i2 = h2; r2 = e2.heap[1], e2.heap[1] = e2.heap[e2.heap_len--], G(e2, s2, 1), n2 = e2.heap[1], e2.heap[--e2.heap_max] = r2, e2.heap[--e2.heap_max] = n2, s2[2 * i2] = s2[2 * r2] + s2[2 * n2], e2.depth[i2] = (e2.depth[r2] >= e2.depth[n2] ? e2.depth[r2] : e2.depth[n2]) + 1, s2[2 * r2 + 1] = s2[2 * n2 + 1] = i2, e2.heap[1] = i2++, G(e2, s2, 1), 2 <= e2.heap_len; ) - ; - e2.heap[--e2.heap_max] = e2.heap[1], function(e3, t3) { - var r3, n3, i3, s3, a3, o3, h3 = t3.dyn_tree, u3 = t3.max_code, l2 = t3.stat_desc.static_tree, f2 = t3.stat_desc.has_stree, c2 = t3.stat_desc.extra_bits, d2 = t3.stat_desc.extra_base, p2 = t3.stat_desc.max_length, m2 = 0; - for (s3 = 0; s3 <= g; s3++) - e3.bl_count[s3] = 0; - for (h3[2 * e3.heap[e3.heap_max] + 1] = 0, r3 = e3.heap_max + 1; r3 < _; r3++) - p2 < (s3 = h3[2 * h3[2 * (n3 = e3.heap[r3]) + 1] + 1] + 1) && (s3 = p2, m2++), h3[2 * n3 + 1] = s3, u3 < n3 || (e3.bl_count[s3]++, a3 = 0, d2 <= n3 && (a3 = c2[n3 - d2]), o3 = h3[2 * n3], e3.opt_len += o3 * (s3 + a3), f2 && (e3.static_len += o3 * (l2[2 * n3 + 1] + a3))); - if (0 !== m2) { - do { - for (s3 = p2 - 1; 0 === e3.bl_count[s3]; ) - s3--; - e3.bl_count[s3]--, e3.bl_count[s3 + 1] += 2, e3.bl_count[p2]--, m2 -= 2; - } while (0 < m2); - for (s3 = p2; 0 !== s3; s3--) - for (n3 = e3.bl_count[s3]; 0 !== n3; ) - u3 < (i3 = e3.heap[--r3]) || (h3[2 * i3 + 1] !== s3 && (e3.opt_len += (s3 - h3[2 * i3 + 1]) * h3[2 * i3], h3[2 * i3 + 1] = s3), n3--); - } - }(e2, t2), Z(s2, u2, e2.bl_count); - } - function X(e2, t2, r2) { - var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; - for (0 === a2 && (h2 = 138, u2 = 3), t2[2 * (r2 + 1) + 1] = 65535, n2 = 0; n2 <= r2; n2++) - i2 = a2, a2 = t2[2 * (n2 + 1) + 1], ++o2 < h2 && i2 === a2 || (o2 < u2 ? e2.bl_tree[2 * i2] += o2 : 0 !== i2 ? (i2 !== s2 && e2.bl_tree[2 * i2]++, e2.bl_tree[2 * b]++) : o2 <= 10 ? e2.bl_tree[2 * v]++ : e2.bl_tree[2 * y]++, s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4)); - } - function V(e2, t2, r2) { - var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; - for (0 === a2 && (h2 = 138, u2 = 3), n2 = 0; n2 <= r2; n2++) - if (i2 = a2, a2 = t2[2 * (n2 + 1) + 1], !(++o2 < h2 && i2 === a2)) { - if (o2 < u2) - for (; L(e2, i2, e2.bl_tree), 0 != --o2; ) - ; - else - 0 !== i2 ? (i2 !== s2 && (L(e2, i2, e2.bl_tree), o2--), L(e2, b, e2.bl_tree), P(e2, o2 - 3, 2)) : o2 <= 10 ? (L(e2, v, e2.bl_tree), P(e2, o2 - 3, 3)) : (L(e2, y, e2.bl_tree), P(e2, o2 - 11, 7)); - s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4); - } - } - n(T); - var q = false; - function J(e2, t2, r2, n2) { - P(e2, (s << 1) + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { - M(e3), n3 && (U(e3, r3), U(e3, ~r3)), i.arraySet(e3.pending_buf, e3.window, t3, r3, e3.pending), e3.pending += r3; - }(e2, t2, r2, true); - } - r._tr_init = function(e2) { - q || (function() { - var e3, t2, r2, n2, i2, s2 = new Array(g + 1); - for (n2 = r2 = 0; n2 < a - 1; n2++) - for (I[n2] = r2, e3 = 0; e3 < 1 << w[n2]; e3++) - A[r2++] = n2; - for (A[r2 - 1] = n2, n2 = i2 = 0; n2 < 16; n2++) - for (T[n2] = i2, e3 = 0; e3 < 1 << k[n2]; e3++) - E[i2++] = n2; - for (i2 >>= 7; n2 < f; n2++) - for (T[n2] = i2 << 7, e3 = 0; e3 < 1 << k[n2] - 7; e3++) - E[256 + i2++] = n2; - for (t2 = 0; t2 <= g; t2++) - s2[t2] = 0; - for (e3 = 0; e3 <= 143; ) - z[2 * e3 + 1] = 8, e3++, s2[8]++; - for (; e3 <= 255; ) - z[2 * e3 + 1] = 9, e3++, s2[9]++; - for (; e3 <= 279; ) - z[2 * e3 + 1] = 7, e3++, s2[7]++; - for (; e3 <= 287; ) - z[2 * e3 + 1] = 8, e3++, s2[8]++; - for (Z(z, l + 1, s2), e3 = 0; e3 < f; e3++) - C[2 * e3 + 1] = 5, C[2 * e3] = j(e3, 5); - O = new D(z, w, u + 1, l, g), B = new D(C, k, 0, f, g), R = new D(new Array(0), x, 0, c, p); - }(), q = true), e2.l_desc = new F(e2.dyn_ltree, O), e2.d_desc = new F(e2.dyn_dtree, B), e2.bl_desc = new F(e2.bl_tree, R), e2.bi_buf = 0, e2.bi_valid = 0, W(e2); - }, r._tr_stored_block = J, r._tr_flush_block = function(e2, t2, r2, n2) { - var i2, s2, a2 = 0; - 0 < e2.level ? (2 === e2.strm.data_type && (e2.strm.data_type = function(e3) { - var t3, r3 = 4093624447; - for (t3 = 0; t3 <= 31; t3++, r3 >>>= 1) - if (1 & r3 && 0 !== e3.dyn_ltree[2 * t3]) - return o; - if (0 !== e3.dyn_ltree[18] || 0 !== e3.dyn_ltree[20] || 0 !== e3.dyn_ltree[26]) - return h; - for (t3 = 32; t3 < u; t3++) - if (0 !== e3.dyn_ltree[2 * t3]) - return h; - return o; - }(e2)), Y(e2, e2.l_desc), Y(e2, e2.d_desc), a2 = function(e3) { - var t3; - for (X(e3, e3.dyn_ltree, e3.l_desc.max_code), X(e3, e3.dyn_dtree, e3.d_desc.max_code), Y(e3, e3.bl_desc), t3 = c - 1; 3 <= t3 && 0 === e3.bl_tree[2 * S[t3] + 1]; t3--) - ; - return e3.opt_len += 3 * (t3 + 1) + 5 + 5 + 4, t3; - }(e2), i2 = e2.opt_len + 3 + 7 >>> 3, (s2 = e2.static_len + 3 + 7 >>> 3) <= i2 && (i2 = s2)) : i2 = s2 = r2 + 5, r2 + 4 <= i2 && -1 !== t2 ? J(e2, t2, r2, n2) : 4 === e2.strategy || s2 === i2 ? (P(e2, 2 + (n2 ? 1 : 0), 3), K(e2, z, C)) : (P(e2, 4 + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { - var i3; - for (P(e3, t3 - 257, 5), P(e3, r3 - 1, 5), P(e3, n3 - 4, 4), i3 = 0; i3 < n3; i3++) - P(e3, e3.bl_tree[2 * S[i3] + 1], 3); - V(e3, e3.dyn_ltree, t3 - 1), V(e3, e3.dyn_dtree, r3 - 1); - }(e2, e2.l_desc.max_code + 1, e2.d_desc.max_code + 1, a2 + 1), K(e2, e2.dyn_ltree, e2.dyn_dtree)), W(e2), n2 && M(e2); - }, r._tr_tally = function(e2, t2, r2) { - return e2.pending_buf[e2.d_buf + 2 * e2.last_lit] = t2 >>> 8 & 255, e2.pending_buf[e2.d_buf + 2 * e2.last_lit + 1] = 255 & t2, e2.pending_buf[e2.l_buf + e2.last_lit] = 255 & r2, e2.last_lit++, 0 === t2 ? e2.dyn_ltree[2 * r2]++ : (e2.matches++, t2--, e2.dyn_ltree[2 * (A[r2] + u + 1)]++, e2.dyn_dtree[2 * N(t2)]++), e2.last_lit === e2.lit_bufsize - 1; - }, r._tr_align = function(e2) { - P(e2, 2, 3), L(e2, m, z), function(e3) { - 16 === e3.bi_valid ? (U(e3, e3.bi_buf), e3.bi_buf = 0, e3.bi_valid = 0) : 8 <= e3.bi_valid && (e3.pending_buf[e3.pending++] = 255 & e3.bi_buf, e3.bi_buf >>= 8, e3.bi_valid -= 8); - }(e2); - }; - }, { "../utils/common": 41 }], 53: [function(e, t, r) { - "use strict"; - t.exports = function() { - this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; - }; - }, {}], 54: [function(e, t, r) { - (function(e2) { - !function(r2, n) { - "use strict"; - if (!r2.setImmediate) { - var i, s, t2, a, o = 1, h = {}, u = false, l = r2.document, e3 = Object.getPrototypeOf && Object.getPrototypeOf(r2); - e3 = e3 && e3.setTimeout ? e3 : r2, i = "[object process]" === {}.toString.call(r2.process) ? function(e4) { - process.nextTick(function() { - c(e4); - }); - } : function() { - if (r2.postMessage && !r2.importScripts) { - var e4 = true, t3 = r2.onmessage; - return r2.onmessage = function() { - e4 = false; - }, r2.postMessage("", "*"), r2.onmessage = t3, e4; - } - }() ? (a = "setImmediate$" + Math.random() + "$", r2.addEventListener ? r2.addEventListener("message", d, false) : r2.attachEvent("onmessage", d), function(e4) { - r2.postMessage(a + e4, "*"); - }) : r2.MessageChannel ? ((t2 = new MessageChannel()).port1.onmessage = function(e4) { - c(e4.data); - }, function(e4) { - t2.port2.postMessage(e4); - }) : l && "onreadystatechange" in l.createElement("script") ? (s = l.documentElement, function(e4) { - var t3 = l.createElement("script"); - t3.onreadystatechange = function() { - c(e4), t3.onreadystatechange = null, s.removeChild(t3), t3 = null; - }, s.appendChild(t3); - }) : function(e4) { - setTimeout(c, 0, e4); - }, e3.setImmediate = function(e4) { - "function" != typeof e4 && (e4 = new Function("" + e4)); - for (var t3 = new Array(arguments.length - 1), r3 = 0; r3 < t3.length; r3++) - t3[r3] = arguments[r3 + 1]; - var n2 = { callback: e4, args: t3 }; - return h[o] = n2, i(o), o++; - }, e3.clearImmediate = f; - } - function f(e4) { - delete h[e4]; - } - function c(e4) { - if (u) - setTimeout(c, 0, e4); - else { - var t3 = h[e4]; - if (t3) { - u = true; - try { - !function(e5) { - var t4 = e5.callback, r3 = e5.args; - switch (r3.length) { - case 0: - t4(); - break; - case 1: - t4(r3[0]); - break; - case 2: - t4(r3[0], r3[1]); - break; - case 3: - t4(r3[0], r3[1], r3[2]); - break; - default: - t4.apply(n, r3); - } - }(t3); - } finally { - f(e4), u = false; - } - } - } - } - function d(e4) { - e4.source === r2 && "string" == typeof e4.data && 0 === e4.data.indexOf(a) && c(+e4.data.slice(a.length)); - } - }("undefined" == typeof self ? void 0 === e2 ? this : e2 : self); - }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); - }, {}] }, {}, [10])(10); - }); - } - }); - - // ../components/smart-camera-web.js - var VERSION = "1.0.2"; - var DEFAULT_NO_OF_LIVENESS_FRAMES = 8; - var PORTRAIT_ID_PREVIEW_WIDTH = 396; - var PORTRAIT_ID_PREVIEW_HEIGHT = 527; - function isSamsungMultiCameraDevice() { - const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\d{3}/); - if (!matchedModelNumber) { - return false; - } - const modelNumber = parseInt(matchedModelNumber[0].match(/\d{3}/)[0], 10); - const smallerModelNumber = 970; - return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber; - } - function getLivenessFramesIndices(totalNoOfFrames, numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES) { - const selectedFrames = []; - if (totalNoOfFrames < numberOfFramesRequired) { - throw new Error("SmartCameraWeb: Minimum required no of frames is ", numberOfFramesRequired); - } - const frameDivisor = numberOfFramesRequired - 1; - const frameInterval = Math.floor(totalNoOfFrames / frameDivisor); - let replacementFrameIndex = 1; - for (let i = 0; i < totalNoOfFrames; i += frameInterval) { - if (selectedFrames.length < 8) { - selectedFrames.push(i); - } else { - selectedFrames[replacementFrameIndex] = i; - selectedFrames.sort((a, b) => a - b); - replacementFrameIndex += 1; - } - } - const lastFrameIndex = totalNoOfFrames - 1; - if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) { - selectedFrames.push(lastFrameIndex); - } - return selectedFrames; - } - var SmartFileUpload = class _SmartFileUpload { - static memoryLimit = 1024e4; - static supportedTypes = ["image/jpeg", "image/png"]; - static getHumanSize(numberOfBytes) { - const units = [ - "B", - "kB", - "MB", - "GB", - "TB", - "PB", - "EB", - "ZB", - "YB" - ]; - const exponent = Math.min( - Math.floor(Math.log(numberOfBytes) / Math.log(1024)), - units.length - 1 - ); - const approx = numberOfBytes / 1024 ** exponent; - const output = exponent === 0 ? `${numberOfBytes} bytes` : `${approx.toFixed(0)} ${units[exponent]}`; - return output; - } - static getData(file) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = (e) => { - resolve(e.target.result); - }; - reader.onerror = () => { - reject(new Error("An error occurred reading the file. Please check the file, and try again")); - }; - reader.readAsDataURL(file); - }); - } - static async retrieve(files) { - if (files.length > 1) { - throw new Error("Only one file upload is permitted at a time"); - } - const file = files[0]; - if (!_SmartFileUpload.supportedTypes.includes(file.type)) { - throw new Error("Unsupported file format. Please ensure that you are providing a JPG or PNG image"); - } - if (file.size > _SmartFileUpload.memoryLimit) { - throw new Error(`${file.name} is too large. Please ensure that the file is less than ${_SmartFileUpload.getHumanSize(_SmartFileUpload.memoryLimit)}.`); - } - const imageAsDataUrl = await _SmartFileUpload.getData(file); - return imageAsDataUrl; - } - }; - function scwTemplateString() { - return ` - - - - - - - - - - - - - - - -
-

-

-
- -
- ${this.showNavigation ? ` - - ` : ""} -
-

- We need access to your camera so that we can take selfie and proof-of-life images. -

- - - - ${this.hideAttribution ? "" : ` - - `} -
-
- - - - - - - - - - - - - - - - - - - - - - `; - } - var PoweredBySmileId = class extends HTMLElement { - constructor() { - super(); - const template = document.createElement("template"); - template.innerHTML = ` -

- - - - - - - - - - - - - - - - - - - -

- `; - this.attachShadow({ mode: "open" }).appendChild(template.content.cloneNode(true)); - } - }; - function hasMoreThanNColors(data, n = 16) { - const colors = /* @__PURE__ */ new Set(); - for (let i = 0; i < Math.min(data.length, 1e4); i += 4) { - colors.add(data[i] << 16 | data[i + 1] << 8 | data[i + 2]); - if (colors.size > n) { - return true; - } - } - return false; - } - window.customElements.define("powered-by-smile-id", PoweredBySmileId); - var SmartCameraWeb = class extends HTMLElement { - constructor() { - super(); - this.scwTemplateString = scwTemplateString.bind(this); - this.render = () => this.scwTemplateString(); - this.attachShadow({ mode: "open" }); - this.activeScreen = null; - } - setActiveScreen(element) { - this.activeScreen.hidden = true; - element.hidden = false; - this.activeScreen = element; - } - connectedCallback() { - this.shadowRoot.innerHTML = this.render(); - if ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices) { - this.setUpEventListeners(); - } else { - const heading = document.createElement("h1"); - heading.classList.add("error-message"); - heading.textContent = "Your browser does not support this integration"; - this.shadowRoot.innerHTML = heading; - } - } - disconnectedCallback() { - if (this.activeScreen) { - this.activeScreen.hidden = true; - } - this.activeScreen = null; - this.shadowRoot.innerHTML = ""; - } - static get observedAttributes() { - return ["document-capture-modes", "document-type", "hide-back-to-host", "show-navigation"]; - } - attributeChangedCallback(name) { - switch (name) { - case "document-capture-modes": - case "document-type": - case "hide-back-to-host": - case "show-navigation": - this.shadowRoot.innerHTML = this.render(); - this.setUpEventListeners(); - break; - default: - break; - } - } - setUpEventListeners() { - this.errorMessage = this.shadowRoot.querySelector("#error"); - this.requestScreen = this.shadowRoot.querySelector("#request-screen"); - this.activeScreen = this.requestScreen; - this.cameraScreen = this.shadowRoot.querySelector("#camera-screen"); - this.failedImageTestScreen = this.shadowRoot.querySelector("#failed-image-test-screen"); - this.reviewScreen = this.shadowRoot.querySelector("#review-screen"); - this.idEntryScreen = this.shadowRoot.querySelector("#id-entry-screen"); - this.IDCameraScreen = this.shadowRoot.querySelector("#id-camera-screen"); - this.IDReviewScreen = this.shadowRoot.querySelector("#id-review-screen"); - this.backOfIdEntryScreen = this.shadowRoot.querySelector("#back-of-id-entry-screen"); - this.backOfIDCameraScreen = this.shadowRoot.querySelector("#back-of-id-camera-screen"); - this.backOfIDReviewScreen = this.shadowRoot.querySelector("#back-of-id-review-screen"); - this.thanksScreen = this.shadowRoot.querySelector("#thanks-screen"); - this.videoContainer = this.shadowRoot.querySelector(".video-container > .video"); - this.smileCTA = this.shadowRoot.querySelector("#smile-cta"); - this.imageOutline = this.shadowRoot.querySelector("#image-outline path"); - this.startImageCapture = this.shadowRoot.querySelector("#start-image-capture"); - this.captureIDImage = this.shadowRoot.querySelector("#capture-id-image"); - this.captureBackOfIDImage = this.shadowRoot.querySelector("#capture-back-of-id-image"); - this.reviewImage = this.shadowRoot.querySelector("#review-image"); - this.IDReviewImage = this.shadowRoot.querySelector("#id-review-image"); - this.backOfIDReviewImage = this.shadowRoot.querySelector("#back-of-id-review-image"); - this.reStartImageCapture = this.shadowRoot.querySelector("#restart-image-capture"); - this.reCaptureIDImage = this.shadowRoot.querySelector("#re-capture-id-image"); - this.reCaptureBackOfIDImage = this.shadowRoot.querySelector("#re-capture-back-of-id-image"); - this.selectSelfie = this.shadowRoot.querySelector("#select-selfie"); - this.selectIDImage = this.shadowRoot.querySelector("#select-id-image"); - this.selectBackOfIDImage = this.shadowRoot.querySelector("#select-back-of-id-image"); - this.takeDocumentPhotoButton = this.idEntryScreen.querySelector("#take-photo"); - this.uploadDocumentPhotoButton = this.idEntryScreen.querySelector("#upload-photo"); - this.skipBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#skip-this-step"); - this.takeBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#take-photo"); - this.uploadBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#upload-photo"); - this.shadowRoot.querySelector("#request-camera-access").addEventListener("click", () => this.init()); - if (this.showNavigation) { - const backButtons = this.shadowRoot.querySelectorAll(".back-button-exit"); - backButtons.forEach((button) => { - button.addEventListener("click", () => { - this._backAndExit(); - }); - }); - const closeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - closeButtons.forEach((button) => { - button.addEventListener("click", () => { - this._exitSmartCamera(); - }); - }); - } - if (this.takeDocumentPhotoButton) - this.takeDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); - if (this.skipBackOfDocumentPhotoButton) - this.skipBackOfDocumentPhotoButton.addEventListener("click", () => this._skipBackDocument()); - if (this.takeBackOfDocumentPhotoButton) - this.takeBackOfDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); - if (this.uploadDocumentPhotoButton) - this.uploadDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); - if (this.uploadBackOfDocumentPhotoButton) - this.uploadBackOfDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); - this.backToSelfie = this.shadowRoot.querySelector("#back-button-selfie"); - this.backToIdEntryButton = this.shadowRoot.querySelector("#back-button-id-entry"); - this.backToBackIdEntryButton = this.shadowRoot.querySelector("#back-button-back-id-entry"); - this.backToIdImageButton = this.shadowRoot.querySelector("#back-button-id-image"); - if (this.backToSelfie) { - this.backToSelfie.addEventListener("click", () => { - this._reStartImageCapture(); - }); - } - if (this.backToIdEntryButton) { - this.backToIdEntryButton.addEventListener("click", () => { - this.setActiveScreen(this.idEntryScreen); - }); - } - if (this.backToBackIdEntryButton) { - this.backToBackIdEntryButton.addEventListener("click", () => { - this.setActiveScreen(this.backOfIdEntryScreen); - }); - } - if (this.backToIdImageButton) { - this.backToIdImageButton.addEventListener("click", () => { - this.setActiveScreen(this.IDReviewScreen); - }); - } - this.startImageCapture.addEventListener("click", () => { - this._startImageCapture(); - }); - this.selectSelfie.addEventListener("click", () => { - this._selectSelfie(); - }); - this.selectIDImage.addEventListener("click", () => { - this._selectIDImage(); - }); - this.selectBackOfIDImage.addEventListener("click", () => { - this._selectIDImage(true); - }); - this.captureIDImage.addEventListener("click", () => { - this._captureIDImage(); - }); - this.captureBackOfIDImage.addEventListener("click", () => { - this._captureIDImage(); - }); - this.reStartImageCapture.addEventListener("click", () => { - this._reStartImageCapture(); - }); - this.reCaptureIDImage.addEventListener("click", () => { - this._reCaptureIDImage(); - }); - this.reCaptureBackOfIDImage.addEventListener("click", () => { - this._reCaptureIDImage(); - }); - } - init() { - this._videoStreamDurationInMS = 7800; - this._imageCaptureIntervalInMS = 200; - this._data = { - images: [], - partner_params: { - libraryVersion: VERSION, - permissionGranted: false - } - }; - this._rawImages = []; - navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { - this.handleSuccess(stream); - }).catch((e) => { - this.handleError(e); - }); - } - reset() { - this.disconnectedCallback(); - this.connectedCallback(); - } - resetErrorMessage() { - this.errorMessage.textContent = ""; - } - handleSuccess(stream) { - const videoExists = !!this.videoContainer.querySelector("video"); - const video = videoExists ? this.videoContainer.querySelector("video") : document.createElement("video"); - video.autoplay = true; - video.playsInline = true; - video.muted = true; - if ("srcObject" in video) { - video.srcObject = stream; - } else { - video.src = window.URL.createObjectURL(stream); - } - video.play(); - if (!videoExists) - this.videoContainer.prepend(video); - this._data.partner_params.permissionGranted = true; - this.setActiveScreen(this.cameraScreen); - this._stream = stream; - this._video = video; - } - handleIDStream(stream) { - const videoExists = this.activeScreen === this.IDCameraScreen ? !!this.IDCameraScreen.querySelector("video") : !!this.backOfIDCameraScreen.querySelector("video"); - let video = null; - if (videoExists) { - if (this.activeScreen === this.IDCameraScreen) { - video = this.IDCameraScreen.querySelector("video"); - } else { - video = this.backOfIDCameraScreen.querySelector("video"); - } - } else { - video = document.createElement("video"); - } - video.autoplay = true; - video.playsInline = true; - video.muted = true; - if ("srcObject" in video) { - video.srcObject = stream; - } else { - video.src = window.URL.createObjectURL(stream); - } - video.play(); - const videoContainer = this.activeScreen === this.IDCameraScreen ? this.IDCameraScreen.querySelector(".id-video-container") : this.backOfIDCameraScreen.querySelector(".id-video-container"); - video.onloadedmetadata = () => { - videoContainer.querySelector(".actions").hidden = false; - }; - if (!videoExists) { - videoContainer.prepend(video); - } - this._IDStream = stream; - this._IDVideo = video; - } - handleError(e) { - switch (e.name) { - case "NotAllowedError": - case "SecurityError": - this.errorMessage.textContent = ` - Looks like camera access was not granted, or was blocked by a browser - level setting / extension. Please follow the prompt from the URL bar, - or extensions, and enable access. - You may need to refresh to start all over again - `; - break; - case "AbortError": - this.errorMessage.textContent = ` - Oops! Something happened, and we lost access to your stream. - Please refresh to start all over again - `; - break; - case "NotReadableError": - this.errorMessage.textContent = ` - There seems to be a problem with your device's camera, or its connection. - Please check this, and when resolved, try again. Or try another device. - `; - break; - case "NotFoundError": - this.errorMessage.textContent = ` - We are unable to find a video stream. - You may need to refresh to start all over again - `; - break; - case "TypeError": - this.errorMessage.textContent = ` - This site is insecure, and as such cannot have access to your camera. - Try to navigate to a secure version of this page, or contact the owner. - `; - break; - default: - this.errorMessage.textContent = e.message; - } - } - _startImageCapture() { - this.startImageCapture.disabled = true; - const imageOutlineLength = this.imageOutline.getTotalLength(); - this.imageOutline.style.transition = "none"; - this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`; - this.imageOutline.style.strokeDashoffset = imageOutlineLength; - this.imageOutline.getBoundingClientRect(); - this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1e3}s ease-in-out`; - this.imageOutline.style.strokeDashoffset = "0"; - this.smileCTA.style.animation = `fadeInOut ease ${this._videoStreamDurationInMS / 1e3}s`; - this._imageCaptureInterval = setInterval(() => { - this._capturePOLPhoto(); - }, this._imageCaptureIntervalInMS); - this._videoStreamTimeout = setTimeout(() => { - this._stopVideoStream(this._stream); - }, this._videoStreamDurationInMS); - } - _captureIDImage() { - const image = this._drawIDImage(); - if (this.activeScreen === this.IDCameraScreen) { - this.IDReviewImage.src = image; - } else { - this.backOfIDReviewImage.src = image; - } - this._data.images.push({ - image: image.split(",")[1], - image_type_id: this.activeScreen === this.IDCameraScreen ? 3 : 7 - }); - this._stopIDVideoStream(); - if (this.activeScreen === this.IDCameraScreen) { - this.setActiveScreen(this.IDReviewScreen); - } else { - this.setActiveScreen(this.backOfIDReviewScreen); - } - } - _drawImage(canvas, enableImageTests = true, video = this._video) { - this.resetErrorMessage(); - const context = canvas.getContext("2d"); - context.drawImage( - video, - 0, - 0, - video.videoWidth, - video.videoHeight, - 0, - 0, - canvas.width, - canvas.height - ); - if (enableImageTests) { - const imageData = context.getImageData(0, 0, canvas.width, canvas.height); - const hasEnoughColors = hasMoreThanNColors(imageData.data); - if (hasEnoughColors) { - return context; - } - throw new Error("Unable to capture webcam images - Please try another device"); - } else { - return context; - } - } - _capturePOLPhoto() { - const canvas = document.createElement("canvas"); - canvas.width = 240; - canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; - this._drawImage(canvas, false); - this._rawImages.push(canvas.toDataURL("image/jpeg")); - } - _captureReferencePhoto() { - const canvas = document.createElement("canvas"); - canvas.width = 480; - canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; - this._drawImage(canvas, !this.disableImageTests); - const image = canvas.toDataURL("image/jpeg"); - this._referenceImage = image; - this._data.images.push({ - image: image.split(",")[1], - image_type_id: 2 - }); - } - _skipBackDocument() { - this._publishSelectedImages(); - } - async _uploadDocument(event) { - this.resetErrorMessage(); - try { - const { files } = event.target; - const fileData = await SmartFileUpload.retrieve(files); - this._data.images.push({ - // NOTE: data URLs start with a file type before the base64 data, - // separated by a comma. - // - // we are only interested in the base64 segment, so we extract it - image: fileData.split(",")[1], - image_type_id: this.activeScreen === this.idEntryScreen ? 3 : 7 - }); - const nextScreen = this.activeScreen === this.idEntryScreen ? this.IDReviewScreen : this.backOfIDReviewScreen; - const previewImage = nextScreen.querySelector("img"); - previewImage.src = fileData; - this.setActiveScreen(nextScreen); - } catch (error) { - this.handleError(error); - } - } - _drawIDImage(video = this._IDVideo) { - const canvas = document.createElement("canvas"); - if (this.isPortraitCaptureView) { - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - const ctx = canvas.getContext("2d"); - ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - const previewWidth = PORTRAIT_ID_PREVIEW_WIDTH; - const previewHeight = PORTRAIT_ID_PREVIEW_HEIGHT; - const paddingPercent = 0.5; - const paddedWidth = previewWidth * (1 + paddingPercent); - const paddedHeight = previewHeight * (1 + paddingPercent); - const cropWidth = paddedWidth; - const cropHeight = paddedHeight; - const cropLeft = (canvas.width - cropWidth) / 2; - const cropTop = (canvas.height - cropHeight) / 2; - const croppedCanvas = document.createElement("canvas"); - croppedCanvas.width = cropWidth; - croppedCanvas.height = cropHeight; - const croppedCtx = croppedCanvas.getContext("2d"); - croppedCtx.drawImage(canvas, cropLeft, cropTop, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); - return croppedCanvas.toDataURL("image/jpeg"); - } - canvas.width = 2240; - canvas.height = 1260; - const context = canvas.getContext("2d"); - const aspectRatio = video.videoWidth / video.videoHeight; - if (aspectRatio < 1) { - const imageFrame = this.activeScreen.querySelector('[class*="image-frame"]:not([hidden]) [href*="image-frame"]'); - const videoBox = video.getBoundingClientRect(); - const frameBox = imageFrame.getBoundingClientRect(); - const sourceXOffset = (frameBox.left - videoBox.left) / videoBox.width * video.videoWidth; - const sourceYOffset = (frameBox.top - videoBox.top) / videoBox.height * video.videoHeight; - const sourceWidth = frameBox.width * (video.videoWidth / videoBox.width); - const sourceHeight = frameBox.height * (video.videoHeight / videoBox.height); - canvas.height = canvas.width * frameBox.height / frameBox.width; - context.drawImage(video, sourceXOffset, sourceYOffset, sourceWidth, sourceHeight, 0, 0, canvas.width, canvas.height); - return canvas.toDataURL("image/jpeg"); - } - context.drawImage(video, 0, 0, canvas.width, canvas.height); - return canvas.toDataURL("image/jpeg"); - } - _stopVideoStream(stream) { - try { - clearTimeout(this._videoStreamTimeout); - clearInterval(this._imageCaptureInterval); - clearInterval(this._drawingInterval); - this.smileCTA.style.animation = "none"; - this._capturePOLPhoto(); - this._captureReferencePhoto(); - stream.getTracks().forEach((track) => track.stop()); - this.reviewImage.src = this._referenceImage; - const totalNoOfFrames = this._rawImages.length; - const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames); - this._data.images = this._data.images.concat(livenessFramesIndices.map((imageIndex) => ({ - image: this._rawImages[imageIndex].split(",")[1], - image_type_id: 6 - }))); - this.setActiveScreen(this.reviewScreen); - } catch (error) { - this.setActiveScreen(this.failedImageTestScreen); - } - } - _stopIDVideoStream(stream = this._IDStream) { - stream.getTracks().forEach((track) => track.stop()); - } - async _startIDCamera() { - try { - const stream = await navigator.mediaDevices.getUserMedia({ - audio: false, - video: { - facingMode: "environment", - width: { min: 1280 }, - // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant) - // "We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges. - // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it." - zoom: isSamsungMultiCameraDevice() ? 2 : 1 - } - }); - if (this.activeScreen === this.idEntryScreen) { - this.setActiveScreen(this.IDCameraScreen); - } else if (this.activeScreen === this.backOfIdEntryScreen) { - this.setActiveScreen(this.backOfIDCameraScreen); - } - this.handleIDStream(stream); - } catch (e) { - this.handleError(e); - } - } - _selectSelfie() { - if (!this.captureID) { - this._publishSelectedImages(); - } else { - this.setActiveScreen(this.idEntryScreen); - } - } - _selectIDImage(backOfIDCaptured = false) { - if (!this.captureBackOfID || backOfIDCaptured) { - this._publishSelectedImages(); - } else { - this.setActiveScreen(this.backOfIdEntryScreen); - } - } - _publishSelectedImages() { - this.dispatchEvent( - new CustomEvent("imagesComputed", { detail: this._data }) - ); - this.setActiveScreen(this.thanksScreen); - } - _exitSmartCamera() { - this.dispatchEvent( - new CustomEvent("close", { detail: {} }) - ); - } - _backAndExit() { - this.dispatchEvent( - new CustomEvent("backExit", { detail: {} }) - ); - } - async _reStartImageCapture() { - this.startImageCapture.disabled = false; - this._rawImages = []; - this._data.images = []; - try { - const stream = await navigator.mediaDevices.getUserMedia({ - audio: false, - video: true - }); - this.handleSuccess(stream); - } catch (e) { - this.handleError(e); - } - } - async _reCaptureIDImage() { - const previousScreen = this.activeScreen === this.IDReviewScreen ? this.idEntryScreen : this.backOfIdEntryScreen; - this.setActiveScreen(previousScreen); - this._data.images.pop(); - } - get captureID() { - return this.hasAttribute("capture-id"); - } - get captureBackOfID() { - return this.getAttribute("capture-id") === "back" || false; - } - get hideAttribution() { - return this.hasAttribute("hide-attribution"); - } - get showNavigation() { - return this.hasAttribute("show-navigation"); - } - get hideBackToHost() { - return this.hasAttribute("hide-back-to-host"); - } - get documentType() { - return this.getAttribute("document-type"); - } - get isPortraitCaptureView() { - return this.getAttribute("document-type") === "GREEN_BOOK"; - } - get documentCaptureModes() { - return this.getAttribute("document-capture-modes") || "camera"; - } - get supportBothCaptureModes() { - const value = this.documentCaptureModes; - return value.includes("camera") && value.includes("upload"); - } - get disableImageTests() { - return this.hasAttribute("disable-image-tests"); - } - get doNotUpload() { - return this.getAttribute("document-capture-modes") === "camera"; - } - }; - window.customElements.define("smart-camera-web", SmartCameraWeb); - - // src/js/enhanced-document-verification.js - var import_jszip = __toESM(require_jszip_min(), 1); - - // package.json - var version = "v1.2.3"; - - // src/js/enhanced-document-verification.js - (function enhancedDocumentVerification() { - "use strict"; - const endpoints = { - sandbox: "https://testapi.smileidentity.com/v1", - live: "https://api.smileidentity.com/v1", - production: "https://api.smileidentity.com/v1" - }; - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); - let config; - let activeScreen; - let id_info; - let images; - let partner_params; - let productConstraints; - const LoadingScreen = document.querySelector("#loading-screen"); - const SelectIDType = document.querySelector("#select-id-type"); - const SmartCameraWeb2 = document.querySelector("smart-camera-web"); - const UploadProgressScreen = document.querySelector( - "#upload-progress-screen" - ); - const UploadFailureScreen = document.querySelector("#upload-failure-screen"); - const CompleteScreen = document.querySelector("#complete-screen"); - const CloseIframeButtons = document.querySelectorAll(".close-iframe"); - const RetryUploadButton = document.querySelector("#retry-upload"); - let fileToUpload; - let uploadURL; - async function getProductConstraints() { - try { - const response = await fetch(`${endpoints[config.environment]}/services`); - const json = await response.json(); - return json.hosted_web.enhanced_document_verification; - } catch (e) { - throw new Error("Failed to get supported ID types", { cause: e }); - } - } - window.addEventListener( - "message", - async (event) => { - if (event.data && event.data.includes("SmileIdentity::Configuration")) { - config = JSON.parse(event.data); - activeScreen = LoadingScreen; - productConstraints = await getProductConstraints(); - initializeSession(productConstraints); - getPartnerParams(); - } - }, - false - ); - function initializeSession(constraints) { - const supportedCountries = Object.keys(constraints).map((countryCode) => ({ - code: countryCode, - name: constraints[countryCode].name - })).sort((a, b) => { - if (a.name < b.name) { - return -1; - } - if (a.name > b.name) { - return 1; - } - return 0; - }).map((item) => item.code); - let validCountries = []; - if (config.id_selection) { - const selectedCountryList = Object.keys(config.id_selection); - validCountries = supportedCountries.filter( - (value) => selectedCountryList.includes(value) - ); - if (validCountries.length === 1) { - const selectedCountry = validCountries[0]; - id_info = { - country: validCountries[0] - }; - const idTypes = config.id_selection[selectedCountry]; - if (idTypes.length === 1 || typeof idTypes === "string") { - id_info.id_type = Array.isArray(idTypes) ? idTypes[0] : idTypes; - SmartCameraWeb2.setAttribute("document-type", id_info.id_type); - if (config.document_capture_modes) { - SmartCameraWeb2.setAttribute( - "document-capture-modes", - config.document_capture_modes.join(",") - ); - } - SmartCameraWeb2.setAttribute("hide-back-to-host", true); - setActiveScreen(SmartCameraWeb2); - } - } - } else { - validCountries = supportedCountries; - } - if (!id_info || !id_info.id_type) { - const selectCountry = SelectIDType.querySelector("#country"); - const selectIDType = SelectIDType.querySelector("#id_type"); - const hostedWebConfigForm = document.querySelector( - 'form[name="hosted-web-config"]' - ); - selectCountry.disabled = false; - setActiveScreen(SelectIDType); - const loadIdTypes = (countryCode) => { - if (countryCode) { - const constrainedIDTypes = Object.keys( - productConstraints[countryCode].id_types - ); - const validIDTypes = config.id_selection ? config.id_selection[countryCode] : constrainedIDTypes; - const selectedIDTypes = validIDTypes.filter( - (value) => constrainedIDTypes.includes(value) - ); - selectIDType.innerHTML = ""; - const initialOption = document.createElement("option"); - initialOption.setAttribute("value", ""); - initialOption.textContent = "--Please Select--"; - selectIDType.appendChild(initialOption); - selectedIDTypes.forEach((IDType) => { - const option = document.createElement("option"); - option.setAttribute("value", IDType); - option.textContent = productConstraints[countryCode].id_types[IDType].label; - selectIDType.appendChild(option); - }); - selectIDType.disabled = false; - } else { - selectIDType.innerHTML = ""; - const option = document.createElement("option"); - option.disabled = true; - option.setAttribute("value", ""); - option.textContent = "--Select Country First--"; - selectIDType.appendChild(option); - } - }; - validCountries.forEach((country) => { - const countryObject = productConstraints[country]; - if (countryObject) { - const option = document.createElement("option"); - option.setAttribute("value", country); - option.textContent = constraints[country].name; - if (id_info && id_info.country && country === id_info.country) { - option.setAttribute("selected", true); - selectCountry.value = country; - selectCountry.disabled = true; - loadIdTypes(country); - } - selectCountry.appendChild(option); - } - }); - selectCountry.addEventListener("change", (e) => { - loadIdTypes(e.target.value); - }); - hostedWebConfigForm.addEventListener("submit", (e) => { - e.preventDefault(); - const selectedCountry = selectCountry.value; - const selectedIDType = selectIDType.value; - id_info = { - country: selectedCountry, - id_type: selectedIDType - }; - SmartCameraWeb2.setAttribute("document-type", selectedIDType); - if (config.document_capture_modes) { - SmartCameraWeb2.setAttribute( - "document-capture-modes", - config.document_capture_modes.join(",") - ); - } - setActiveScreen(SmartCameraWeb2); - }); - } - } - function initiateDemoMode() { - const demoTips = document.querySelectorAll(".demo-tip"); - Array.prototype.forEach.call(demoTips, (tip) => { - tip.hidden = false; - }); - const script = document.createElement("script"); - script.type = "text/javascript"; - script.src = "js/demo-doc-verification.min.js"; - document.body.appendChild(script); - } - SmartCameraWeb2.addEventListener( - "imagesComputed", - (event) => { - images = event.detail.images; - setActiveScreen(UploadProgressScreen); - handleFormSubmit(event); - }, - false - ); - SmartCameraWeb2.addEventListener( - "backExit", - () => { - setActiveScreen(SelectIDType); - }, - false - ); - SmartCameraWeb2.addEventListener( - "close", - () => { - closeWindow(); - }, - false - ); - RetryUploadButton.addEventListener( - "click", - () => { - retryUpload(); - }, - false - ); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - closeWindow(); - }, - false - ); - }); - function getPartnerParams() { - function parseJWT(token) { - const base64Url = token.split(".")[1]; - const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); - const jsonPayload = decodeURIComponent( - atob(base64).split("").map(function(c) { - return `%${c.charCodeAt(0).toString(16)}`; - }).join("") - ); - return JSON.parse(jsonPayload); - } - const { partner_params: partnerParams } = parseJWT(config.token); - partner_params = { ...partnerParams, ...config.partner_params || {} }; - } - function setActiveScreen(node) { - activeScreen.hidden = true; - node.hidden = false; - activeScreen = node; - } - async function handleFormSubmit(event) { - event.preventDefault(); - try { - [uploadURL, fileToUpload] = await Promise.all([ - getUploadURL(), - createZip() - ]); - uploadZip(fileToUpload, uploadURL); - } catch (error) { - displayErrorMessage("Something went wrong"); - console.error( - `SmileIdentity - ${error.name || error.message}: ${error.cause}` - ); - } - } - function displayErrorMessage(message) { - const p = document.createElement("p"); - p.textContent = message; - p.style.color = "red"; - p.style.fontSize = "1.5rem"; - p.style.textAlign = "center"; - const main = document.querySelector("main"); - main.prepend(p); - } - async function createZip() { - const zip = new import_jszip.default(); - zip.file( - "info.json", - JSON.stringify({ - package_information: { - language: "Hosted Web Integration", - apiVersion: { - buildNumber: 0, - majorVersion: 2, - minorVersion: 0 - } - }, - id_info, - images - }) - ); - try { - const zipFile = await zip.generateAsync({ type: "blob" }); - return zipFile; - } catch (error) { - throw new Error("createZip failed", { cause: error }); - } - } - async function getUploadURL() { - const payload = { - source_sdk: config.sdk || "hosted_web", - source_sdk_version: config.sdk_version || version, - file_name: `${config.product}.zip`, - smile_client_id: config.partner_details.partner_id, - callback_url: config.callback_url, - token: config.token, - partner_params: { - ...partner_params, - job_type: 11 - } - }; - const fetchConfig = { - cache: "no-cache", - mode: "cors", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - method: "POST", - body: JSON.stringify(payload) - }; - const URL = `${endpoints[config.environment] || config.environment}/upload`; - try { - const response = await fetch(URL, fetchConfig); - const json = await response.json(); - if (json.error) - throw new Error(json.error); - return json.upload_url; - } catch (error) { - throw new Error("getUploadURL failed", { cause: error }); - } - } - function uploadZip(file, destination) { - const request = new XMLHttpRequest(); - request.open("PUT", destination); - request.upload.addEventListener("load", function() { - return request.response; - }); - request.upload.addEventListener("error", function(e) { - setActiveScreen(UploadFailureScreen); - throw new Error("uploadZip failed", { cause: e }); - }); - request.onreadystatechange = function() { - if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { - setActiveScreen(CompleteScreen); - handleSuccess(); - window.setTimeout(closeWindow, 2e3); - } - if (request.readyState === XMLHttpRequest.DONE && request.status !== 200) { - setActiveScreen(UploadFailureScreen); - throw new Error("uploadZip failed", { cause: request }); - } - }; - request.setRequestHeader("Content-type", "application/zip"); - request.send(file); - } - function retryUpload() { - const fileUploaded = uploadZip(fileToUpload, uploadURL); - return fileUploaded; - } - function closeWindow() { - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - function handleSuccess() { - referenceWindow.postMessage("SmileIdentity::Success", "*"); - } - })(); -})(); -/*! Bundled license information: - -jszip/dist/jszip.min.js: - (*! - - JSZip v3.10.1 - A JavaScript class for generating and reading zip files - - - (c) 2009-2016 Stuart Knightley - Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. - - JSZip uses the library pako released under the MIT license : - https://github.com/nodeca/pako/blob/main/LICENSE - *) -*/ diff --git a/packages/embed/build/js/product-selection.min.js b/packages/embed/build/js/product-selection.min.js deleted file mode 100644 index dfbabd76..00000000 --- a/packages/embed/build/js/product-selection.min.js +++ /dev/null @@ -1,281 +0,0 @@ -(() => { - // src/js/product-selection.js - (function productSelection() { - "use strict"; - const endpoints = { - sandbox: "https://testapi.smileidentity.com/v1", - live: "https://api.smileidentity.com/v1", - production: "https://api.smileidentity.com/v1" - }; - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); - let config; - let verificationMethodMap; - let activeScreen; - const LoadingScreen = document.querySelector("#loading-screen"); - const SelectIdType = document.querySelector("#select-id-type"); - const ConfigForm = document.querySelector('form[name="hosted-web-config"]'); - const CloseIframeButtons = document.querySelectorAll(".close-iframe"); - CloseIframeButtons.forEach((button) => { - button.addEventListener( - "click", - () => { - closeWindow(); - }, - false - ); - }); - function setActiveScreen(element) { - activeScreen.hidden = true; - element.hidden = false; - activeScreen = element; - } - async function getProductConstraints() { - const payload = { - token: config.token, - partner_id: config.partner_details.partner_id - }; - const fetchConfig = { - cache: "no-cache", - mode: "cors", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - method: "POST", - body: JSON.stringify(payload) - }; - try { - const response = await fetch( - `${endpoints[config.environment]}/valid_documents`, - fetchConfig - ); - const json = await response.json(); - return json.valid_documents; - } catch (e) { - throw new Error("Failed to get supported ID types", { cause: e }); - } - } - async function getLegacyProductConstraints() { - const fetchConfig = { - cache: "no-cache", - mode: "cors", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - method: "GET" - }; - try { - const response = await fetch( - `${endpoints[config.environment]}/services`, - fetchConfig - ); - const json = await response.json(); - return json.hosted_web; - } catch (e) { - throw new Error("Failed to get supported ID types", { cause: e }); - } - } - function getIdTypeName(country, id_type, productConstraints, legacyProductConstraints) { - const validDocumentsCountry = productConstraints.find( - (item) => item.country.code === country - ); - if (!validDocumentsCountry) { - throw new Error(`SmileIdentity - ${country} is not supported`); - } - let validIdType = validDocumentsCountry.id_types.find( - (item) => item.code === id_type - ); - if (!validIdType) { - const legacyValidIdType = legacyProductConstraints.doc_verification[country].id_types[id_type] || legacyProductConstraints.enhanced_kyc[country].id_types[id_type]; - if (legacyValidIdType) { - validIdType = { - name: legacyValidIdType.label - }; - } - } - if (!validIdType) { - throw new Error(`SmileIdentity - ${country} ${id_type} is not supported`); - } - return validIdType.name; - } - function transformIdTypesToVerificationMethodMap(idTypes, productConstraints, legacyProductConstraints) { - return idTypes.reduce( - (idSelectionMap, { country, id_type, verification_method }) => { - idSelectionMap[country] = idSelectionMap[country] || { - name: productConstraints.find((item) => item.country.code === country)?.country?.name, - id_types: {} - }; - idSelectionMap[country].id_types[id_type] = { - name: getIdTypeName( - country, - id_type, - productConstraints, - legacyProductConstraints - ), - verification_method - }; - return idSelectionMap; - }, - {} - ); - } - function loadIdTypes(localVerificationMethodMap, idTypeSelector, countryCode) { - if (countryCode) { - idTypeSelector.innerHTML = ""; - const initialOption = document.createElement("option"); - initialOption.setAttribute("value", ""); - initialOption.textContent = "--Please Select--"; - idTypeSelector.appendChild(initialOption); - const idTypes = Object.keys( - localVerificationMethodMap[countryCode].id_types - ); - const isSingleIdType = idTypes.length === 1; - idTypes.forEach((idType) => { - const option = document.createElement("option"); - option.setAttribute("value", idType); - option.textContent = localVerificationMethodMap[countryCode].id_types[idType].name; - if (isSingleIdType) { - option.setAttribute("selected", true); - } - idTypeSelector.appendChild(option); - }); - idTypeSelector.disabled = false; - } else { - idTypeSelector.innerHTML = ""; - const option = document.createElement("option"); - option.disabled = true; - option.setAttribute("value", ""); - option.textContent = "--Select Country First--"; - idTypeSelector.appendChild(option); - } - } - function getVerificationMethod(country, id_type) { - return verificationMethodMap[country].id_types[id_type].verification_method; - } - function initializeForm(form, localVerificationMethodMap) { - const countrySelector = form.querySelector("#country"); - const idTypeSelector = form.querySelector("#id_type"); - countrySelector.addEventListener("change", (e) => { - loadIdTypes(localVerificationMethodMap, idTypeSelector, e.target.value); - }); - const countries = Object.keys(localVerificationMethodMap); - const isSingleCountry = countries.length === 1; - countries.forEach((countryCode) => { - const country = localVerificationMethodMap[countryCode]; - const option = document.createElement("option"); - option.setAttribute("value", countryCode); - option.textContent = country.name; - if (isSingleCountry) { - option.setAttribute("selected", true); - loadIdTypes(localVerificationMethodMap, idTypeSelector, countryCode); - } - countrySelector.appendChild(option); - }); - countrySelector.disabled = false; - setActiveScreen(form); - } - function getSiteURL() { - const urlParts = location.href.split("/"); - const url = urlParts.slice(0, -1).join("/"); - return `${url}/`; - } - function getIFrameURL(product) { - switch (product) { - case "biometric_kyc": - return "biometric-kyc.html"; - case "doc_verification": - return "doc-verification.html"; - case "enhanced_document_verification": - return "enhanced-document-verification.html"; - case "enhanced_kyc": - return "ekyc.html"; - default: - throw new Error("Unsupported product"); - } - } - function createIframe(productName) { - const iframe = document.createElement("iframe"); - iframe.setAttribute("src", `${getSiteURL()}${getIFrameURL(productName)}`); - iframe.setAttribute( - "id", - "smile-identity-hosted-web-integration-post-product-selection" - ); - iframe.setAttribute( - "name", - "smile-identity-hosted-web-integration-post-product-selection" - ); - iframe.setAttribute( - "data-cy", - "smile-identity-hosted-web-integration-post-product-selection" - ); - iframe.setAttribute("frameborder", "0"); - iframe.setAttribute( - "allow", - "camera; geolocation; encrypted-media; fullscreen" - ); - iframe.setAttribute("allowtransparency", "true"); - iframe.style.cssText = ` - background-color: #F9F0E7; - border: none; - height: 100%; - left: 0; - position: fixed; - top: 0; - width: 100%; - z-index: 999999; - `; - document.body.prepend(iframe); - } - function closeWindow() { - referenceWindow.postMessage("SmileIdentity::Close", "*"); - } - function publishMessage() { - const targetWindow = document.querySelector( - "[name='smile-identity-hosted-web-integration-post-product-selection']" - ).contentWindow; - config.source = "SmileIdentity::Configuration"; - targetWindow.postMessage(JSON.stringify(config), "*"); - } - function setProductPage(selectedCountry, selectedIdType) { - config.id_selection = {}; - config.id_selection[selectedCountry] = [selectedIdType]; - config.product = getVerificationMethod(selectedCountry, selectedIdType); - createIframe(config.product); - } - ConfigForm.addEventListener("submit", (e) => { - e.preventDefault(); - const selectedCountry = ConfigForm.querySelector("#country").value; - const selectedIdType = ConfigForm.querySelector("#id_type").value; - setProductPage(selectedCountry, selectedIdType); - }); - window.addEventListener( - "message", - async (event) => { - if (event.data) { - if (event.data.includes("SmileIdentity::Configuration")) { - config = JSON.parse(event.data); - activeScreen = LoadingScreen; - const constraintsPromises = [ - getProductConstraints(), - getLegacyProductConstraints() - ]; - const [productConstraints, legacyConstraints] = await Promise.all(constraintsPromises); - verificationMethodMap = transformIdTypesToVerificationMethodMap( - config.id_types, - productConstraints, - legacyConstraints - ); - initializeForm(SelectIdType, verificationMethodMap); - } else if (event.data.includes("SmileIdentity::ChildPageReady")) { - publishMessage(config); - } - } else { - referenceWindow.postMessage(event.detail || event.data, "*"); - } - }, - false - ); - })(); -})(); diff --git a/packages/embed/build/js/script.min.js b/packages/embed/build/js/script.min.js deleted file mode 100644 index fba73daa..00000000 --- a/packages/embed/build/js/script.min.js +++ /dev/null @@ -1,162 +0,0 @@ -(() => { - // src/js/script.js - window.SmileIdentity = function() { - "use strict"; - function getSiteURL() { - const currentScriptSrc = document.currentScript.src; - const qualifiedURL = currentScriptSrc.split("script")[0]; - return qualifiedURL; - } - const innerConfig = { - siteURL: getSiteURL() - }; - function getIFrameURL(product) { - switch (product) { - case "biometric_kyc": - case "ekyc_smartselfie": - return "./../biometric-kyc.html"; - case "enhanced_kyc": - return "./../ekyc.html"; - case "authentication": - case "smartselfie": - return "./../smartselfie-auth.html"; - case "doc_verification": - return "./../doc-verification.html"; - case "enhanced_document_verification": - return "./../enhanced-document-verification.html"; - case "basic_kyc": - case "identity_verification": - return "./../basic-kyc.html"; - case void 0: - return "./../product-selection.html"; - default: - throw new Error( - `SmileIdentity: ${product} is not currently supported in this integration` - ); - } - } - function createIframe(productName) { - const iframe = document.createElement("iframe"); - iframe.setAttribute( - "src", - `${innerConfig.siteURL}${getIFrameURL(productName)}` - ); - iframe.setAttribute("id", "smile-identity-hosted-web-integration"); - iframe.setAttribute("name", "smile-identity-hosted-web-integration"); - iframe.setAttribute("data-cy", "smile-identity-hosted-web-integration"); - iframe.setAttribute("frameborder", "0"); - iframe.setAttribute( - "allow", - "camera; geolocation; encrypted-media; fullscreen" - ); - iframe.setAttribute("allowtransparency", "true"); - iframe.style.cssText = ` - background-color: #F9F0E7; - border: none; - height: 100%; - left: 0; - position: fixed; - top: 0; - width: 100%; - z-index: 999999; - `; - document.body.prepend(iframe); - } - function closeIFrame(config, userTriggered) { - const iframe = document.querySelector( - "#smile-identity-hosted-web-integration" - ); - iframe.remove(); - if (config.onClose && userTriggered) { - config.onClose(); - } - } - function handleSuccess(config) { - if (config.onSuccess) { - config.onSuccess(); - } - } - function handleConsentRejection(config, error) { - if (config.onError) { - config.onError(error); - } - } - const requiredPartnerDetails = [ - "name", - "logo_url", - "partner_id", - "policy_url", - "theme_color" - ]; - function isConfigValid(config) { - if (!config.token) - throw new Error( - "SmileIdentity: Please provide your web token via the `token` attribute" - ); - if (!config.callback_url) - throw new Error( - "SmileIdentity: Please provide a callback URL via the `callback_url` attribute" - ); - if (!config.product && !config.id_types) - throw new Error( - "SmileIdentity: Please select a product via the `product` attribute." - ); - if ((config.product === "biometric_kyc" || config.product === "ekyc_smartselfie") && !config.partner_details) { - throw new Error( - "SmileIdentity: Please provide Partner Details via the `partner_details` attribute" - ); - } - if ((config.product === "biometric_kyc" || config.product === "ekyc_smartselfie") && config.partner_details) { - requiredPartnerDetails.forEach((param) => { - if (!config.partner_details[param]) { - throw new Error( - `SmileIdentity: Please include ${param} in the "partner_details" object` - ); - } - }); - } - if (config.document_capture_modes && !Array.isArray(config.document_capture_modes)) { - throw new Error( - "SmileIdentity: document_capture_modes must be an array containing one of `camera` or `upload`, or both" - ); - } - return true; - } - function publishConfigToIFrame(config) { - const targetWindow = document.querySelector( - "[name='smile-identity-hosted-web-integration']" - ).contentWindow; - config.source = "SmileIdentity::Configuration"; - targetWindow.postMessage(JSON.stringify(config), "*"); - } - function SmileIdentity(config) { - const configIsValid = isConfigValid(config); - if (configIsValid) { - createIframe(config.product); - window.addEventListener( - "message", - (event) => { - const tag = event.data.message || event.data; - switch (tag) { - case "SmileIdentity::ChildPageReady": - return publishConfigToIFrame(config); - case "SmileIdentity::Close": - return closeIFrame(config, true); - case "SmileIdentity::Close::System": - return closeIFrame(config, false); - case "SmileIdentity::Success": - return handleSuccess(config); - case "SmileIdentity::ConsentDenied": - case "SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated": - return handleConsentRejection(config, event.data); - default: - return void 0; - } - }, - false - ); - } - } - return SmileIdentity; - }(); -})(); diff --git a/packages/embed/build/js/smartselfie-auth.min.js b/packages/embed/build/js/smartselfie-auth.min.js deleted file mode 100644 index 4192ea34..00000000 --- a/packages/embed/build/js/smartselfie-auth.min.js +++ /dev/null @@ -1,4693 +0,0 @@ -(() => { - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] - }) : x)(function(x) { - if (typeof require !== "undefined") - return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); - }); - var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod - )); - - // ../../node_modules/jszip/dist/jszip.min.js - var require_jszip_min = __commonJS({ - "../../node_modules/jszip/dist/jszip.min.js"(exports, module) { - !function(e) { - if ("object" == typeof exports && "undefined" != typeof module) - module.exports = e(); - else if ("function" == typeof define && define.amd) - define([], e); - else { - ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).JSZip = e(); - } - }(function() { - return function s(a, o, h) { - function u(r, e2) { - if (!o[r]) { - if (!a[r]) { - var t = "function" == typeof __require && __require; - if (!e2 && t) - return t(r, true); - if (l) - return l(r, true); - var n = new Error("Cannot find module '" + r + "'"); - throw n.code = "MODULE_NOT_FOUND", n; - } - var i = o[r] = { exports: {} }; - a[r][0].call(i.exports, function(e3) { - var t2 = a[r][1][e3]; - return u(t2 || e3); - }, i, i.exports, s, a, o, h); - } - return o[r].exports; - } - for (var l = "function" == typeof __require && __require, e = 0; e < h.length; e++) - u(h[e]); - return u; - }({ 1: [function(e, t, r) { - "use strict"; - var d = e("./utils"), c = e("./support"), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - r.encode = function(e2) { - for (var t2, r2, n, i, s, a, o, h = [], u = 0, l = e2.length, f = l, c2 = "string" !== d.getTypeOf(e2); u < e2.length; ) - f = l - u, n = c2 ? (t2 = e2[u++], r2 = u < l ? e2[u++] : 0, u < l ? e2[u++] : 0) : (t2 = e2.charCodeAt(u++), r2 = u < l ? e2.charCodeAt(u++) : 0, u < l ? e2.charCodeAt(u++) : 0), i = t2 >> 2, s = (3 & t2) << 4 | r2 >> 4, a = 1 < f ? (15 & r2) << 2 | n >> 6 : 64, o = 2 < f ? 63 & n : 64, h.push(p.charAt(i) + p.charAt(s) + p.charAt(a) + p.charAt(o)); - return h.join(""); - }, r.decode = function(e2) { - var t2, r2, n, i, s, a, o = 0, h = 0, u = "data:"; - if (e2.substr(0, u.length) === u) - throw new Error("Invalid base64 input, it looks like a data url."); - var l, f = 3 * (e2 = e2.replace(/[^A-Za-z0-9+/=]/g, "")).length / 4; - if (e2.charAt(e2.length - 1) === p.charAt(64) && f--, e2.charAt(e2.length - 2) === p.charAt(64) && f--, f % 1 != 0) - throw new Error("Invalid base64 input, bad content length."); - for (l = c.uint8array ? new Uint8Array(0 | f) : new Array(0 | f); o < e2.length; ) - t2 = p.indexOf(e2.charAt(o++)) << 2 | (i = p.indexOf(e2.charAt(o++))) >> 4, r2 = (15 & i) << 4 | (s = p.indexOf(e2.charAt(o++))) >> 2, n = (3 & s) << 6 | (a = p.indexOf(e2.charAt(o++))), l[h++] = t2, 64 !== s && (l[h++] = r2), 64 !== a && (l[h++] = n); - return l; - }; - }, { "./support": 30, "./utils": 32 }], 2: [function(e, t, r) { - "use strict"; - var n = e("./external"), i = e("./stream/DataWorker"), s = e("./stream/Crc32Probe"), a = e("./stream/DataLengthProbe"); - function o(e2, t2, r2, n2, i2) { - this.compressedSize = e2, this.uncompressedSize = t2, this.crc32 = r2, this.compression = n2, this.compressedContent = i2; - } - o.prototype = { getContentWorker: function() { - var e2 = new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), t2 = this; - return e2.on("end", function() { - if (this.streamInfo.data_length !== t2.uncompressedSize) - throw new Error("Bug : uncompressed data size mismatch"); - }), e2; - }, getCompressedWorker: function() { - return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression); - } }, o.createWorkerFrom = function(e2, t2, r2) { - return e2.pipe(new s()).pipe(new a("uncompressedSize")).pipe(t2.compressWorker(r2)).pipe(new a("compressedSize")).withStreamInfo("compression", t2); - }, t.exports = o; - }, { "./external": 6, "./stream/Crc32Probe": 25, "./stream/DataLengthProbe": 26, "./stream/DataWorker": 27 }], 3: [function(e, t, r) { - "use strict"; - var n = e("./stream/GenericWorker"); - r.STORE = { magic: "\0\0", compressWorker: function() { - return new n("STORE compression"); - }, uncompressWorker: function() { - return new n("STORE decompression"); - } }, r.DEFLATE = e("./flate"); - }, { "./flate": 7, "./stream/GenericWorker": 28 }], 4: [function(e, t, r) { - "use strict"; - var n = e("./utils"); - var o = function() { - for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { - e2 = r2; - for (var n2 = 0; n2 < 8; n2++) - e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; - t2[r2] = e2; - } - return t2; - }(); - t.exports = function(e2, t2) { - return void 0 !== e2 && e2.length ? "string" !== n.getTypeOf(e2) ? function(e3, t3, r2, n2) { - var i = o, s = n2 + r2; - e3 ^= -1; - for (var a = n2; a < s; a++) - e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3[a])]; - return -1 ^ e3; - }(0 | t2, e2, e2.length, 0) : function(e3, t3, r2, n2) { - var i = o, s = n2 + r2; - e3 ^= -1; - for (var a = n2; a < s; a++) - e3 = e3 >>> 8 ^ i[255 & (e3 ^ t3.charCodeAt(a))]; - return -1 ^ e3; - }(0 | t2, e2, e2.length, 0) : 0; - }; - }, { "./utils": 32 }], 5: [function(e, t, r) { - "use strict"; - r.base64 = false, r.binary = false, r.dir = false, r.createFolders = true, r.date = null, r.compression = null, r.compressionOptions = null, r.comment = null, r.unixPermissions = null, r.dosPermissions = null; - }, {}], 6: [function(e, t, r) { - "use strict"; - var n = null; - n = "undefined" != typeof Promise ? Promise : e("lie"), t.exports = { Promise: n }; - }, { lie: 37 }], 7: [function(e, t, r) { - "use strict"; - var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, i = e("pako"), s = e("./utils"), a = e("./stream/GenericWorker"), o = n ? "uint8array" : "array"; - function h(e2, t2) { - a.call(this, "FlateWorker/" + e2), this._pako = null, this._pakoAction = e2, this._pakoOptions = t2, this.meta = {}; - } - r.magic = "\b\0", s.inherits(h, a), h.prototype.processChunk = function(e2) { - this.meta = e2.meta, null === this._pako && this._createPako(), this._pako.push(s.transformTo(o, e2.data), false); - }, h.prototype.flush = function() { - a.prototype.flush.call(this), null === this._pako && this._createPako(), this._pako.push([], true); - }, h.prototype.cleanUp = function() { - a.prototype.cleanUp.call(this), this._pako = null; - }, h.prototype._createPako = function() { - this._pako = new i[this._pakoAction]({ raw: true, level: this._pakoOptions.level || -1 }); - var t2 = this; - this._pako.onData = function(e2) { - t2.push({ data: e2, meta: t2.meta }); - }; - }, r.compressWorker = function(e2) { - return new h("Deflate", e2); - }, r.uncompressWorker = function() { - return new h("Inflate", {}); - }; - }, { "./stream/GenericWorker": 28, "./utils": 32, pako: 38 }], 8: [function(e, t, r) { - "use strict"; - function A(e2, t2) { - var r2, n2 = ""; - for (r2 = 0; r2 < t2; r2++) - n2 += String.fromCharCode(255 & e2), e2 >>>= 8; - return n2; - } - function n(e2, t2, r2, n2, i2, s2) { - var a, o, h = e2.file, u = e2.compression, l = s2 !== O.utf8encode, f = I.transformTo("string", s2(h.name)), c = I.transformTo("string", O.utf8encode(h.name)), d = h.comment, p = I.transformTo("string", s2(d)), m = I.transformTo("string", O.utf8encode(d)), _ = c.length !== h.name.length, g = m.length !== d.length, b = "", v = "", y = "", w = h.dir, k = h.date, x = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }; - t2 && !r2 || (x.crc32 = e2.crc32, x.compressedSize = e2.compressedSize, x.uncompressedSize = e2.uncompressedSize); - var S = 0; - t2 && (S |= 8), l || !_ && !g || (S |= 2048); - var z = 0, C = 0; - w && (z |= 16), "UNIX" === i2 ? (C = 798, z |= function(e3, t3) { - var r3 = e3; - return e3 || (r3 = t3 ? 16893 : 33204), (65535 & r3) << 16; - }(h.unixPermissions, w)) : (C = 20, z |= function(e3) { - return 63 & (e3 || 0); - }(h.dosPermissions)), a = k.getUTCHours(), a <<= 6, a |= k.getUTCMinutes(), a <<= 5, a |= k.getUTCSeconds() / 2, o = k.getUTCFullYear() - 1980, o <<= 4, o |= k.getUTCMonth() + 1, o <<= 5, o |= k.getUTCDate(), _ && (v = A(1, 1) + A(B(f), 4) + c, b += "up" + A(v.length, 2) + v), g && (y = A(1, 1) + A(B(p), 4) + m, b += "uc" + A(y.length, 2) + y); - var E = ""; - return E += "\n\0", E += A(S, 2), E += u.magic, E += A(a, 2), E += A(o, 2), E += A(x.crc32, 4), E += A(x.compressedSize, 4), E += A(x.uncompressedSize, 4), E += A(f.length, 2), E += A(b.length, 2), { fileRecord: R.LOCAL_FILE_HEADER + E + f + b, dirRecord: R.CENTRAL_FILE_HEADER + A(C, 2) + E + A(p.length, 2) + "\0\0\0\0" + A(z, 4) + A(n2, 4) + f + b + p }; - } - var I = e("../utils"), i = e("../stream/GenericWorker"), O = e("../utf8"), B = e("../crc32"), R = e("../signature"); - function s(e2, t2, r2, n2) { - i.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t2, this.zipPlatform = r2, this.encodeFileName = n2, this.streamFiles = e2, this.accumulate = false, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = []; - } - I.inherits(s, i), s.prototype.push = function(e2) { - var t2 = e2.meta.percent || 0, r2 = this.entriesCount, n2 = this._sources.length; - this.accumulate ? this.contentBuffer.push(e2) : (this.bytesWritten += e2.data.length, i.prototype.push.call(this, { data: e2.data, meta: { currentFile: this.currentFile, percent: r2 ? (t2 + 100 * (r2 - n2 - 1)) / r2 : 100 } })); - }, s.prototype.openedSource = function(e2) { - this.currentSourceOffset = this.bytesWritten, this.currentFile = e2.file.name; - var t2 = this.streamFiles && !e2.file.dir; - if (t2) { - var r2 = n(e2, t2, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - this.push({ data: r2.fileRecord, meta: { percent: 0 } }); - } else - this.accumulate = true; - }, s.prototype.closedSource = function(e2) { - this.accumulate = false; - var t2 = this.streamFiles && !e2.file.dir, r2 = n(e2, t2, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - if (this.dirRecords.push(r2.dirRecord), t2) - this.push({ data: function(e3) { - return R.DATA_DESCRIPTOR + A(e3.crc32, 4) + A(e3.compressedSize, 4) + A(e3.uncompressedSize, 4); - }(e2), meta: { percent: 100 } }); - else - for (this.push({ data: r2.fileRecord, meta: { percent: 0 } }); this.contentBuffer.length; ) - this.push(this.contentBuffer.shift()); - this.currentFile = null; - }, s.prototype.flush = function() { - for (var e2 = this.bytesWritten, t2 = 0; t2 < this.dirRecords.length; t2++) - this.push({ data: this.dirRecords[t2], meta: { percent: 100 } }); - var r2 = this.bytesWritten - e2, n2 = function(e3, t3, r3, n3, i2) { - var s2 = I.transformTo("string", i2(n3)); - return R.CENTRAL_DIRECTORY_END + "\0\0\0\0" + A(e3, 2) + A(e3, 2) + A(t3, 4) + A(r3, 4) + A(s2.length, 2) + s2; - }(this.dirRecords.length, r2, e2, this.zipComment, this.encodeFileName); - this.push({ data: n2, meta: { percent: 100 } }); - }, s.prototype.prepareNextSource = function() { - this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume(); - }, s.prototype.registerPrevious = function(e2) { - this._sources.push(e2); - var t2 = this; - return e2.on("data", function(e3) { - t2.processChunk(e3); - }), e2.on("end", function() { - t2.closedSource(t2.previous.streamInfo), t2._sources.length ? t2.prepareNextSource() : t2.end(); - }), e2.on("error", function(e3) { - t2.error(e3); - }), this; - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), true) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), true)); - }, s.prototype.error = function(e2) { - var t2 = this._sources; - if (!i.prototype.error.call(this, e2)) - return false; - for (var r2 = 0; r2 < t2.length; r2++) - try { - t2[r2].error(e2); - } catch (e3) { - } - return true; - }, s.prototype.lock = function() { - i.prototype.lock.call(this); - for (var e2 = this._sources, t2 = 0; t2 < e2.length; t2++) - e2[t2].lock(); - }, t.exports = s; - }, { "../crc32": 4, "../signature": 23, "../stream/GenericWorker": 28, "../utf8": 31, "../utils": 32 }], 9: [function(e, t, r) { - "use strict"; - var u = e("../compressions"), n = e("./ZipFileWorker"); - r.generateWorker = function(e2, a, t2) { - var o = new n(a.streamFiles, t2, a.platform, a.encodeFileName), h = 0; - try { - e2.forEach(function(e3, t3) { - h++; - var r2 = function(e4, t4) { - var r3 = e4 || t4, n3 = u[r3]; - if (!n3) - throw new Error(r3 + " is not a valid compression method !"); - return n3; - }(t3.options.compression, a.compression), n2 = t3.options.compressionOptions || a.compressionOptions || {}, i = t3.dir, s = t3.date; - t3._compressWorker(r2, n2).withStreamInfo("file", { name: e3, dir: i, date: s, comment: t3.comment || "", unixPermissions: t3.unixPermissions, dosPermissions: t3.dosPermissions }).pipe(o); - }), o.entriesCount = h; - } catch (e3) { - o.error(e3); - } - return o; - }; - }, { "../compressions": 3, "./ZipFileWorker": 8 }], 10: [function(e, t, r) { - "use strict"; - function n() { - if (!(this instanceof n)) - return new n(); - if (arguments.length) - throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); - this.files = /* @__PURE__ */ Object.create(null), this.comment = null, this.root = "", this.clone = function() { - var e2 = new n(); - for (var t2 in this) - "function" != typeof this[t2] && (e2[t2] = this[t2]); - return e2; - }; - } - (n.prototype = e("./object")).loadAsync = e("./load"), n.support = e("./support"), n.defaults = e("./defaults"), n.version = "3.10.1", n.loadAsync = function(e2, t2) { - return new n().loadAsync(e2, t2); - }, n.external = e("./external"), t.exports = n; - }, { "./defaults": 5, "./external": 6, "./load": 11, "./object": 15, "./support": 30 }], 11: [function(e, t, r) { - "use strict"; - var u = e("./utils"), i = e("./external"), n = e("./utf8"), s = e("./zipEntries"), a = e("./stream/Crc32Probe"), l = e("./nodejsUtils"); - function f(n2) { - return new i.Promise(function(e2, t2) { - var r2 = n2.decompressed.getContentWorker().pipe(new a()); - r2.on("error", function(e3) { - t2(e3); - }).on("end", function() { - r2.streamInfo.crc32 !== n2.decompressed.crc32 ? t2(new Error("Corrupted zip : CRC32 mismatch")) : e2(); - }).resume(); - }); - } - t.exports = function(e2, o) { - var h = this; - return o = u.extend(o || {}, { base64: false, checkCRC32: false, optimizedBinaryString: false, createFolders: false, decodeFileName: n.utf8decode }), l.isNode && l.isStream(e2) ? i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : u.prepareContent("the loaded zip file", e2, true, o.optimizedBinaryString, o.base64).then(function(e3) { - var t2 = new s(o); - return t2.load(e3), t2; - }).then(function(e3) { - var t2 = [i.Promise.resolve(e3)], r2 = e3.files; - if (o.checkCRC32) - for (var n2 = 0; n2 < r2.length; n2++) - t2.push(f(r2[n2])); - return i.Promise.all(t2); - }).then(function(e3) { - for (var t2 = e3.shift(), r2 = t2.files, n2 = 0; n2 < r2.length; n2++) { - var i2 = r2[n2], s2 = i2.fileNameStr, a2 = u.resolve(i2.fileNameStr); - h.file(a2, i2.decompressed, { binary: true, optimizedBinaryString: true, date: i2.date, dir: i2.dir, comment: i2.fileCommentStr.length ? i2.fileCommentStr : null, unixPermissions: i2.unixPermissions, dosPermissions: i2.dosPermissions, createFolders: o.createFolders }), i2.dir || (h.file(a2).unsafeOriginalName = s2); - } - return t2.zipComment.length && (h.comment = t2.zipComment), h; - }); - }; - }, { "./external": 6, "./nodejsUtils": 14, "./stream/Crc32Probe": 25, "./utf8": 31, "./utils": 32, "./zipEntries": 33 }], 12: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("../stream/GenericWorker"); - function s(e2, t2) { - i.call(this, "Nodejs stream input adapter for " + e2), this._upstreamEnded = false, this._bindStream(t2); - } - n.inherits(s, i), s.prototype._bindStream = function(e2) { - var t2 = this; - (this._stream = e2).pause(), e2.on("data", function(e3) { - t2.push({ data: e3, meta: { percent: 0 } }); - }).on("error", function(e3) { - t2.isPaused ? this.generatedError = e3 : t2.error(e3); - }).on("end", function() { - t2.isPaused ? t2._upstreamEnded = true : t2.end(); - }); - }, s.prototype.pause = function() { - return !!i.prototype.pause.call(this) && (this._stream.pause(), true); - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), true); - }, t.exports = s; - }, { "../stream/GenericWorker": 28, "../utils": 32 }], 13: [function(e, t, r) { - "use strict"; - var i = e("readable-stream").Readable; - function n(e2, t2, r2) { - i.call(this, t2), this._helper = e2; - var n2 = this; - e2.on("data", function(e3, t3) { - n2.push(e3) || n2._helper.pause(), r2 && r2(t3); - }).on("error", function(e3) { - n2.emit("error", e3); - }).on("end", function() { - n2.push(null); - }); - } - e("../utils").inherits(n, i), n.prototype._read = function() { - this._helper.resume(); - }, t.exports = n; - }, { "../utils": 32, "readable-stream": 16 }], 14: [function(e, t, r) { - "use strict"; - t.exports = { isNode: "undefined" != typeof Buffer, newBufferFrom: function(e2, t2) { - if (Buffer.from && Buffer.from !== Uint8Array.from) - return Buffer.from(e2, t2); - if ("number" == typeof e2) - throw new Error('The "data" argument must not be a number'); - return new Buffer(e2, t2); - }, allocBuffer: function(e2) { - if (Buffer.alloc) - return Buffer.alloc(e2); - var t2 = new Buffer(e2); - return t2.fill(0), t2; - }, isBuffer: function(e2) { - return Buffer.isBuffer(e2); - }, isStream: function(e2) { - return e2 && "function" == typeof e2.on && "function" == typeof e2.pause && "function" == typeof e2.resume; - } }; - }, {}], 15: [function(e, t, r) { - "use strict"; - function s(e2, t2, r2) { - var n2, i2 = u.getTypeOf(t2), s2 = u.extend(r2 || {}, f); - s2.date = s2.date || /* @__PURE__ */ new Date(), null !== s2.compression && (s2.compression = s2.compression.toUpperCase()), "string" == typeof s2.unixPermissions && (s2.unixPermissions = parseInt(s2.unixPermissions, 8)), s2.unixPermissions && 16384 & s2.unixPermissions && (s2.dir = true), s2.dosPermissions && 16 & s2.dosPermissions && (s2.dir = true), s2.dir && (e2 = g(e2)), s2.createFolders && (n2 = _(e2)) && b.call(this, n2, true); - var a2 = "string" === i2 && false === s2.binary && false === s2.base64; - r2 && void 0 !== r2.binary || (s2.binary = !a2), (t2 instanceof c && 0 === t2.uncompressedSize || s2.dir || !t2 || 0 === t2.length) && (s2.base64 = false, s2.binary = true, t2 = "", s2.compression = "STORE", i2 = "string"); - var o2 = null; - o2 = t2 instanceof c || t2 instanceof l ? t2 : p.isNode && p.isStream(t2) ? new m(e2, t2) : u.prepareContent(e2, t2, s2.binary, s2.optimizedBinaryString, s2.base64); - var h2 = new d(e2, o2, s2); - this.files[e2] = h2; - } - var i = e("./utf8"), u = e("./utils"), l = e("./stream/GenericWorker"), a = e("./stream/StreamHelper"), f = e("./defaults"), c = e("./compressedObject"), d = e("./zipObject"), o = e("./generate"), p = e("./nodejsUtils"), m = e("./nodejs/NodejsStreamInputAdapter"), _ = function(e2) { - "/" === e2.slice(-1) && (e2 = e2.substring(0, e2.length - 1)); - var t2 = e2.lastIndexOf("/"); - return 0 < t2 ? e2.substring(0, t2) : ""; - }, g = function(e2) { - return "/" !== e2.slice(-1) && (e2 += "/"), e2; - }, b = function(e2, t2) { - return t2 = void 0 !== t2 ? t2 : f.createFolders, e2 = g(e2), this.files[e2] || s.call(this, e2, null, { dir: true, createFolders: t2 }), this.files[e2]; - }; - function h(e2) { - return "[object RegExp]" === Object.prototype.toString.call(e2); - } - var n = { load: function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, forEach: function(e2) { - var t2, r2, n2; - for (t2 in this.files) - n2 = this.files[t2], (r2 = t2.slice(this.root.length, t2.length)) && t2.slice(0, this.root.length) === this.root && e2(r2, n2); - }, filter: function(r2) { - var n2 = []; - return this.forEach(function(e2, t2) { - r2(e2, t2) && n2.push(t2); - }), n2; - }, file: function(e2, t2, r2) { - if (1 !== arguments.length) - return e2 = this.root + e2, s.call(this, e2, t2, r2), this; - if (h(e2)) { - var n2 = e2; - return this.filter(function(e3, t3) { - return !t3.dir && n2.test(e3); - }); - } - var i2 = this.files[this.root + e2]; - return i2 && !i2.dir ? i2 : null; - }, folder: function(r2) { - if (!r2) - return this; - if (h(r2)) - return this.filter(function(e3, t3) { - return t3.dir && r2.test(e3); - }); - var e2 = this.root + r2, t2 = b.call(this, e2), n2 = this.clone(); - return n2.root = t2.name, n2; - }, remove: function(r2) { - r2 = this.root + r2; - var e2 = this.files[r2]; - if (e2 || ("/" !== r2.slice(-1) && (r2 += "/"), e2 = this.files[r2]), e2 && !e2.dir) - delete this.files[r2]; - else - for (var t2 = this.filter(function(e3, t3) { - return t3.name.slice(0, r2.length) === r2; - }), n2 = 0; n2 < t2.length; n2++) - delete this.files[t2[n2].name]; - return this; - }, generate: function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, generateInternalStream: function(e2) { - var t2, r2 = {}; - try { - if ((r2 = u.extend(e2 || {}, { streamFiles: false, compression: "STORE", compressionOptions: null, type: "", platform: "DOS", comment: null, mimeType: "application/zip", encodeFileName: i.utf8encode })).type = r2.type.toLowerCase(), r2.compression = r2.compression.toUpperCase(), "binarystring" === r2.type && (r2.type = "string"), !r2.type) - throw new Error("No output type specified."); - u.checkSupport(r2.type), "darwin" !== r2.platform && "freebsd" !== r2.platform && "linux" !== r2.platform && "sunos" !== r2.platform || (r2.platform = "UNIX"), "win32" === r2.platform && (r2.platform = "DOS"); - var n2 = r2.comment || this.comment || ""; - t2 = o.generateWorker(this, r2, n2); - } catch (e3) { - (t2 = new l("error")).error(e3); - } - return new a(t2, r2.type || "string", r2.mimeType); - }, generateAsync: function(e2, t2) { - return this.generateInternalStream(e2).accumulate(t2); - }, generateNodeStream: function(e2, t2) { - return (e2 = e2 || {}).type || (e2.type = "nodebuffer"), this.generateInternalStream(e2).toNodejsStream(t2); - } }; - t.exports = n; - }, { "./compressedObject": 2, "./defaults": 5, "./generate": 9, "./nodejs/NodejsStreamInputAdapter": 12, "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31, "./utils": 32, "./zipObject": 35 }], 16: [function(e, t, r) { - "use strict"; - t.exports = e("stream"); - }, { stream: void 0 }], 17: [function(e, t, r) { - "use strict"; - var n = e("./DataReader"); - function i(e2) { - n.call(this, e2); - for (var t2 = 0; t2 < this.data.length; t2++) - e2[t2] = 255 & e2[t2]; - } - e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { - return this.data[this.zero + e2]; - }, i.prototype.lastIndexOfSignature = function(e2) { - for (var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.length - 4; 0 <= s; --s) - if (this.data[s] === t2 && this.data[s + 1] === r2 && this.data[s + 2] === n2 && this.data[s + 3] === i2) - return s - this.zero; - return -1; - }, i.prototype.readAndCheckSignature = function(e2) { - var t2 = e2.charCodeAt(0), r2 = e2.charCodeAt(1), n2 = e2.charCodeAt(2), i2 = e2.charCodeAt(3), s = this.readData(4); - return t2 === s[0] && r2 === s[1] && n2 === s[2] && i2 === s[3]; - }, i.prototype.readData = function(e2) { - if (this.checkOffset(e2), 0 === e2) - return []; - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./DataReader": 18 }], 18: [function(e, t, r) { - "use strict"; - var n = e("../utils"); - function i(e2) { - this.data = e2, this.length = e2.length, this.index = 0, this.zero = 0; - } - i.prototype = { checkOffset: function(e2) { - this.checkIndex(this.index + e2); - }, checkIndex: function(e2) { - if (this.length < this.zero + e2 || e2 < 0) - throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e2 + "). Corrupted zip ?"); - }, setIndex: function(e2) { - this.checkIndex(e2), this.index = e2; - }, skip: function(e2) { - this.setIndex(this.index + e2); - }, byteAt: function() { - }, readInt: function(e2) { - var t2, r2 = 0; - for (this.checkOffset(e2), t2 = this.index + e2 - 1; t2 >= this.index; t2--) - r2 = (r2 << 8) + this.byteAt(t2); - return this.index += e2, r2; - }, readString: function(e2) { - return n.transformTo("string", this.readData(e2)); - }, readData: function() { - }, lastIndexOfSignature: function() { - }, readAndCheckSignature: function() { - }, readDate: function() { - var e2 = this.readInt(4); - return new Date(Date.UTC(1980 + (e2 >> 25 & 127), (e2 >> 21 & 15) - 1, e2 >> 16 & 31, e2 >> 11 & 31, e2 >> 5 & 63, (31 & e2) << 1)); - } }, t.exports = i; - }, { "../utils": 32 }], 19: [function(e, t, r) { - "use strict"; - var n = e("./Uint8ArrayReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.readData = function(e2) { - this.checkOffset(e2); - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./Uint8ArrayReader": 21 }], 20: [function(e, t, r) { - "use strict"; - var n = e("./DataReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.byteAt = function(e2) { - return this.data.charCodeAt(this.zero + e2); - }, i.prototype.lastIndexOfSignature = function(e2) { - return this.data.lastIndexOf(e2) - this.zero; - }, i.prototype.readAndCheckSignature = function(e2) { - return e2 === this.readData(4); - }, i.prototype.readData = function(e2) { - this.checkOffset(e2); - var t2 = this.data.slice(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./DataReader": 18 }], 21: [function(e, t, r) { - "use strict"; - var n = e("./ArrayReader"); - function i(e2) { - n.call(this, e2); - } - e("../utils").inherits(i, n), i.prototype.readData = function(e2) { - if (this.checkOffset(e2), 0 === e2) - return new Uint8Array(0); - var t2 = this.data.subarray(this.zero + this.index, this.zero + this.index + e2); - return this.index += e2, t2; - }, t.exports = i; - }, { "../utils": 32, "./ArrayReader": 17 }], 22: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("../support"), s = e("./ArrayReader"), a = e("./StringReader"), o = e("./NodeBufferReader"), h = e("./Uint8ArrayReader"); - t.exports = function(e2) { - var t2 = n.getTypeOf(e2); - return n.checkSupport(t2), "string" !== t2 || i.uint8array ? "nodebuffer" === t2 ? new o(e2) : i.uint8array ? new h(n.transformTo("uint8array", e2)) : new s(n.transformTo("array", e2)) : new a(e2); - }; - }, { "../support": 30, "../utils": 32, "./ArrayReader": 17, "./NodeBufferReader": 19, "./StringReader": 20, "./Uint8ArrayReader": 21 }], 23: [function(e, t, r) { - "use strict"; - r.LOCAL_FILE_HEADER = "PK", r.CENTRAL_FILE_HEADER = "PK", r.CENTRAL_DIRECTORY_END = "PK", r.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x07", r.ZIP64_CENTRAL_DIRECTORY_END = "PK", r.DATA_DESCRIPTOR = "PK\x07\b"; - }, {}], 24: [function(e, t, r) { - "use strict"; - var n = e("./GenericWorker"), i = e("../utils"); - function s(e2) { - n.call(this, "ConvertWorker to " + e2), this.destType = e2; - } - i.inherits(s, n), s.prototype.processChunk = function(e2) { - this.push({ data: i.transformTo(this.destType, e2.data), meta: e2.meta }); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 25: [function(e, t, r) { - "use strict"; - var n = e("./GenericWorker"), i = e("../crc32"); - function s() { - n.call(this, "Crc32Probe"), this.withStreamInfo("crc32", 0); - } - e("../utils").inherits(s, n), s.prototype.processChunk = function(e2) { - this.streamInfo.crc32 = i(e2.data, this.streamInfo.crc32 || 0), this.push(e2); - }, t.exports = s; - }, { "../crc32": 4, "../utils": 32, "./GenericWorker": 28 }], 26: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("./GenericWorker"); - function s(e2) { - i.call(this, "DataLengthProbe for " + e2), this.propName = e2, this.withStreamInfo(e2, 0); - } - n.inherits(s, i), s.prototype.processChunk = function(e2) { - if (e2) { - var t2 = this.streamInfo[this.propName] || 0; - this.streamInfo[this.propName] = t2 + e2.data.length; - } - i.prototype.processChunk.call(this, e2); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 27: [function(e, t, r) { - "use strict"; - var n = e("../utils"), i = e("./GenericWorker"); - function s(e2) { - i.call(this, "DataWorker"); - var t2 = this; - this.dataIsReady = false, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = false, e2.then(function(e3) { - t2.dataIsReady = true, t2.data = e3, t2.max = e3 && e3.length || 0, t2.type = n.getTypeOf(e3), t2.isPaused || t2._tickAndRepeat(); - }, function(e3) { - t2.error(e3); - }); - } - n.inherits(s, i), s.prototype.cleanUp = function() { - i.prototype.cleanUp.call(this), this.data = null; - }, s.prototype.resume = function() { - return !!i.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = true, n.delay(this._tickAndRepeat, [], this)), true); - }, s.prototype._tickAndRepeat = function() { - this._tickScheduled = false, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (n.delay(this._tickAndRepeat, [], this), this._tickScheduled = true)); - }, s.prototype._tick = function() { - if (this.isPaused || this.isFinished) - return false; - var e2 = null, t2 = Math.min(this.max, this.index + 16384); - if (this.index >= this.max) - return this.end(); - switch (this.type) { - case "string": - e2 = this.data.substring(this.index, t2); - break; - case "uint8array": - e2 = this.data.subarray(this.index, t2); - break; - case "array": - case "nodebuffer": - e2 = this.data.slice(this.index, t2); - } - return this.index = t2, this.push({ data: e2, meta: { percent: this.max ? this.index / this.max * 100 : 0 } }); - }, t.exports = s; - }, { "../utils": 32, "./GenericWorker": 28 }], 28: [function(e, t, r) { - "use strict"; - function n(e2) { - this.name = e2 || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = true, this.isFinished = false, this.isLocked = false, this._listeners = { data: [], end: [], error: [] }, this.previous = null; - } - n.prototype = { push: function(e2) { - this.emit("data", e2); - }, end: function() { - if (this.isFinished) - return false; - this.flush(); - try { - this.emit("end"), this.cleanUp(), this.isFinished = true; - } catch (e2) { - this.emit("error", e2); - } - return true; - }, error: function(e2) { - return !this.isFinished && (this.isPaused ? this.generatedError = e2 : (this.isFinished = true, this.emit("error", e2), this.previous && this.previous.error(e2), this.cleanUp()), true); - }, on: function(e2, t2) { - return this._listeners[e2].push(t2), this; - }, cleanUp: function() { - this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = []; - }, emit: function(e2, t2) { - if (this._listeners[e2]) - for (var r2 = 0; r2 < this._listeners[e2].length; r2++) - this._listeners[e2][r2].call(this, t2); - }, pipe: function(e2) { - return e2.registerPrevious(this); - }, registerPrevious: function(e2) { - if (this.isLocked) - throw new Error("The stream '" + this + "' has already been used."); - this.streamInfo = e2.streamInfo, this.mergeStreamInfo(), this.previous = e2; - var t2 = this; - return e2.on("data", function(e3) { - t2.processChunk(e3); - }), e2.on("end", function() { - t2.end(); - }), e2.on("error", function(e3) { - t2.error(e3); - }), this; - }, pause: function() { - return !this.isPaused && !this.isFinished && (this.isPaused = true, this.previous && this.previous.pause(), true); - }, resume: function() { - if (!this.isPaused || this.isFinished) - return false; - var e2 = this.isPaused = false; - return this.generatedError && (this.error(this.generatedError), e2 = true), this.previous && this.previous.resume(), !e2; - }, flush: function() { - }, processChunk: function(e2) { - this.push(e2); - }, withStreamInfo: function(e2, t2) { - return this.extraStreamInfo[e2] = t2, this.mergeStreamInfo(), this; - }, mergeStreamInfo: function() { - for (var e2 in this.extraStreamInfo) - Object.prototype.hasOwnProperty.call(this.extraStreamInfo, e2) && (this.streamInfo[e2] = this.extraStreamInfo[e2]); - }, lock: function() { - if (this.isLocked) - throw new Error("The stream '" + this + "' has already been used."); - this.isLocked = true, this.previous && this.previous.lock(); - }, toString: function() { - var e2 = "Worker " + this.name; - return this.previous ? this.previous + " -> " + e2 : e2; - } }, t.exports = n; - }, {}], 29: [function(e, t, r) { - "use strict"; - var h = e("../utils"), i = e("./ConvertWorker"), s = e("./GenericWorker"), u = e("../base64"), n = e("../support"), a = e("../external"), o = null; - if (n.nodestream) - try { - o = e("../nodejs/NodejsStreamOutputAdapter"); - } catch (e2) { - } - function l(e2, o2) { - return new a.Promise(function(t2, r2) { - var n2 = [], i2 = e2._internalType, s2 = e2._outputType, a2 = e2._mimeType; - e2.on("data", function(e3, t3) { - n2.push(e3), o2 && o2(t3); - }).on("error", function(e3) { - n2 = [], r2(e3); - }).on("end", function() { - try { - var e3 = function(e4, t3, r3) { - switch (e4) { - case "blob": - return h.newBlob(h.transformTo("arraybuffer", t3), r3); - case "base64": - return u.encode(t3); - default: - return h.transformTo(e4, t3); - } - }(s2, function(e4, t3) { - var r3, n3 = 0, i3 = null, s3 = 0; - for (r3 = 0; r3 < t3.length; r3++) - s3 += t3[r3].length; - switch (e4) { - case "string": - return t3.join(""); - case "array": - return Array.prototype.concat.apply([], t3); - case "uint8array": - for (i3 = new Uint8Array(s3), r3 = 0; r3 < t3.length; r3++) - i3.set(t3[r3], n3), n3 += t3[r3].length; - return i3; - case "nodebuffer": - return Buffer.concat(t3); - default: - throw new Error("concat : unsupported type '" + e4 + "'"); - } - }(i2, n2), a2); - t2(e3); - } catch (e4) { - r2(e4); - } - n2 = []; - }).resume(); - }); - } - function f(e2, t2, r2) { - var n2 = t2; - switch (t2) { - case "blob": - case "arraybuffer": - n2 = "uint8array"; - break; - case "base64": - n2 = "string"; - } - try { - this._internalType = n2, this._outputType = t2, this._mimeType = r2, h.checkSupport(n2), this._worker = e2.pipe(new i(n2)), e2.lock(); - } catch (e3) { - this._worker = new s("error"), this._worker.error(e3); - } - } - f.prototype = { accumulate: function(e2) { - return l(this, e2); - }, on: function(e2, t2) { - var r2 = this; - return "data" === e2 ? this._worker.on(e2, function(e3) { - t2.call(r2, e3.data, e3.meta); - }) : this._worker.on(e2, function() { - h.delay(t2, arguments, r2); - }), this; - }, resume: function() { - return h.delay(this._worker.resume, [], this._worker), this; - }, pause: function() { - return this._worker.pause(), this; - }, toNodejsStream: function(e2) { - if (h.checkSupport("nodestream"), "nodebuffer" !== this._outputType) - throw new Error(this._outputType + " is not supported by this method"); - return new o(this, { objectMode: "nodebuffer" !== this._outputType }, e2); - } }, t.exports = f; - }, { "../base64": 1, "../external": 6, "../nodejs/NodejsStreamOutputAdapter": 13, "../support": 30, "../utils": 32, "./ConvertWorker": 24, "./GenericWorker": 28 }], 30: [function(e, t, r) { - "use strict"; - if (r.base64 = true, r.array = true, r.string = true, r.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, r.nodebuffer = "undefined" != typeof Buffer, r.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) - r.blob = false; - else { - var n = new ArrayBuffer(0); - try { - r.blob = 0 === new Blob([n], { type: "application/zip" }).size; - } catch (e2) { - try { - var i = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); - i.append(n), r.blob = 0 === i.getBlob("application/zip").size; - } catch (e3) { - r.blob = false; - } - } - } - try { - r.nodestream = !!e("readable-stream").Readable; - } catch (e2) { - r.nodestream = false; - } - }, { "readable-stream": 16 }], 31: [function(e, t, s) { - "use strict"; - for (var o = e("./utils"), h = e("./support"), r = e("./nodejsUtils"), n = e("./stream/GenericWorker"), u = new Array(256), i = 0; i < 256; i++) - u[i] = 252 <= i ? 6 : 248 <= i ? 5 : 240 <= i ? 4 : 224 <= i ? 3 : 192 <= i ? 2 : 1; - u[254] = u[254] = 1; - function a() { - n.call(this, "utf-8 decode"), this.leftOver = null; - } - function l() { - n.call(this, "utf-8 encode"); - } - s.utf8encode = function(e2) { - return h.nodebuffer ? r.newBufferFrom(e2, "utf-8") : function(e3) { - var t2, r2, n2, i2, s2, a2 = e3.length, o2 = 0; - for (i2 = 0; i2 < a2; i2++) - 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o2 += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; - for (t2 = h.uint8array ? new Uint8Array(o2) : new Array(o2), i2 = s2 = 0; s2 < o2; i2++) - 55296 == (64512 & (r2 = e3.charCodeAt(i2))) && i2 + 1 < a2 && 56320 == (64512 & (n2 = e3.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); - return t2; - }(e2); - }, s.utf8decode = function(e2) { - return h.nodebuffer ? o.transformTo("nodebuffer", e2).toString("utf-8") : function(e3) { - var t2, r2, n2, i2, s2 = e3.length, a2 = new Array(2 * s2); - for (t2 = r2 = 0; t2 < s2; ) - if ((n2 = e3[t2++]) < 128) - a2[r2++] = n2; - else if (4 < (i2 = u[n2])) - a2[r2++] = 65533, t2 += i2 - 1; - else { - for (n2 &= 2 === i2 ? 31 : 3 === i2 ? 15 : 7; 1 < i2 && t2 < s2; ) - n2 = n2 << 6 | 63 & e3[t2++], i2--; - 1 < i2 ? a2[r2++] = 65533 : n2 < 65536 ? a2[r2++] = n2 : (n2 -= 65536, a2[r2++] = 55296 | n2 >> 10 & 1023, a2[r2++] = 56320 | 1023 & n2); - } - return a2.length !== r2 && (a2.subarray ? a2 = a2.subarray(0, r2) : a2.length = r2), o.applyFromCharCode(a2); - }(e2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2)); - }, o.inherits(a, n), a.prototype.processChunk = function(e2) { - var t2 = o.transformTo(h.uint8array ? "uint8array" : "array", e2.data); - if (this.leftOver && this.leftOver.length) { - if (h.uint8array) { - var r2 = t2; - (t2 = new Uint8Array(r2.length + this.leftOver.length)).set(this.leftOver, 0), t2.set(r2, this.leftOver.length); - } else - t2 = this.leftOver.concat(t2); - this.leftOver = null; - } - var n2 = function(e3, t3) { - var r3; - for ((t3 = t3 || e3.length) > e3.length && (t3 = e3.length), r3 = t3 - 1; 0 <= r3 && 128 == (192 & e3[r3]); ) - r3--; - return r3 < 0 ? t3 : 0 === r3 ? t3 : r3 + u[e3[r3]] > t3 ? r3 : t3; - }(t2), i2 = t2; - n2 !== t2.length && (h.uint8array ? (i2 = t2.subarray(0, n2), this.leftOver = t2.subarray(n2, t2.length)) : (i2 = t2.slice(0, n2), this.leftOver = t2.slice(n2, t2.length))), this.push({ data: s.utf8decode(i2), meta: e2.meta }); - }, a.prototype.flush = function() { - this.leftOver && this.leftOver.length && (this.push({ data: s.utf8decode(this.leftOver), meta: {} }), this.leftOver = null); - }, s.Utf8DecodeWorker = a, o.inherits(l, n), l.prototype.processChunk = function(e2) { - this.push({ data: s.utf8encode(e2.data), meta: e2.meta }); - }, s.Utf8EncodeWorker = l; - }, { "./nodejsUtils": 14, "./stream/GenericWorker": 28, "./support": 30, "./utils": 32 }], 32: [function(e, t, a) { - "use strict"; - var o = e("./support"), h = e("./base64"), r = e("./nodejsUtils"), u = e("./external"); - function n(e2) { - return e2; - } - function l(e2, t2) { - for (var r2 = 0; r2 < e2.length; ++r2) - t2[r2] = 255 & e2.charCodeAt(r2); - return t2; - } - e("setimmediate"), a.newBlob = function(t2, r2) { - a.checkSupport("blob"); - try { - return new Blob([t2], { type: r2 }); - } catch (e2) { - try { - var n2 = new (self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder)(); - return n2.append(t2), n2.getBlob(r2); - } catch (e3) { - throw new Error("Bug : can't construct the Blob."); - } - } - }; - var i = { stringifyByChunk: function(e2, t2, r2) { - var n2 = [], i2 = 0, s2 = e2.length; - if (s2 <= r2) - return String.fromCharCode.apply(null, e2); - for (; i2 < s2; ) - "array" === t2 || "nodebuffer" === t2 ? n2.push(String.fromCharCode.apply(null, e2.slice(i2, Math.min(i2 + r2, s2)))) : n2.push(String.fromCharCode.apply(null, e2.subarray(i2, Math.min(i2 + r2, s2)))), i2 += r2; - return n2.join(""); - }, stringifyByChar: function(e2) { - for (var t2 = "", r2 = 0; r2 < e2.length; r2++) - t2 += String.fromCharCode(e2[r2]); - return t2; - }, applyCanBeUsed: { uint8array: function() { - try { - return o.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length; - } catch (e2) { - return false; - } - }(), nodebuffer: function() { - try { - return o.nodebuffer && 1 === String.fromCharCode.apply(null, r.allocBuffer(1)).length; - } catch (e2) { - return false; - } - }() } }; - function s(e2) { - var t2 = 65536, r2 = a.getTypeOf(e2), n2 = true; - if ("uint8array" === r2 ? n2 = i.applyCanBeUsed.uint8array : "nodebuffer" === r2 && (n2 = i.applyCanBeUsed.nodebuffer), n2) - for (; 1 < t2; ) - try { - return i.stringifyByChunk(e2, r2, t2); - } catch (e3) { - t2 = Math.floor(t2 / 2); - } - return i.stringifyByChar(e2); - } - function f(e2, t2) { - for (var r2 = 0; r2 < e2.length; r2++) - t2[r2] = e2[r2]; - return t2; - } - a.applyFromCharCode = s; - var c = {}; - c.string = { string: n, array: function(e2) { - return l(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return c.string.uint8array(e2).buffer; - }, uint8array: function(e2) { - return l(e2, new Uint8Array(e2.length)); - }, nodebuffer: function(e2) { - return l(e2, r.allocBuffer(e2.length)); - } }, c.array = { string: s, array: n, arraybuffer: function(e2) { - return new Uint8Array(e2).buffer; - }, uint8array: function(e2) { - return new Uint8Array(e2); - }, nodebuffer: function(e2) { - return r.newBufferFrom(e2); - } }, c.arraybuffer = { string: function(e2) { - return s(new Uint8Array(e2)); - }, array: function(e2) { - return f(new Uint8Array(e2), new Array(e2.byteLength)); - }, arraybuffer: n, uint8array: function(e2) { - return new Uint8Array(e2); - }, nodebuffer: function(e2) { - return r.newBufferFrom(new Uint8Array(e2)); - } }, c.uint8array = { string: s, array: function(e2) { - return f(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return e2.buffer; - }, uint8array: n, nodebuffer: function(e2) { - return r.newBufferFrom(e2); - } }, c.nodebuffer = { string: s, array: function(e2) { - return f(e2, new Array(e2.length)); - }, arraybuffer: function(e2) { - return c.nodebuffer.uint8array(e2).buffer; - }, uint8array: function(e2) { - return f(e2, new Uint8Array(e2.length)); - }, nodebuffer: n }, a.transformTo = function(e2, t2) { - if (t2 = t2 || "", !e2) - return t2; - a.checkSupport(e2); - var r2 = a.getTypeOf(t2); - return c[r2][e2](t2); - }, a.resolve = function(e2) { - for (var t2 = e2.split("/"), r2 = [], n2 = 0; n2 < t2.length; n2++) { - var i2 = t2[n2]; - "." === i2 || "" === i2 && 0 !== n2 && n2 !== t2.length - 1 || (".." === i2 ? r2.pop() : r2.push(i2)); - } - return r2.join("/"); - }, a.getTypeOf = function(e2) { - return "string" == typeof e2 ? "string" : "[object Array]" === Object.prototype.toString.call(e2) ? "array" : o.nodebuffer && r.isBuffer(e2) ? "nodebuffer" : o.uint8array && e2 instanceof Uint8Array ? "uint8array" : o.arraybuffer && e2 instanceof ArrayBuffer ? "arraybuffer" : void 0; - }, a.checkSupport = function(e2) { - if (!o[e2.toLowerCase()]) - throw new Error(e2 + " is not supported by this platform"); - }, a.MAX_VALUE_16BITS = 65535, a.MAX_VALUE_32BITS = -1, a.pretty = function(e2) { - var t2, r2, n2 = ""; - for (r2 = 0; r2 < (e2 || "").length; r2++) - n2 += "\\x" + ((t2 = e2.charCodeAt(r2)) < 16 ? "0" : "") + t2.toString(16).toUpperCase(); - return n2; - }, a.delay = function(e2, t2, r2) { - setImmediate(function() { - e2.apply(r2 || null, t2 || []); - }); - }, a.inherits = function(e2, t2) { - function r2() { - } - r2.prototype = t2.prototype, e2.prototype = new r2(); - }, a.extend = function() { - var e2, t2, r2 = {}; - for (e2 = 0; e2 < arguments.length; e2++) - for (t2 in arguments[e2]) - Object.prototype.hasOwnProperty.call(arguments[e2], t2) && void 0 === r2[t2] && (r2[t2] = arguments[e2][t2]); - return r2; - }, a.prepareContent = function(r2, e2, n2, i2, s2) { - return u.Promise.resolve(e2).then(function(n3) { - return o.blob && (n3 instanceof Blob || -1 !== ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(n3))) && "undefined" != typeof FileReader ? new u.Promise(function(t2, r3) { - var e3 = new FileReader(); - e3.onload = function(e4) { - t2(e4.target.result); - }, e3.onerror = function(e4) { - r3(e4.target.error); - }, e3.readAsArrayBuffer(n3); - }) : n3; - }).then(function(e3) { - var t2 = a.getTypeOf(e3); - return t2 ? ("arraybuffer" === t2 ? e3 = a.transformTo("uint8array", e3) : "string" === t2 && (s2 ? e3 = h.decode(e3) : n2 && true !== i2 && (e3 = function(e4) { - return l(e4, o.uint8array ? new Uint8Array(e4.length) : new Array(e4.length)); - }(e3))), e3) : u.Promise.reject(new Error("Can't read the data of '" + r2 + "'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")); - }); - }; - }, { "./base64": 1, "./external": 6, "./nodejsUtils": 14, "./support": 30, setimmediate: 54 }], 33: [function(e, t, r) { - "use strict"; - var n = e("./reader/readerFor"), i = e("./utils"), s = e("./signature"), a = e("./zipEntry"), o = e("./support"); - function h(e2) { - this.files = [], this.loadOptions = e2; - } - h.prototype = { checkSignature: function(e2) { - if (!this.reader.readAndCheckSignature(e2)) { - this.reader.index -= 4; - var t2 = this.reader.readString(4); - throw new Error("Corrupted zip or bug: unexpected signature (" + i.pretty(t2) + ", expected " + i.pretty(e2) + ")"); - } - }, isSignature: function(e2, t2) { - var r2 = this.reader.index; - this.reader.setIndex(e2); - var n2 = this.reader.readString(4) === t2; - return this.reader.setIndex(r2), n2; - }, readBlockEndOfCentral: function() { - this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); - var e2 = this.reader.readData(this.zipCommentLength), t2 = o.uint8array ? "uint8array" : "array", r2 = i.transformTo(t2, e2); - this.zipComment = this.loadOptions.decodeFileName(r2); - }, readBlockZip64EndOfCentral: function() { - this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; - for (var e2, t2, r2, n2 = this.zip64EndOfCentralSize - 44; 0 < n2; ) - e2 = this.reader.readInt(2), t2 = this.reader.readInt(4), r2 = this.reader.readData(t2), this.zip64ExtensibleData[e2] = { id: e2, length: t2, value: r2 }; - }, readBlockZip64EndOfCentralLocator: function() { - if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), 1 < this.disksCount) - throw new Error("Multi-volumes zip are not supported"); - }, readLocalFiles: function() { - var e2, t2; - for (e2 = 0; e2 < this.files.length; e2++) - t2 = this.files[e2], this.reader.setIndex(t2.localHeaderOffset), this.checkSignature(s.LOCAL_FILE_HEADER), t2.readLocalPart(this.reader), t2.handleUTF8(), t2.processAttributes(); - }, readCentralDir: function() { - var e2; - for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER); ) - (e2 = new a({ zip64: this.zip64 }, this.loadOptions)).readCentralPart(this.reader), this.files.push(e2); - if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) - throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length); - }, readEndOfCentral: function() { - var e2 = this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END); - if (e2 < 0) - throw !this.isSignature(0, s.LOCAL_FILE_HEADER) ? new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip: can't find end of central directory"); - this.reader.setIndex(e2); - var t2 = e2; - if (this.checkSignature(s.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === i.MAX_VALUE_16BITS || this.diskWithCentralDirStart === i.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === i.MAX_VALUE_16BITS || this.centralDirRecords === i.MAX_VALUE_16BITS || this.centralDirSize === i.MAX_VALUE_32BITS || this.centralDirOffset === i.MAX_VALUE_32BITS) { - if (this.zip64 = true, (e2 = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR)) < 0) - throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator"); - if (this.reader.setIndex(e2), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, s.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) - throw new Error("Corrupted zip: can't find the ZIP64 end of central directory"); - this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral(); - } - var r2 = this.centralDirOffset + this.centralDirSize; - this.zip64 && (r2 += 20, r2 += 12 + this.zip64EndOfCentralSize); - var n2 = t2 - r2; - if (0 < n2) - this.isSignature(t2, s.CENTRAL_FILE_HEADER) || (this.reader.zero = n2); - else if (n2 < 0) - throw new Error("Corrupted zip: missing " + Math.abs(n2) + " bytes."); - }, prepareReader: function(e2) { - this.reader = n(e2); - }, load: function(e2) { - this.prepareReader(e2), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles(); - } }, t.exports = h; - }, { "./reader/readerFor": 22, "./signature": 23, "./support": 30, "./utils": 32, "./zipEntry": 34 }], 34: [function(e, t, r) { - "use strict"; - var n = e("./reader/readerFor"), s = e("./utils"), i = e("./compressedObject"), a = e("./crc32"), o = e("./utf8"), h = e("./compressions"), u = e("./support"); - function l(e2, t2) { - this.options = e2, this.loadOptions = t2; - } - l.prototype = { isEncrypted: function() { - return 1 == (1 & this.bitFlag); - }, useUTF8: function() { - return 2048 == (2048 & this.bitFlag); - }, readLocalPart: function(e2) { - var t2, r2; - if (e2.skip(22), this.fileNameLength = e2.readInt(2), r2 = e2.readInt(2), this.fileName = e2.readData(this.fileNameLength), e2.skip(r2), -1 === this.compressedSize || -1 === this.uncompressedSize) - throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"); - if (null === (t2 = function(e3) { - for (var t3 in h) - if (Object.prototype.hasOwnProperty.call(h, t3) && h[t3].magic === e3) - return h[t3]; - return null; - }(this.compressionMethod))) - throw new Error("Corrupted zip : compression " + s.pretty(this.compressionMethod) + " unknown (inner file : " + s.transformTo("string", this.fileName) + ")"); - this.decompressed = new i(this.compressedSize, this.uncompressedSize, this.crc32, t2, e2.readData(this.compressedSize)); - }, readCentralPart: function(e2) { - this.versionMadeBy = e2.readInt(2), e2.skip(2), this.bitFlag = e2.readInt(2), this.compressionMethod = e2.readString(2), this.date = e2.readDate(), this.crc32 = e2.readInt(4), this.compressedSize = e2.readInt(4), this.uncompressedSize = e2.readInt(4); - var t2 = e2.readInt(2); - if (this.extraFieldsLength = e2.readInt(2), this.fileCommentLength = e2.readInt(2), this.diskNumberStart = e2.readInt(2), this.internalFileAttributes = e2.readInt(2), this.externalFileAttributes = e2.readInt(4), this.localHeaderOffset = e2.readInt(4), this.isEncrypted()) - throw new Error("Encrypted zip are not supported"); - e2.skip(t2), this.readExtraFields(e2), this.parseZIP64ExtraField(e2), this.fileComment = e2.readData(this.fileCommentLength); - }, processAttributes: function() { - this.unixPermissions = null, this.dosPermissions = null; - var e2 = this.versionMadeBy >> 8; - this.dir = !!(16 & this.externalFileAttributes), 0 == e2 && (this.dosPermissions = 63 & this.externalFileAttributes), 3 == e2 && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = true); - }, parseZIP64ExtraField: function() { - if (this.extraFields[1]) { - var e2 = n(this.extraFields[1].value); - this.uncompressedSize === s.MAX_VALUE_32BITS && (this.uncompressedSize = e2.readInt(8)), this.compressedSize === s.MAX_VALUE_32BITS && (this.compressedSize = e2.readInt(8)), this.localHeaderOffset === s.MAX_VALUE_32BITS && (this.localHeaderOffset = e2.readInt(8)), this.diskNumberStart === s.MAX_VALUE_32BITS && (this.diskNumberStart = e2.readInt(4)); - } - }, readExtraFields: function(e2) { - var t2, r2, n2, i2 = e2.index + this.extraFieldsLength; - for (this.extraFields || (this.extraFields = {}); e2.index + 4 < i2; ) - t2 = e2.readInt(2), r2 = e2.readInt(2), n2 = e2.readData(r2), this.extraFields[t2] = { id: t2, length: r2, value: n2 }; - e2.setIndex(i2); - }, handleUTF8: function() { - var e2 = u.uint8array ? "uint8array" : "array"; - if (this.useUTF8()) - this.fileNameStr = o.utf8decode(this.fileName), this.fileCommentStr = o.utf8decode(this.fileComment); - else { - var t2 = this.findExtraFieldUnicodePath(); - if (null !== t2) - this.fileNameStr = t2; - else { - var r2 = s.transformTo(e2, this.fileName); - this.fileNameStr = this.loadOptions.decodeFileName(r2); - } - var n2 = this.findExtraFieldUnicodeComment(); - if (null !== n2) - this.fileCommentStr = n2; - else { - var i2 = s.transformTo(e2, this.fileComment); - this.fileCommentStr = this.loadOptions.decodeFileName(i2); - } - } - }, findExtraFieldUnicodePath: function() { - var e2 = this.extraFields[28789]; - if (e2) { - var t2 = n(e2.value); - return 1 !== t2.readInt(1) ? null : a(this.fileName) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); - } - return null; - }, findExtraFieldUnicodeComment: function() { - var e2 = this.extraFields[25461]; - if (e2) { - var t2 = n(e2.value); - return 1 !== t2.readInt(1) ? null : a(this.fileComment) !== t2.readInt(4) ? null : o.utf8decode(t2.readData(e2.length - 5)); - } - return null; - } }, t.exports = l; - }, { "./compressedObject": 2, "./compressions": 3, "./crc32": 4, "./reader/readerFor": 22, "./support": 30, "./utf8": 31, "./utils": 32 }], 35: [function(e, t, r) { - "use strict"; - function n(e2, t2, r2) { - this.name = e2, this.dir = r2.dir, this.date = r2.date, this.comment = r2.comment, this.unixPermissions = r2.unixPermissions, this.dosPermissions = r2.dosPermissions, this._data = t2, this._dataBinary = r2.binary, this.options = { compression: r2.compression, compressionOptions: r2.compressionOptions }; - } - var s = e("./stream/StreamHelper"), i = e("./stream/DataWorker"), a = e("./utf8"), o = e("./compressedObject"), h = e("./stream/GenericWorker"); - n.prototype = { internalStream: function(e2) { - var t2 = null, r2 = "string"; - try { - if (!e2) - throw new Error("No output type specified."); - var n2 = "string" === (r2 = e2.toLowerCase()) || "text" === r2; - "binarystring" !== r2 && "text" !== r2 || (r2 = "string"), t2 = this._decompressWorker(); - var i2 = !this._dataBinary; - i2 && !n2 && (t2 = t2.pipe(new a.Utf8EncodeWorker())), !i2 && n2 && (t2 = t2.pipe(new a.Utf8DecodeWorker())); - } catch (e3) { - (t2 = new h("error")).error(e3); - } - return new s(t2, r2, ""); - }, async: function(e2, t2) { - return this.internalStream(e2).accumulate(t2); - }, nodeStream: function(e2, t2) { - return this.internalStream(e2 || "nodebuffer").toNodejsStream(t2); - }, _compressWorker: function(e2, t2) { - if (this._data instanceof o && this._data.compression.magic === e2.magic) - return this._data.getCompressedWorker(); - var r2 = this._decompressWorker(); - return this._dataBinary || (r2 = r2.pipe(new a.Utf8EncodeWorker())), o.createWorkerFrom(r2, e2, t2); - }, _decompressWorker: function() { - return this._data instanceof o ? this._data.getContentWorker() : this._data instanceof h ? this._data : new i(this._data); - } }; - for (var u = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], l = function() { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide."); - }, f = 0; f < u.length; f++) - n.prototype[u[f]] = l; - t.exports = n; - }, { "./compressedObject": 2, "./stream/DataWorker": 27, "./stream/GenericWorker": 28, "./stream/StreamHelper": 29, "./utf8": 31 }], 36: [function(e, l, t) { - (function(t2) { - "use strict"; - var r, n, e2 = t2.MutationObserver || t2.WebKitMutationObserver; - if (e2) { - var i = 0, s = new e2(u), a = t2.document.createTextNode(""); - s.observe(a, { characterData: true }), r = function() { - a.data = i = ++i % 2; - }; - } else if (t2.setImmediate || void 0 === t2.MessageChannel) - r = "document" in t2 && "onreadystatechange" in t2.document.createElement("script") ? function() { - var e3 = t2.document.createElement("script"); - e3.onreadystatechange = function() { - u(), e3.onreadystatechange = null, e3.parentNode.removeChild(e3), e3 = null; - }, t2.document.documentElement.appendChild(e3); - } : function() { - setTimeout(u, 0); - }; - else { - var o = new t2.MessageChannel(); - o.port1.onmessage = u, r = function() { - o.port2.postMessage(0); - }; - } - var h = []; - function u() { - var e3, t3; - n = true; - for (var r2 = h.length; r2; ) { - for (t3 = h, h = [], e3 = -1; ++e3 < r2; ) - t3[e3](); - r2 = h.length; - } - n = false; - } - l.exports = function(e3) { - 1 !== h.push(e3) || n || r(); - }; - }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); - }, {}], 37: [function(e, t, r) { - "use strict"; - var i = e("immediate"); - function u() { - } - var l = {}, s = ["REJECTED"], a = ["FULFILLED"], n = ["PENDING"]; - function o(e2) { - if ("function" != typeof e2) - throw new TypeError("resolver must be a function"); - this.state = n, this.queue = [], this.outcome = void 0, e2 !== u && d(this, e2); - } - function h(e2, t2, r2) { - this.promise = e2, "function" == typeof t2 && (this.onFulfilled = t2, this.callFulfilled = this.otherCallFulfilled), "function" == typeof r2 && (this.onRejected = r2, this.callRejected = this.otherCallRejected); - } - function f(t2, r2, n2) { - i(function() { - var e2; - try { - e2 = r2(n2); - } catch (e3) { - return l.reject(t2, e3); - } - e2 === t2 ? l.reject(t2, new TypeError("Cannot resolve promise with itself")) : l.resolve(t2, e2); - }); - } - function c(e2) { - var t2 = e2 && e2.then; - if (e2 && ("object" == typeof e2 || "function" == typeof e2) && "function" == typeof t2) - return function() { - t2.apply(e2, arguments); - }; - } - function d(t2, e2) { - var r2 = false; - function n2(e3) { - r2 || (r2 = true, l.reject(t2, e3)); - } - function i2(e3) { - r2 || (r2 = true, l.resolve(t2, e3)); - } - var s2 = p(function() { - e2(i2, n2); - }); - "error" === s2.status && n2(s2.value); - } - function p(e2, t2) { - var r2 = {}; - try { - r2.value = e2(t2), r2.status = "success"; - } catch (e3) { - r2.status = "error", r2.value = e3; - } - return r2; - } - (t.exports = o).prototype.finally = function(t2) { - if ("function" != typeof t2) - return this; - var r2 = this.constructor; - return this.then(function(e2) { - return r2.resolve(t2()).then(function() { - return e2; - }); - }, function(e2) { - return r2.resolve(t2()).then(function() { - throw e2; - }); - }); - }, o.prototype.catch = function(e2) { - return this.then(null, e2); - }, o.prototype.then = function(e2, t2) { - if ("function" != typeof e2 && this.state === a || "function" != typeof t2 && this.state === s) - return this; - var r2 = new this.constructor(u); - this.state !== n ? f(r2, this.state === a ? e2 : t2, this.outcome) : this.queue.push(new h(r2, e2, t2)); - return r2; - }, h.prototype.callFulfilled = function(e2) { - l.resolve(this.promise, e2); - }, h.prototype.otherCallFulfilled = function(e2) { - f(this.promise, this.onFulfilled, e2); - }, h.prototype.callRejected = function(e2) { - l.reject(this.promise, e2); - }, h.prototype.otherCallRejected = function(e2) { - f(this.promise, this.onRejected, e2); - }, l.resolve = function(e2, t2) { - var r2 = p(c, t2); - if ("error" === r2.status) - return l.reject(e2, r2.value); - var n2 = r2.value; - if (n2) - d(e2, n2); - else { - e2.state = a, e2.outcome = t2; - for (var i2 = -1, s2 = e2.queue.length; ++i2 < s2; ) - e2.queue[i2].callFulfilled(t2); - } - return e2; - }, l.reject = function(e2, t2) { - e2.state = s, e2.outcome = t2; - for (var r2 = -1, n2 = e2.queue.length; ++r2 < n2; ) - e2.queue[r2].callRejected(t2); - return e2; - }, o.resolve = function(e2) { - if (e2 instanceof this) - return e2; - return l.resolve(new this(u), e2); - }, o.reject = function(e2) { - var t2 = new this(u); - return l.reject(t2, e2); - }, o.all = function(e2) { - var r2 = this; - if ("[object Array]" !== Object.prototype.toString.call(e2)) - return this.reject(new TypeError("must be an array")); - var n2 = e2.length, i2 = false; - if (!n2) - return this.resolve([]); - var s2 = new Array(n2), a2 = 0, t2 = -1, o2 = new this(u); - for (; ++t2 < n2; ) - h2(e2[t2], t2); - return o2; - function h2(e3, t3) { - r2.resolve(e3).then(function(e4) { - s2[t3] = e4, ++a2 !== n2 || i2 || (i2 = true, l.resolve(o2, s2)); - }, function(e4) { - i2 || (i2 = true, l.reject(o2, e4)); - }); - } - }, o.race = function(e2) { - var t2 = this; - if ("[object Array]" !== Object.prototype.toString.call(e2)) - return this.reject(new TypeError("must be an array")); - var r2 = e2.length, n2 = false; - if (!r2) - return this.resolve([]); - var i2 = -1, s2 = new this(u); - for (; ++i2 < r2; ) - a2 = e2[i2], t2.resolve(a2).then(function(e3) { - n2 || (n2 = true, l.resolve(s2, e3)); - }, function(e3) { - n2 || (n2 = true, l.reject(s2, e3)); - }); - var a2; - return s2; - }; - }, { immediate: 36 }], 38: [function(e, t, r) { - "use strict"; - var n = {}; - (0, e("./lib/utils/common").assign)(n, e("./lib/deflate"), e("./lib/inflate"), e("./lib/zlib/constants")), t.exports = n; - }, { "./lib/deflate": 39, "./lib/inflate": 40, "./lib/utils/common": 41, "./lib/zlib/constants": 44 }], 39: [function(e, t, r) { - "use strict"; - var a = e("./zlib/deflate"), o = e("./utils/common"), h = e("./utils/strings"), i = e("./zlib/messages"), s = e("./zlib/zstream"), u = Object.prototype.toString, l = 0, f = -1, c = 0, d = 8; - function p(e2) { - if (!(this instanceof p)) - return new p(e2); - this.options = o.assign({ level: f, method: d, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: c, to: "" }, e2 || {}); - var t2 = this.options; - t2.raw && 0 < t2.windowBits ? t2.windowBits = -t2.windowBits : t2.gzip && 0 < t2.windowBits && t2.windowBits < 16 && (t2.windowBits += 16), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new s(), this.strm.avail_out = 0; - var r2 = a.deflateInit2(this.strm, t2.level, t2.method, t2.windowBits, t2.memLevel, t2.strategy); - if (r2 !== l) - throw new Error(i[r2]); - if (t2.header && a.deflateSetHeader(this.strm, t2.header), t2.dictionary) { - var n2; - if (n2 = "string" == typeof t2.dictionary ? h.string2buf(t2.dictionary) : "[object ArrayBuffer]" === u.call(t2.dictionary) ? new Uint8Array(t2.dictionary) : t2.dictionary, (r2 = a.deflateSetDictionary(this.strm, n2)) !== l) - throw new Error(i[r2]); - this._dict_set = true; - } - } - function n(e2, t2) { - var r2 = new p(t2); - if (r2.push(e2, true), r2.err) - throw r2.msg || i[r2.err]; - return r2.result; - } - p.prototype.push = function(e2, t2) { - var r2, n2, i2 = this.strm, s2 = this.options.chunkSize; - if (this.ended) - return false; - n2 = t2 === ~~t2 ? t2 : true === t2 ? 4 : 0, "string" == typeof e2 ? i2.input = h.string2buf(e2) : "[object ArrayBuffer]" === u.call(e2) ? i2.input = new Uint8Array(e2) : i2.input = e2, i2.next_in = 0, i2.avail_in = i2.input.length; - do { - if (0 === i2.avail_out && (i2.output = new o.Buf8(s2), i2.next_out = 0, i2.avail_out = s2), 1 !== (r2 = a.deflate(i2, n2)) && r2 !== l) - return this.onEnd(r2), !(this.ended = true); - 0 !== i2.avail_out && (0 !== i2.avail_in || 4 !== n2 && 2 !== n2) || ("string" === this.options.to ? this.onData(h.buf2binstring(o.shrinkBuf(i2.output, i2.next_out))) : this.onData(o.shrinkBuf(i2.output, i2.next_out))); - } while ((0 < i2.avail_in || 0 === i2.avail_out) && 1 !== r2); - return 4 === n2 ? (r2 = a.deflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === l) : 2 !== n2 || (this.onEnd(l), !(i2.avail_out = 0)); - }, p.prototype.onData = function(e2) { - this.chunks.push(e2); - }, p.prototype.onEnd = function(e2) { - e2 === l && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = o.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; - }, r.Deflate = p, r.deflate = n, r.deflateRaw = function(e2, t2) { - return (t2 = t2 || {}).raw = true, n(e2, t2); - }, r.gzip = function(e2, t2) { - return (t2 = t2 || {}).gzip = true, n(e2, t2); - }; - }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/deflate": 46, "./zlib/messages": 51, "./zlib/zstream": 53 }], 40: [function(e, t, r) { - "use strict"; - var c = e("./zlib/inflate"), d = e("./utils/common"), p = e("./utils/strings"), m = e("./zlib/constants"), n = e("./zlib/messages"), i = e("./zlib/zstream"), s = e("./zlib/gzheader"), _ = Object.prototype.toString; - function a(e2) { - if (!(this instanceof a)) - return new a(e2); - this.options = d.assign({ chunkSize: 16384, windowBits: 0, to: "" }, e2 || {}); - var t2 = this.options; - t2.raw && 0 <= t2.windowBits && t2.windowBits < 16 && (t2.windowBits = -t2.windowBits, 0 === t2.windowBits && (t2.windowBits = -15)), !(0 <= t2.windowBits && t2.windowBits < 16) || e2 && e2.windowBits || (t2.windowBits += 32), 15 < t2.windowBits && t2.windowBits < 48 && 0 == (15 & t2.windowBits) && (t2.windowBits |= 15), this.err = 0, this.msg = "", this.ended = false, this.chunks = [], this.strm = new i(), this.strm.avail_out = 0; - var r2 = c.inflateInit2(this.strm, t2.windowBits); - if (r2 !== m.Z_OK) - throw new Error(n[r2]); - this.header = new s(), c.inflateGetHeader(this.strm, this.header); - } - function o(e2, t2) { - var r2 = new a(t2); - if (r2.push(e2, true), r2.err) - throw r2.msg || n[r2.err]; - return r2.result; - } - a.prototype.push = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h = this.strm, u = this.options.chunkSize, l = this.options.dictionary, f = false; - if (this.ended) - return false; - n2 = t2 === ~~t2 ? t2 : true === t2 ? m.Z_FINISH : m.Z_NO_FLUSH, "string" == typeof e2 ? h.input = p.binstring2buf(e2) : "[object ArrayBuffer]" === _.call(e2) ? h.input = new Uint8Array(e2) : h.input = e2, h.next_in = 0, h.avail_in = h.input.length; - do { - if (0 === h.avail_out && (h.output = new d.Buf8(u), h.next_out = 0, h.avail_out = u), (r2 = c.inflate(h, m.Z_NO_FLUSH)) === m.Z_NEED_DICT && l && (o2 = "string" == typeof l ? p.string2buf(l) : "[object ArrayBuffer]" === _.call(l) ? new Uint8Array(l) : l, r2 = c.inflateSetDictionary(this.strm, o2)), r2 === m.Z_BUF_ERROR && true === f && (r2 = m.Z_OK, f = false), r2 !== m.Z_STREAM_END && r2 !== m.Z_OK) - return this.onEnd(r2), !(this.ended = true); - h.next_out && (0 !== h.avail_out && r2 !== m.Z_STREAM_END && (0 !== h.avail_in || n2 !== m.Z_FINISH && n2 !== m.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i2 = p.utf8border(h.output, h.next_out), s2 = h.next_out - i2, a2 = p.buf2string(h.output, i2), h.next_out = s2, h.avail_out = u - s2, s2 && d.arraySet(h.output, h.output, i2, s2, 0), this.onData(a2)) : this.onData(d.shrinkBuf(h.output, h.next_out)))), 0 === h.avail_in && 0 === h.avail_out && (f = true); - } while ((0 < h.avail_in || 0 === h.avail_out) && r2 !== m.Z_STREAM_END); - return r2 === m.Z_STREAM_END && (n2 = m.Z_FINISH), n2 === m.Z_FINISH ? (r2 = c.inflateEnd(this.strm), this.onEnd(r2), this.ended = true, r2 === m.Z_OK) : n2 !== m.Z_SYNC_FLUSH || (this.onEnd(m.Z_OK), !(h.avail_out = 0)); - }, a.prototype.onData = function(e2) { - this.chunks.push(e2); - }, a.prototype.onEnd = function(e2) { - e2 === m.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = d.flattenChunks(this.chunks)), this.chunks = [], this.err = e2, this.msg = this.strm.msg; - }, r.Inflate = a, r.inflate = o, r.inflateRaw = function(e2, t2) { - return (t2 = t2 || {}).raw = true, o(e2, t2); - }, r.ungzip = o; - }, { "./utils/common": 41, "./utils/strings": 42, "./zlib/constants": 44, "./zlib/gzheader": 47, "./zlib/inflate": 49, "./zlib/messages": 51, "./zlib/zstream": 53 }], 41: [function(e, t, r) { - "use strict"; - var n = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; - r.assign = function(e2) { - for (var t2 = Array.prototype.slice.call(arguments, 1); t2.length; ) { - var r2 = t2.shift(); - if (r2) { - if ("object" != typeof r2) - throw new TypeError(r2 + "must be non-object"); - for (var n2 in r2) - r2.hasOwnProperty(n2) && (e2[n2] = r2[n2]); - } - } - return e2; - }, r.shrinkBuf = function(e2, t2) { - return e2.length === t2 ? e2 : e2.subarray ? e2.subarray(0, t2) : (e2.length = t2, e2); - }; - var i = { arraySet: function(e2, t2, r2, n2, i2) { - if (t2.subarray && e2.subarray) - e2.set(t2.subarray(r2, r2 + n2), i2); - else - for (var s2 = 0; s2 < n2; s2++) - e2[i2 + s2] = t2[r2 + s2]; - }, flattenChunks: function(e2) { - var t2, r2, n2, i2, s2, a; - for (t2 = n2 = 0, r2 = e2.length; t2 < r2; t2++) - n2 += e2[t2].length; - for (a = new Uint8Array(n2), t2 = i2 = 0, r2 = e2.length; t2 < r2; t2++) - s2 = e2[t2], a.set(s2, i2), i2 += s2.length; - return a; - } }, s = { arraySet: function(e2, t2, r2, n2, i2) { - for (var s2 = 0; s2 < n2; s2++) - e2[i2 + s2] = t2[r2 + s2]; - }, flattenChunks: function(e2) { - return [].concat.apply([], e2); - } }; - r.setTyped = function(e2) { - e2 ? (r.Buf8 = Uint8Array, r.Buf16 = Uint16Array, r.Buf32 = Int32Array, r.assign(r, i)) : (r.Buf8 = Array, r.Buf16 = Array, r.Buf32 = Array, r.assign(r, s)); - }, r.setTyped(n); - }, {}], 42: [function(e, t, r) { - "use strict"; - var h = e("./common"), i = true, s = true; - try { - String.fromCharCode.apply(null, [0]); - } catch (e2) { - i = false; - } - try { - String.fromCharCode.apply(null, new Uint8Array(1)); - } catch (e2) { - s = false; - } - for (var u = new h.Buf8(256), n = 0; n < 256; n++) - u[n] = 252 <= n ? 6 : 248 <= n ? 5 : 240 <= n ? 4 : 224 <= n ? 3 : 192 <= n ? 2 : 1; - function l(e2, t2) { - if (t2 < 65537 && (e2.subarray && s || !e2.subarray && i)) - return String.fromCharCode.apply(null, h.shrinkBuf(e2, t2)); - for (var r2 = "", n2 = 0; n2 < t2; n2++) - r2 += String.fromCharCode(e2[n2]); - return r2; - } - u[254] = u[254] = 1, r.string2buf = function(e2) { - var t2, r2, n2, i2, s2, a = e2.length, o = 0; - for (i2 = 0; i2 < a; i2++) - 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), o += r2 < 128 ? 1 : r2 < 2048 ? 2 : r2 < 65536 ? 3 : 4; - for (t2 = new h.Buf8(o), i2 = s2 = 0; s2 < o; i2++) - 55296 == (64512 & (r2 = e2.charCodeAt(i2))) && i2 + 1 < a && 56320 == (64512 & (n2 = e2.charCodeAt(i2 + 1))) && (r2 = 65536 + (r2 - 55296 << 10) + (n2 - 56320), i2++), r2 < 128 ? t2[s2++] = r2 : (r2 < 2048 ? t2[s2++] = 192 | r2 >>> 6 : (r2 < 65536 ? t2[s2++] = 224 | r2 >>> 12 : (t2[s2++] = 240 | r2 >>> 18, t2[s2++] = 128 | r2 >>> 12 & 63), t2[s2++] = 128 | r2 >>> 6 & 63), t2[s2++] = 128 | 63 & r2); - return t2; - }, r.buf2binstring = function(e2) { - return l(e2, e2.length); - }, r.binstring2buf = function(e2) { - for (var t2 = new h.Buf8(e2.length), r2 = 0, n2 = t2.length; r2 < n2; r2++) - t2[r2] = e2.charCodeAt(r2); - return t2; - }, r.buf2string = function(e2, t2) { - var r2, n2, i2, s2, a = t2 || e2.length, o = new Array(2 * a); - for (r2 = n2 = 0; r2 < a; ) - if ((i2 = e2[r2++]) < 128) - o[n2++] = i2; - else if (4 < (s2 = u[i2])) - o[n2++] = 65533, r2 += s2 - 1; - else { - for (i2 &= 2 === s2 ? 31 : 3 === s2 ? 15 : 7; 1 < s2 && r2 < a; ) - i2 = i2 << 6 | 63 & e2[r2++], s2--; - 1 < s2 ? o[n2++] = 65533 : i2 < 65536 ? o[n2++] = i2 : (i2 -= 65536, o[n2++] = 55296 | i2 >> 10 & 1023, o[n2++] = 56320 | 1023 & i2); - } - return l(o, n2); - }, r.utf8border = function(e2, t2) { - var r2; - for ((t2 = t2 || e2.length) > e2.length && (t2 = e2.length), r2 = t2 - 1; 0 <= r2 && 128 == (192 & e2[r2]); ) - r2--; - return r2 < 0 ? t2 : 0 === r2 ? t2 : r2 + u[e2[r2]] > t2 ? r2 : t2; - }; - }, { "./common": 41 }], 43: [function(e, t, r) { - "use strict"; - t.exports = function(e2, t2, r2, n) { - for (var i = 65535 & e2 | 0, s = e2 >>> 16 & 65535 | 0, a = 0; 0 !== r2; ) { - for (r2 -= a = 2e3 < r2 ? 2e3 : r2; s = s + (i = i + t2[n++] | 0) | 0, --a; ) - ; - i %= 65521, s %= 65521; - } - return i | s << 16 | 0; - }; - }, {}], 44: [function(e, t, r) { - "use strict"; - t.exports = { Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_BUF_ERROR: -5, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, Z_BINARY: 0, Z_TEXT: 1, Z_UNKNOWN: 2, Z_DEFLATED: 8 }; - }, {}], 45: [function(e, t, r) { - "use strict"; - var o = function() { - for (var e2, t2 = [], r2 = 0; r2 < 256; r2++) { - e2 = r2; - for (var n = 0; n < 8; n++) - e2 = 1 & e2 ? 3988292384 ^ e2 >>> 1 : e2 >>> 1; - t2[r2] = e2; - } - return t2; - }(); - t.exports = function(e2, t2, r2, n) { - var i = o, s = n + r2; - e2 ^= -1; - for (var a = n; a < s; a++) - e2 = e2 >>> 8 ^ i[255 & (e2 ^ t2[a])]; - return -1 ^ e2; - }; - }, {}], 46: [function(e, t, r) { - "use strict"; - var h, c = e("../utils/common"), u = e("./trees"), d = e("./adler32"), p = e("./crc32"), n = e("./messages"), l = 0, f = 4, m = 0, _ = -2, g = -1, b = 4, i = 2, v = 8, y = 9, s = 286, a = 30, o = 19, w = 2 * s + 1, k = 15, x = 3, S = 258, z = S + x + 1, C = 42, E = 113, A = 1, I = 2, O = 3, B = 4; - function R(e2, t2) { - return e2.msg = n[t2], t2; - } - function T(e2) { - return (e2 << 1) - (4 < e2 ? 9 : 0); - } - function D(e2) { - for (var t2 = e2.length; 0 <= --t2; ) - e2[t2] = 0; - } - function F(e2) { - var t2 = e2.state, r2 = t2.pending; - r2 > e2.avail_out && (r2 = e2.avail_out), 0 !== r2 && (c.arraySet(e2.output, t2.pending_buf, t2.pending_out, r2, e2.next_out), e2.next_out += r2, t2.pending_out += r2, e2.total_out += r2, e2.avail_out -= r2, t2.pending -= r2, 0 === t2.pending && (t2.pending_out = 0)); - } - function N(e2, t2) { - u._tr_flush_block(e2, 0 <= e2.block_start ? e2.block_start : -1, e2.strstart - e2.block_start, t2), e2.block_start = e2.strstart, F(e2.strm); - } - function U(e2, t2) { - e2.pending_buf[e2.pending++] = t2; - } - function P(e2, t2) { - e2.pending_buf[e2.pending++] = t2 >>> 8 & 255, e2.pending_buf[e2.pending++] = 255 & t2; - } - function L(e2, t2) { - var r2, n2, i2 = e2.max_chain_length, s2 = e2.strstart, a2 = e2.prev_length, o2 = e2.nice_match, h2 = e2.strstart > e2.w_size - z ? e2.strstart - (e2.w_size - z) : 0, u2 = e2.window, l2 = e2.w_mask, f2 = e2.prev, c2 = e2.strstart + S, d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; - e2.prev_length >= e2.good_match && (i2 >>= 2), o2 > e2.lookahead && (o2 = e2.lookahead); - do { - if (u2[(r2 = t2) + a2] === p2 && u2[r2 + a2 - 1] === d2 && u2[r2] === u2[s2] && u2[++r2] === u2[s2 + 1]) { - s2 += 2, r2++; - do { - } while (u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && u2[++s2] === u2[++r2] && s2 < c2); - if (n2 = S - (c2 - s2), s2 = c2 - S, a2 < n2) { - if (e2.match_start = t2, o2 <= (a2 = n2)) - break; - d2 = u2[s2 + a2 - 1], p2 = u2[s2 + a2]; - } - } - } while ((t2 = f2[t2 & l2]) > h2 && 0 != --i2); - return a2 <= e2.lookahead ? a2 : e2.lookahead; - } - function j(e2) { - var t2, r2, n2, i2, s2, a2, o2, h2, u2, l2, f2 = e2.w_size; - do { - if (i2 = e2.window_size - e2.lookahead - e2.strstart, e2.strstart >= f2 + (f2 - z)) { - for (c.arraySet(e2.window, e2.window, f2, f2, 0), e2.match_start -= f2, e2.strstart -= f2, e2.block_start -= f2, t2 = r2 = e2.hash_size; n2 = e2.head[--t2], e2.head[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) - ; - for (t2 = r2 = f2; n2 = e2.prev[--t2], e2.prev[t2] = f2 <= n2 ? n2 - f2 : 0, --r2; ) - ; - i2 += f2; - } - if (0 === e2.strm.avail_in) - break; - if (a2 = e2.strm, o2 = e2.window, h2 = e2.strstart + e2.lookahead, u2 = i2, l2 = void 0, l2 = a2.avail_in, u2 < l2 && (l2 = u2), r2 = 0 === l2 ? 0 : (a2.avail_in -= l2, c.arraySet(o2, a2.input, a2.next_in, l2, h2), 1 === a2.state.wrap ? a2.adler = d(a2.adler, o2, l2, h2) : 2 === a2.state.wrap && (a2.adler = p(a2.adler, o2, l2, h2)), a2.next_in += l2, a2.total_in += l2, l2), e2.lookahead += r2, e2.lookahead + e2.insert >= x) - for (s2 = e2.strstart - e2.insert, e2.ins_h = e2.window[s2], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + 1]) & e2.hash_mask; e2.insert && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[s2 + x - 1]) & e2.hash_mask, e2.prev[s2 & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = s2, s2++, e2.insert--, !(e2.lookahead + e2.insert < x)); ) - ; - } while (e2.lookahead < z && 0 !== e2.strm.avail_in); - } - function Z(e2, t2) { - for (var r2, n2; ; ) { - if (e2.lookahead < z) { - if (j(e2), e2.lookahead < z && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 !== r2 && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2)), e2.match_length >= x) - if (n2 = u._tr_tally(e2, e2.strstart - e2.match_start, e2.match_length - x), e2.lookahead -= e2.match_length, e2.match_length <= e2.max_lazy_match && e2.lookahead >= x) { - for (e2.match_length--; e2.strstart++, e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart, 0 != --e2.match_length; ) - ; - e2.strstart++; - } else - e2.strstart += e2.match_length, e2.match_length = 0, e2.ins_h = e2.window[e2.strstart], e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + 1]) & e2.hash_mask; - else - n2 = u._tr_tally(e2, 0, e2.window[e2.strstart]), e2.lookahead--, e2.strstart++; - if (n2 && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } - return e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; - } - function W(e2, t2) { - for (var r2, n2, i2; ; ) { - if (e2.lookahead < z) { - if (j(e2), e2.lookahead < z && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - if (r2 = 0, e2.lookahead >= x && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), e2.prev_length = e2.match_length, e2.prev_match = e2.match_start, e2.match_length = x - 1, 0 !== r2 && e2.prev_length < e2.max_lazy_match && e2.strstart - r2 <= e2.w_size - z && (e2.match_length = L(e2, r2), e2.match_length <= 5 && (1 === e2.strategy || e2.match_length === x && 4096 < e2.strstart - e2.match_start) && (e2.match_length = x - 1)), e2.prev_length >= x && e2.match_length <= e2.prev_length) { - for (i2 = e2.strstart + e2.lookahead - x, n2 = u._tr_tally(e2, e2.strstart - 1 - e2.prev_match, e2.prev_length - x), e2.lookahead -= e2.prev_length - 1, e2.prev_length -= 2; ++e2.strstart <= i2 && (e2.ins_h = (e2.ins_h << e2.hash_shift ^ e2.window[e2.strstart + x - 1]) & e2.hash_mask, r2 = e2.prev[e2.strstart & e2.w_mask] = e2.head[e2.ins_h], e2.head[e2.ins_h] = e2.strstart), 0 != --e2.prev_length; ) - ; - if (e2.match_available = 0, e2.match_length = x - 1, e2.strstart++, n2 && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } else if (e2.match_available) { - if ((n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1])) && N(e2, false), e2.strstart++, e2.lookahead--, 0 === e2.strm.avail_out) - return A; - } else - e2.match_available = 1, e2.strstart++, e2.lookahead--; - } - return e2.match_available && (n2 = u._tr_tally(e2, 0, e2.window[e2.strstart - 1]), e2.match_available = 0), e2.insert = e2.strstart < x - 1 ? e2.strstart : x - 1, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : e2.last_lit && (N(e2, false), 0 === e2.strm.avail_out) ? A : I; - } - function M(e2, t2, r2, n2, i2) { - this.good_length = e2, this.max_lazy = t2, this.nice_length = r2, this.max_chain = n2, this.func = i2; - } - function H() { - this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = v, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new c.Buf16(2 * w), this.dyn_dtree = new c.Buf16(2 * (2 * a + 1)), this.bl_tree = new c.Buf16(2 * (2 * o + 1)), D(this.dyn_ltree), D(this.dyn_dtree), D(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new c.Buf16(k + 1), this.heap = new c.Buf16(2 * s + 1), D(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new c.Buf16(2 * s + 1), D(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0; - } - function G(e2) { - var t2; - return e2 && e2.state ? (e2.total_in = e2.total_out = 0, e2.data_type = i, (t2 = e2.state).pending = 0, t2.pending_out = 0, t2.wrap < 0 && (t2.wrap = -t2.wrap), t2.status = t2.wrap ? C : E, e2.adler = 2 === t2.wrap ? 0 : 1, t2.last_flush = l, u._tr_init(t2), m) : R(e2, _); - } - function K(e2) { - var t2 = G(e2); - return t2 === m && function(e3) { - e3.window_size = 2 * e3.w_size, D(e3.head), e3.max_lazy_match = h[e3.level].max_lazy, e3.good_match = h[e3.level].good_length, e3.nice_match = h[e3.level].nice_length, e3.max_chain_length = h[e3.level].max_chain, e3.strstart = 0, e3.block_start = 0, e3.lookahead = 0, e3.insert = 0, e3.match_length = e3.prev_length = x - 1, e3.match_available = 0, e3.ins_h = 0; - }(e2.state), t2; - } - function Y(e2, t2, r2, n2, i2, s2) { - if (!e2) - return _; - var a2 = 1; - if (t2 === g && (t2 = 6), n2 < 0 ? (a2 = 0, n2 = -n2) : 15 < n2 && (a2 = 2, n2 -= 16), i2 < 1 || y < i2 || r2 !== v || n2 < 8 || 15 < n2 || t2 < 0 || 9 < t2 || s2 < 0 || b < s2) - return R(e2, _); - 8 === n2 && (n2 = 9); - var o2 = new H(); - return (e2.state = o2).strm = e2, o2.wrap = a2, o2.gzhead = null, o2.w_bits = n2, o2.w_size = 1 << o2.w_bits, o2.w_mask = o2.w_size - 1, o2.hash_bits = i2 + 7, o2.hash_size = 1 << o2.hash_bits, o2.hash_mask = o2.hash_size - 1, o2.hash_shift = ~~((o2.hash_bits + x - 1) / x), o2.window = new c.Buf8(2 * o2.w_size), o2.head = new c.Buf16(o2.hash_size), o2.prev = new c.Buf16(o2.w_size), o2.lit_bufsize = 1 << i2 + 6, o2.pending_buf_size = 4 * o2.lit_bufsize, o2.pending_buf = new c.Buf8(o2.pending_buf_size), o2.d_buf = 1 * o2.lit_bufsize, o2.l_buf = 3 * o2.lit_bufsize, o2.level = t2, o2.strategy = s2, o2.method = r2, K(e2); - } - h = [new M(0, 0, 0, 0, function(e2, t2) { - var r2 = 65535; - for (r2 > e2.pending_buf_size - 5 && (r2 = e2.pending_buf_size - 5); ; ) { - if (e2.lookahead <= 1) { - if (j(e2), 0 === e2.lookahead && t2 === l) - return A; - if (0 === e2.lookahead) - break; - } - e2.strstart += e2.lookahead, e2.lookahead = 0; - var n2 = e2.block_start + r2; - if ((0 === e2.strstart || e2.strstart >= n2) && (e2.lookahead = e2.strstart - n2, e2.strstart = n2, N(e2, false), 0 === e2.strm.avail_out)) - return A; - if (e2.strstart - e2.block_start >= e2.w_size - z && (N(e2, false), 0 === e2.strm.avail_out)) - return A; - } - return e2.insert = 0, t2 === f ? (N(e2, true), 0 === e2.strm.avail_out ? O : B) : (e2.strstart > e2.block_start && (N(e2, false), e2.strm.avail_out), A); - }), new M(4, 4, 8, 4, Z), new M(4, 5, 16, 8, Z), new M(4, 6, 32, 32, Z), new M(4, 4, 16, 16, W), new M(8, 16, 32, 32, W), new M(8, 16, 128, 128, W), new M(8, 32, 128, 256, W), new M(32, 128, 258, 1024, W), new M(32, 258, 258, 4096, W)], r.deflateInit = function(e2, t2) { - return Y(e2, t2, v, 15, 8, 0); - }, r.deflateInit2 = Y, r.deflateReset = K, r.deflateResetKeep = G, r.deflateSetHeader = function(e2, t2) { - return e2 && e2.state ? 2 !== e2.state.wrap ? _ : (e2.state.gzhead = t2, m) : _; - }, r.deflate = function(e2, t2) { - var r2, n2, i2, s2; - if (!e2 || !e2.state || 5 < t2 || t2 < 0) - return e2 ? R(e2, _) : _; - if (n2 = e2.state, !e2.output || !e2.input && 0 !== e2.avail_in || 666 === n2.status && t2 !== f) - return R(e2, 0 === e2.avail_out ? -5 : _); - if (n2.strm = e2, r2 = n2.last_flush, n2.last_flush = t2, n2.status === C) - if (2 === n2.wrap) - e2.adler = 0, U(n2, 31), U(n2, 139), U(n2, 8), n2.gzhead ? (U(n2, (n2.gzhead.text ? 1 : 0) + (n2.gzhead.hcrc ? 2 : 0) + (n2.gzhead.extra ? 4 : 0) + (n2.gzhead.name ? 8 : 0) + (n2.gzhead.comment ? 16 : 0)), U(n2, 255 & n2.gzhead.time), U(n2, n2.gzhead.time >> 8 & 255), U(n2, n2.gzhead.time >> 16 & 255), U(n2, n2.gzhead.time >> 24 & 255), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 255 & n2.gzhead.os), n2.gzhead.extra && n2.gzhead.extra.length && (U(n2, 255 & n2.gzhead.extra.length), U(n2, n2.gzhead.extra.length >> 8 & 255)), n2.gzhead.hcrc && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending, 0)), n2.gzindex = 0, n2.status = 69) : (U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 0), U(n2, 9 === n2.level ? 2 : 2 <= n2.strategy || n2.level < 2 ? 4 : 0), U(n2, 3), n2.status = E); - else { - var a2 = v + (n2.w_bits - 8 << 4) << 8; - a2 |= (2 <= n2.strategy || n2.level < 2 ? 0 : n2.level < 6 ? 1 : 6 === n2.level ? 2 : 3) << 6, 0 !== n2.strstart && (a2 |= 32), a2 += 31 - a2 % 31, n2.status = E, P(n2, a2), 0 !== n2.strstart && (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), e2.adler = 1; - } - if (69 === n2.status) - if (n2.gzhead.extra) { - for (i2 = n2.pending; n2.gzindex < (65535 & n2.gzhead.extra.length) && (n2.pending !== n2.pending_buf_size || (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending !== n2.pending_buf_size)); ) - U(n2, 255 & n2.gzhead.extra[n2.gzindex]), n2.gzindex++; - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), n2.gzindex === n2.gzhead.extra.length && (n2.gzindex = 0, n2.status = 73); - } else - n2.status = 73; - if (73 === n2.status) - if (n2.gzhead.name) { - i2 = n2.pending; - do { - if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { - s2 = 1; - break; - } - s2 = n2.gzindex < n2.gzhead.name.length ? 255 & n2.gzhead.name.charCodeAt(n2.gzindex++) : 0, U(n2, s2); - } while (0 !== s2); - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.gzindex = 0, n2.status = 91); - } else - n2.status = 91; - if (91 === n2.status) - if (n2.gzhead.comment) { - i2 = n2.pending; - do { - if (n2.pending === n2.pending_buf_size && (n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), F(e2), i2 = n2.pending, n2.pending === n2.pending_buf_size)) { - s2 = 1; - break; - } - s2 = n2.gzindex < n2.gzhead.comment.length ? 255 & n2.gzhead.comment.charCodeAt(n2.gzindex++) : 0, U(n2, s2); - } while (0 !== s2); - n2.gzhead.hcrc && n2.pending > i2 && (e2.adler = p(e2.adler, n2.pending_buf, n2.pending - i2, i2)), 0 === s2 && (n2.status = 103); - } else - n2.status = 103; - if (103 === n2.status && (n2.gzhead.hcrc ? (n2.pending + 2 > n2.pending_buf_size && F(e2), n2.pending + 2 <= n2.pending_buf_size && (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), e2.adler = 0, n2.status = E)) : n2.status = E), 0 !== n2.pending) { - if (F(e2), 0 === e2.avail_out) - return n2.last_flush = -1, m; - } else if (0 === e2.avail_in && T(t2) <= T(r2) && t2 !== f) - return R(e2, -5); - if (666 === n2.status && 0 !== e2.avail_in) - return R(e2, -5); - if (0 !== e2.avail_in || 0 !== n2.lookahead || t2 !== l && 666 !== n2.status) { - var o2 = 2 === n2.strategy ? function(e3, t3) { - for (var r3; ; ) { - if (0 === e3.lookahead && (j(e3), 0 === e3.lookahead)) { - if (t3 === l) - return A; - break; - } - if (e3.match_length = 0, r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++, r3 && (N(e3, false), 0 === e3.strm.avail_out)) - return A; - } - return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; - }(n2, t2) : 3 === n2.strategy ? function(e3, t3) { - for (var r3, n3, i3, s3, a3 = e3.window; ; ) { - if (e3.lookahead <= S) { - if (j(e3), e3.lookahead <= S && t3 === l) - return A; - if (0 === e3.lookahead) - break; - } - if (e3.match_length = 0, e3.lookahead >= x && 0 < e3.strstart && (n3 = a3[i3 = e3.strstart - 1]) === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3]) { - s3 = e3.strstart + S; - do { - } while (n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && n3 === a3[++i3] && i3 < s3); - e3.match_length = S - (s3 - i3), e3.match_length > e3.lookahead && (e3.match_length = e3.lookahead); - } - if (e3.match_length >= x ? (r3 = u._tr_tally(e3, 1, e3.match_length - x), e3.lookahead -= e3.match_length, e3.strstart += e3.match_length, e3.match_length = 0) : (r3 = u._tr_tally(e3, 0, e3.window[e3.strstart]), e3.lookahead--, e3.strstart++), r3 && (N(e3, false), 0 === e3.strm.avail_out)) - return A; - } - return e3.insert = 0, t3 === f ? (N(e3, true), 0 === e3.strm.avail_out ? O : B) : e3.last_lit && (N(e3, false), 0 === e3.strm.avail_out) ? A : I; - }(n2, t2) : h[n2.level].func(n2, t2); - if (o2 !== O && o2 !== B || (n2.status = 666), o2 === A || o2 === O) - return 0 === e2.avail_out && (n2.last_flush = -1), m; - if (o2 === I && (1 === t2 ? u._tr_align(n2) : 5 !== t2 && (u._tr_stored_block(n2, 0, 0, false), 3 === t2 && (D(n2.head), 0 === n2.lookahead && (n2.strstart = 0, n2.block_start = 0, n2.insert = 0))), F(e2), 0 === e2.avail_out)) - return n2.last_flush = -1, m; - } - return t2 !== f ? m : n2.wrap <= 0 ? 1 : (2 === n2.wrap ? (U(n2, 255 & e2.adler), U(n2, e2.adler >> 8 & 255), U(n2, e2.adler >> 16 & 255), U(n2, e2.adler >> 24 & 255), U(n2, 255 & e2.total_in), U(n2, e2.total_in >> 8 & 255), U(n2, e2.total_in >> 16 & 255), U(n2, e2.total_in >> 24 & 255)) : (P(n2, e2.adler >>> 16), P(n2, 65535 & e2.adler)), F(e2), 0 < n2.wrap && (n2.wrap = -n2.wrap), 0 !== n2.pending ? m : 1); - }, r.deflateEnd = function(e2) { - var t2; - return e2 && e2.state ? (t2 = e2.state.status) !== C && 69 !== t2 && 73 !== t2 && 91 !== t2 && 103 !== t2 && t2 !== E && 666 !== t2 ? R(e2, _) : (e2.state = null, t2 === E ? R(e2, -3) : m) : _; - }, r.deflateSetDictionary = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h2, u2, l2 = t2.length; - if (!e2 || !e2.state) - return _; - if (2 === (s2 = (r2 = e2.state).wrap) || 1 === s2 && r2.status !== C || r2.lookahead) - return _; - for (1 === s2 && (e2.adler = d(e2.adler, t2, l2, 0)), r2.wrap = 0, l2 >= r2.w_size && (0 === s2 && (D(r2.head), r2.strstart = 0, r2.block_start = 0, r2.insert = 0), u2 = new c.Buf8(r2.w_size), c.arraySet(u2, t2, l2 - r2.w_size, r2.w_size, 0), t2 = u2, l2 = r2.w_size), a2 = e2.avail_in, o2 = e2.next_in, h2 = e2.input, e2.avail_in = l2, e2.next_in = 0, e2.input = t2, j(r2); r2.lookahead >= x; ) { - for (n2 = r2.strstart, i2 = r2.lookahead - (x - 1); r2.ins_h = (r2.ins_h << r2.hash_shift ^ r2.window[n2 + x - 1]) & r2.hash_mask, r2.prev[n2 & r2.w_mask] = r2.head[r2.ins_h], r2.head[r2.ins_h] = n2, n2++, --i2; ) - ; - r2.strstart = n2, r2.lookahead = x - 1, j(r2); - } - return r2.strstart += r2.lookahead, r2.block_start = r2.strstart, r2.insert = r2.lookahead, r2.lookahead = 0, r2.match_length = r2.prev_length = x - 1, r2.match_available = 0, e2.next_in = o2, e2.input = h2, e2.avail_in = a2, r2.wrap = s2, m; - }, r.deflateInfo = "pako deflate (from Nodeca project)"; - }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./messages": 51, "./trees": 52 }], 47: [function(e, t, r) { - "use strict"; - t.exports = function() { - this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = false; - }; - }, {}], 48: [function(e, t, r) { - "use strict"; - t.exports = function(e2, t2) { - var r2, n, i, s, a, o, h, u, l, f, c, d, p, m, _, g, b, v, y, w, k, x, S, z, C; - r2 = e2.state, n = e2.next_in, z = e2.input, i = n + (e2.avail_in - 5), s = e2.next_out, C = e2.output, a = s - (t2 - e2.avail_out), o = s + (e2.avail_out - 257), h = r2.dmax, u = r2.wsize, l = r2.whave, f = r2.wnext, c = r2.window, d = r2.hold, p = r2.bits, m = r2.lencode, _ = r2.distcode, g = (1 << r2.lenbits) - 1, b = (1 << r2.distbits) - 1; - e: - do { - p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = m[d & g]; - t: - for (; ; ) { - if (d >>>= y = v >>> 24, p -= y, 0 === (y = v >>> 16 & 255)) - C[s++] = 65535 & v; - else { - if (!(16 & y)) { - if (0 == (64 & y)) { - v = m[(65535 & v) + (d & (1 << y) - 1)]; - continue t; - } - if (32 & y) { - r2.mode = 12; - break e; - } - e2.msg = "invalid literal/length code", r2.mode = 30; - break e; - } - w = 65535 & v, (y &= 15) && (p < y && (d += z[n++] << p, p += 8), w += d & (1 << y) - 1, d >>>= y, p -= y), p < 15 && (d += z[n++] << p, p += 8, d += z[n++] << p, p += 8), v = _[d & b]; - r: - for (; ; ) { - if (d >>>= y = v >>> 24, p -= y, !(16 & (y = v >>> 16 & 255))) { - if (0 == (64 & y)) { - v = _[(65535 & v) + (d & (1 << y) - 1)]; - continue r; - } - e2.msg = "invalid distance code", r2.mode = 30; - break e; - } - if (k = 65535 & v, p < (y &= 15) && (d += z[n++] << p, (p += 8) < y && (d += z[n++] << p, p += 8)), h < (k += d & (1 << y) - 1)) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break e; - } - if (d >>>= y, p -= y, (y = s - a) < k) { - if (l < (y = k - y) && r2.sane) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break e; - } - if (S = c, (x = 0) === f) { - if (x += u - y, y < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - } else if (f < y) { - if (x += u + f - y, (y -= f) < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - if (x = 0, f < w) { - for (w -= y = f; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - } - } else if (x += f - y, y < w) { - for (w -= y; C[s++] = c[x++], --y; ) - ; - x = s - k, S = C; - } - for (; 2 < w; ) - C[s++] = S[x++], C[s++] = S[x++], C[s++] = S[x++], w -= 3; - w && (C[s++] = S[x++], 1 < w && (C[s++] = S[x++])); - } else { - for (x = s - k; C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], 2 < (w -= 3); ) - ; - w && (C[s++] = C[x++], 1 < w && (C[s++] = C[x++])); - } - break; - } - } - break; - } - } while (n < i && s < o); - n -= w = p >> 3, d &= (1 << (p -= w << 3)) - 1, e2.next_in = n, e2.next_out = s, e2.avail_in = n < i ? i - n + 5 : 5 - (n - i), e2.avail_out = s < o ? o - s + 257 : 257 - (s - o), r2.hold = d, r2.bits = p; - }; - }, {}], 49: [function(e, t, r) { - "use strict"; - var I = e("../utils/common"), O = e("./adler32"), B = e("./crc32"), R = e("./inffast"), T = e("./inftrees"), D = 1, F = 2, N = 0, U = -2, P = 1, n = 852, i = 592; - function L(e2) { - return (e2 >>> 24 & 255) + (e2 >>> 8 & 65280) + ((65280 & e2) << 8) + ((255 & e2) << 24); - } - function s() { - this.mode = 0, this.last = false, this.wrap = 0, this.havedict = false, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new I.Buf16(320), this.work = new I.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0; - } - function a(e2) { - var t2; - return e2 && e2.state ? (t2 = e2.state, e2.total_in = e2.total_out = t2.total = 0, e2.msg = "", t2.wrap && (e2.adler = 1 & t2.wrap), t2.mode = P, t2.last = 0, t2.havedict = 0, t2.dmax = 32768, t2.head = null, t2.hold = 0, t2.bits = 0, t2.lencode = t2.lendyn = new I.Buf32(n), t2.distcode = t2.distdyn = new I.Buf32(i), t2.sane = 1, t2.back = -1, N) : U; - } - function o(e2) { - var t2; - return e2 && e2.state ? ((t2 = e2.state).wsize = 0, t2.whave = 0, t2.wnext = 0, a(e2)) : U; - } - function h(e2, t2) { - var r2, n2; - return e2 && e2.state ? (n2 = e2.state, t2 < 0 ? (r2 = 0, t2 = -t2) : (r2 = 1 + (t2 >> 4), t2 < 48 && (t2 &= 15)), t2 && (t2 < 8 || 15 < t2) ? U : (null !== n2.window && n2.wbits !== t2 && (n2.window = null), n2.wrap = r2, n2.wbits = t2, o(e2))) : U; - } - function u(e2, t2) { - var r2, n2; - return e2 ? (n2 = new s(), (e2.state = n2).window = null, (r2 = h(e2, t2)) !== N && (e2.state = null), r2) : U; - } - var l, f, c = true; - function j(e2) { - if (c) { - var t2; - for (l = new I.Buf32(512), f = new I.Buf32(32), t2 = 0; t2 < 144; ) - e2.lens[t2++] = 8; - for (; t2 < 256; ) - e2.lens[t2++] = 9; - for (; t2 < 280; ) - e2.lens[t2++] = 7; - for (; t2 < 288; ) - e2.lens[t2++] = 8; - for (T(D, e2.lens, 0, 288, l, 0, e2.work, { bits: 9 }), t2 = 0; t2 < 32; ) - e2.lens[t2++] = 5; - T(F, e2.lens, 0, 32, f, 0, e2.work, { bits: 5 }), c = false; - } - e2.lencode = l, e2.lenbits = 9, e2.distcode = f, e2.distbits = 5; - } - function Z(e2, t2, r2, n2) { - var i2, s2 = e2.state; - return null === s2.window && (s2.wsize = 1 << s2.wbits, s2.wnext = 0, s2.whave = 0, s2.window = new I.Buf8(s2.wsize)), n2 >= s2.wsize ? (I.arraySet(s2.window, t2, r2 - s2.wsize, s2.wsize, 0), s2.wnext = 0, s2.whave = s2.wsize) : (n2 < (i2 = s2.wsize - s2.wnext) && (i2 = n2), I.arraySet(s2.window, t2, r2 - n2, i2, s2.wnext), (n2 -= i2) ? (I.arraySet(s2.window, t2, r2 - n2, n2, 0), s2.wnext = n2, s2.whave = s2.wsize) : (s2.wnext += i2, s2.wnext === s2.wsize && (s2.wnext = 0), s2.whave < s2.wsize && (s2.whave += i2))), 0; - } - r.inflateReset = o, r.inflateReset2 = h, r.inflateResetKeep = a, r.inflateInit = function(e2) { - return u(e2, 15); - }, r.inflateInit2 = u, r.inflate = function(e2, t2) { - var r2, n2, i2, s2, a2, o2, h2, u2, l2, f2, c2, d, p, m, _, g, b, v, y, w, k, x, S, z, C = 0, E = new I.Buf8(4), A = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - if (!e2 || !e2.state || !e2.output || !e2.input && 0 !== e2.avail_in) - return U; - 12 === (r2 = e2.state).mode && (r2.mode = 13), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, f2 = o2, c2 = h2, x = N; - e: - for (; ; ) - switch (r2.mode) { - case P: - if (0 === r2.wrap) { - r2.mode = 13; - break; - } - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (2 & r2.wrap && 35615 === u2) { - E[r2.check = 0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0), l2 = u2 = 0, r2.mode = 2; - break; - } - if (r2.flags = 0, r2.head && (r2.head.done = false), !(1 & r2.wrap) || (((255 & u2) << 8) + (u2 >> 8)) % 31) { - e2.msg = "incorrect header check", r2.mode = 30; - break; - } - if (8 != (15 & u2)) { - e2.msg = "unknown compression method", r2.mode = 30; - break; - } - if (l2 -= 4, k = 8 + (15 & (u2 >>>= 4)), 0 === r2.wbits) - r2.wbits = k; - else if (k > r2.wbits) { - e2.msg = "invalid window size", r2.mode = 30; - break; - } - r2.dmax = 1 << k, e2.adler = r2.check = 1, r2.mode = 512 & u2 ? 10 : 12, l2 = u2 = 0; - break; - case 2: - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (r2.flags = u2, 8 != (255 & r2.flags)) { - e2.msg = "unknown compression method", r2.mode = 30; - break; - } - if (57344 & r2.flags) { - e2.msg = "unknown header flags set", r2.mode = 30; - break; - } - r2.head && (r2.head.text = u2 >> 8 & 1), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 3; - case 3: - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.head && (r2.head.time = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, E[2] = u2 >>> 16 & 255, E[3] = u2 >>> 24 & 255, r2.check = B(r2.check, E, 4, 0)), l2 = u2 = 0, r2.mode = 4; - case 4: - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.head && (r2.head.xflags = 255 & u2, r2.head.os = u2 >> 8), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0, r2.mode = 5; - case 5: - if (1024 & r2.flags) { - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.length = u2, r2.head && (r2.head.extra_len = u2), 512 & r2.flags && (E[0] = 255 & u2, E[1] = u2 >>> 8 & 255, r2.check = B(r2.check, E, 2, 0)), l2 = u2 = 0; - } else - r2.head && (r2.head.extra = null); - r2.mode = 6; - case 6: - if (1024 & r2.flags && (o2 < (d = r2.length) && (d = o2), d && (r2.head && (k = r2.head.extra_len - r2.length, r2.head.extra || (r2.head.extra = new Array(r2.head.extra_len)), I.arraySet(r2.head.extra, n2, s2, d, k)), 512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, r2.length -= d), r2.length)) - break e; - r2.length = 0, r2.mode = 7; - case 7: - if (2048 & r2.flags) { - if (0 === o2) - break e; - for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.name += String.fromCharCode(k)), k && d < o2; ) - ; - if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) - break e; - } else - r2.head && (r2.head.name = null); - r2.length = 0, r2.mode = 8; - case 8: - if (4096 & r2.flags) { - if (0 === o2) - break e; - for (d = 0; k = n2[s2 + d++], r2.head && k && r2.length < 65536 && (r2.head.comment += String.fromCharCode(k)), k && d < o2; ) - ; - if (512 & r2.flags && (r2.check = B(r2.check, n2, d, s2)), o2 -= d, s2 += d, k) - break e; - } else - r2.head && (r2.head.comment = null); - r2.mode = 9; - case 9: - if (512 & r2.flags) { - for (; l2 < 16; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 !== (65535 & r2.check)) { - e2.msg = "header crc mismatch", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.head && (r2.head.hcrc = r2.flags >> 9 & 1, r2.head.done = true), e2.adler = r2.check = 0, r2.mode = 12; - break; - case 10: - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - e2.adler = r2.check = L(u2), l2 = u2 = 0, r2.mode = 11; - case 11: - if (0 === r2.havedict) - return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, 2; - e2.adler = r2.check = 1, r2.mode = 12; - case 12: - if (5 === t2 || 6 === t2) - break e; - case 13: - if (r2.last) { - u2 >>>= 7 & l2, l2 -= 7 & l2, r2.mode = 27; - break; - } - for (; l2 < 3; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - switch (r2.last = 1 & u2, l2 -= 1, 3 & (u2 >>>= 1)) { - case 0: - r2.mode = 14; - break; - case 1: - if (j(r2), r2.mode = 20, 6 !== t2) - break; - u2 >>>= 2, l2 -= 2; - break e; - case 2: - r2.mode = 17; - break; - case 3: - e2.msg = "invalid block type", r2.mode = 30; - } - u2 >>>= 2, l2 -= 2; - break; - case 14: - for (u2 >>>= 7 & l2, l2 -= 7 & l2; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if ((65535 & u2) != (u2 >>> 16 ^ 65535)) { - e2.msg = "invalid stored block lengths", r2.mode = 30; - break; - } - if (r2.length = 65535 & u2, l2 = u2 = 0, r2.mode = 15, 6 === t2) - break e; - case 15: - r2.mode = 16; - case 16: - if (d = r2.length) { - if (o2 < d && (d = o2), h2 < d && (d = h2), 0 === d) - break e; - I.arraySet(i2, n2, s2, d, a2), o2 -= d, s2 += d, h2 -= d, a2 += d, r2.length -= d; - break; - } - r2.mode = 12; - break; - case 17: - for (; l2 < 14; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (r2.nlen = 257 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ndist = 1 + (31 & u2), u2 >>>= 5, l2 -= 5, r2.ncode = 4 + (15 & u2), u2 >>>= 4, l2 -= 4, 286 < r2.nlen || 30 < r2.ndist) { - e2.msg = "too many length or distance symbols", r2.mode = 30; - break; - } - r2.have = 0, r2.mode = 18; - case 18: - for (; r2.have < r2.ncode; ) { - for (; l2 < 3; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.lens[A[r2.have++]] = 7 & u2, u2 >>>= 3, l2 -= 3; - } - for (; r2.have < 19; ) - r2.lens[A[r2.have++]] = 0; - if (r2.lencode = r2.lendyn, r2.lenbits = 7, S = { bits: r2.lenbits }, x = T(0, r2.lens, 0, 19, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { - e2.msg = "invalid code lengths set", r2.mode = 30; - break; - } - r2.have = 0, r2.mode = 19; - case 19: - for (; r2.have < r2.nlen + r2.ndist; ) { - for (; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (b < 16) - u2 >>>= _, l2 -= _, r2.lens[r2.have++] = b; - else { - if (16 === b) { - for (z = _ + 2; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 >>>= _, l2 -= _, 0 === r2.have) { - e2.msg = "invalid bit length repeat", r2.mode = 30; - break; - } - k = r2.lens[r2.have - 1], d = 3 + (3 & u2), u2 >>>= 2, l2 -= 2; - } else if (17 === b) { - for (z = _ + 3; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - l2 -= _, k = 0, d = 3 + (7 & (u2 >>>= _)), u2 >>>= 3, l2 -= 3; - } else { - for (z = _ + 7; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - l2 -= _, k = 0, d = 11 + (127 & (u2 >>>= _)), u2 >>>= 7, l2 -= 7; - } - if (r2.have + d > r2.nlen + r2.ndist) { - e2.msg = "invalid bit length repeat", r2.mode = 30; - break; - } - for (; d--; ) - r2.lens[r2.have++] = k; - } - } - if (30 === r2.mode) - break; - if (0 === r2.lens[256]) { - e2.msg = "invalid code -- missing end-of-block", r2.mode = 30; - break; - } - if (r2.lenbits = 9, S = { bits: r2.lenbits }, x = T(D, r2.lens, 0, r2.nlen, r2.lencode, 0, r2.work, S), r2.lenbits = S.bits, x) { - e2.msg = "invalid literal/lengths set", r2.mode = 30; - break; - } - if (r2.distbits = 6, r2.distcode = r2.distdyn, S = { bits: r2.distbits }, x = T(F, r2.lens, r2.nlen, r2.ndist, r2.distcode, 0, r2.work, S), r2.distbits = S.bits, x) { - e2.msg = "invalid distances set", r2.mode = 30; - break; - } - if (r2.mode = 20, 6 === t2) - break e; - case 20: - r2.mode = 21; - case 21: - if (6 <= o2 && 258 <= h2) { - e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, R(e2, c2), a2 = e2.next_out, i2 = e2.output, h2 = e2.avail_out, s2 = e2.next_in, n2 = e2.input, o2 = e2.avail_in, u2 = r2.hold, l2 = r2.bits, 12 === r2.mode && (r2.back = -1); - break; - } - for (r2.back = 0; g = (C = r2.lencode[u2 & (1 << r2.lenbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (g && 0 == (240 & g)) { - for (v = _, y = g, w = b; g = (C = r2.lencode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - u2 >>>= v, l2 -= v, r2.back += v; - } - if (u2 >>>= _, l2 -= _, r2.back += _, r2.length = b, 0 === g) { - r2.mode = 26; - break; - } - if (32 & g) { - r2.back = -1, r2.mode = 12; - break; - } - if (64 & g) { - e2.msg = "invalid literal/length code", r2.mode = 30; - break; - } - r2.extra = 15 & g, r2.mode = 22; - case 22: - if (r2.extra) { - for (z = r2.extra; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.length += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; - } - r2.was = r2.length, r2.mode = 23; - case 23: - for (; g = (C = r2.distcode[u2 & (1 << r2.distbits) - 1]) >>> 16 & 255, b = 65535 & C, !((_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (0 == (240 & g)) { - for (v = _, y = g, w = b; g = (C = r2.distcode[w + ((u2 & (1 << v + y) - 1) >> v)]) >>> 16 & 255, b = 65535 & C, !(v + (_ = C >>> 24) <= l2); ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - u2 >>>= v, l2 -= v, r2.back += v; - } - if (u2 >>>= _, l2 -= _, r2.back += _, 64 & g) { - e2.msg = "invalid distance code", r2.mode = 30; - break; - } - r2.offset = b, r2.extra = 15 & g, r2.mode = 24; - case 24: - if (r2.extra) { - for (z = r2.extra; l2 < z; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - r2.offset += u2 & (1 << r2.extra) - 1, u2 >>>= r2.extra, l2 -= r2.extra, r2.back += r2.extra; - } - if (r2.offset > r2.dmax) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break; - } - r2.mode = 25; - case 25: - if (0 === h2) - break e; - if (d = c2 - h2, r2.offset > d) { - if ((d = r2.offset - d) > r2.whave && r2.sane) { - e2.msg = "invalid distance too far back", r2.mode = 30; - break; - } - p = d > r2.wnext ? (d -= r2.wnext, r2.wsize - d) : r2.wnext - d, d > r2.length && (d = r2.length), m = r2.window; - } else - m = i2, p = a2 - r2.offset, d = r2.length; - for (h2 < d && (d = h2), h2 -= d, r2.length -= d; i2[a2++] = m[p++], --d; ) - ; - 0 === r2.length && (r2.mode = 21); - break; - case 26: - if (0 === h2) - break e; - i2[a2++] = r2.length, h2--, r2.mode = 21; - break; - case 27: - if (r2.wrap) { - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 |= n2[s2++] << l2, l2 += 8; - } - if (c2 -= h2, e2.total_out += c2, r2.total += c2, c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, a2 - c2) : O(r2.check, i2, c2, a2 - c2)), c2 = h2, (r2.flags ? u2 : L(u2)) !== r2.check) { - e2.msg = "incorrect data check", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.mode = 28; - case 28: - if (r2.wrap && r2.flags) { - for (; l2 < 32; ) { - if (0 === o2) - break e; - o2--, u2 += n2[s2++] << l2, l2 += 8; - } - if (u2 !== (4294967295 & r2.total)) { - e2.msg = "incorrect length check", r2.mode = 30; - break; - } - l2 = u2 = 0; - } - r2.mode = 29; - case 29: - x = 1; - break e; - case 30: - x = -3; - break e; - case 31: - return -4; - case 32: - default: - return U; - } - return e2.next_out = a2, e2.avail_out = h2, e2.next_in = s2, e2.avail_in = o2, r2.hold = u2, r2.bits = l2, (r2.wsize || c2 !== e2.avail_out && r2.mode < 30 && (r2.mode < 27 || 4 !== t2)) && Z(e2, e2.output, e2.next_out, c2 - e2.avail_out) ? (r2.mode = 31, -4) : (f2 -= e2.avail_in, c2 -= e2.avail_out, e2.total_in += f2, e2.total_out += c2, r2.total += c2, r2.wrap && c2 && (e2.adler = r2.check = r2.flags ? B(r2.check, i2, c2, e2.next_out - c2) : O(r2.check, i2, c2, e2.next_out - c2)), e2.data_type = r2.bits + (r2.last ? 64 : 0) + (12 === r2.mode ? 128 : 0) + (20 === r2.mode || 15 === r2.mode ? 256 : 0), (0 == f2 && 0 === c2 || 4 === t2) && x === N && (x = -5), x); - }, r.inflateEnd = function(e2) { - if (!e2 || !e2.state) - return U; - var t2 = e2.state; - return t2.window && (t2.window = null), e2.state = null, N; - }, r.inflateGetHeader = function(e2, t2) { - var r2; - return e2 && e2.state ? 0 == (2 & (r2 = e2.state).wrap) ? U : ((r2.head = t2).done = false, N) : U; - }, r.inflateSetDictionary = function(e2, t2) { - var r2, n2 = t2.length; - return e2 && e2.state ? 0 !== (r2 = e2.state).wrap && 11 !== r2.mode ? U : 11 === r2.mode && O(1, t2, n2, 0) !== r2.check ? -3 : Z(e2, t2, n2, n2) ? (r2.mode = 31, -4) : (r2.havedict = 1, N) : U; - }, r.inflateInfo = "pako inflate (from Nodeca project)"; - }, { "../utils/common": 41, "./adler32": 43, "./crc32": 45, "./inffast": 48, "./inftrees": 50 }], 50: [function(e, t, r) { - "use strict"; - var D = e("../utils/common"), F = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], N = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], U = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], P = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; - t.exports = function(e2, t2, r2, n, i, s, a, o) { - var h, u, l, f, c, d, p, m, _, g = o.bits, b = 0, v = 0, y = 0, w = 0, k = 0, x = 0, S = 0, z = 0, C = 0, E = 0, A = null, I = 0, O = new D.Buf16(16), B = new D.Buf16(16), R = null, T = 0; - for (b = 0; b <= 15; b++) - O[b] = 0; - for (v = 0; v < n; v++) - O[t2[r2 + v]]++; - for (k = g, w = 15; 1 <= w && 0 === O[w]; w--) - ; - if (w < k && (k = w), 0 === w) - return i[s++] = 20971520, i[s++] = 20971520, o.bits = 1, 0; - for (y = 1; y < w && 0 === O[y]; y++) - ; - for (k < y && (k = y), b = z = 1; b <= 15; b++) - if (z <<= 1, (z -= O[b]) < 0) - return -1; - if (0 < z && (0 === e2 || 1 !== w)) - return -1; - for (B[1] = 0, b = 1; b < 15; b++) - B[b + 1] = B[b] + O[b]; - for (v = 0; v < n; v++) - 0 !== t2[r2 + v] && (a[B[t2[r2 + v]]++] = v); - if (d = 0 === e2 ? (A = R = a, 19) : 1 === e2 ? (A = F, I -= 257, R = N, T -= 257, 256) : (A = U, R = P, -1), b = y, c = s, S = v = E = 0, l = -1, f = (C = 1 << (x = k)) - 1, 1 === e2 && 852 < C || 2 === e2 && 592 < C) - return 1; - for (; ; ) { - for (p = b - S, _ = a[v] < d ? (m = 0, a[v]) : a[v] > d ? (m = R[T + a[v]], A[I + a[v]]) : (m = 96, 0), h = 1 << b - S, y = u = 1 << x; i[c + (E >> S) + (u -= h)] = p << 24 | m << 16 | _ | 0, 0 !== u; ) - ; - for (h = 1 << b - 1; E & h; ) - h >>= 1; - if (0 !== h ? (E &= h - 1, E += h) : E = 0, v++, 0 == --O[b]) { - if (b === w) - break; - b = t2[r2 + a[v]]; - } - if (k < b && (E & f) !== l) { - for (0 === S && (S = k), c += y, z = 1 << (x = b - S); x + S < w && !((z -= O[x + S]) <= 0); ) - x++, z <<= 1; - if (C += 1 << x, 1 === e2 && 852 < C || 2 === e2 && 592 < C) - return 1; - i[l = E & f] = k << 24 | x << 16 | c - s | 0; - } - } - return 0 !== E && (i[c + E] = b - S << 24 | 64 << 16 | 0), o.bits = k, 0; - }; - }, { "../utils/common": 41 }], 51: [function(e, t, r) { - "use strict"; - t.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; - }, {}], 52: [function(e, t, r) { - "use strict"; - var i = e("../utils/common"), o = 0, h = 1; - function n(e2) { - for (var t2 = e2.length; 0 <= --t2; ) - e2[t2] = 0; - } - var s = 0, a = 29, u = 256, l = u + 1 + a, f = 30, c = 19, _ = 2 * l + 1, g = 15, d = 16, p = 7, m = 256, b = 16, v = 17, y = 18, w = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], k = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], x = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], z = new Array(2 * (l + 2)); - n(z); - var C = new Array(2 * f); - n(C); - var E = new Array(512); - n(E); - var A = new Array(256); - n(A); - var I = new Array(a); - n(I); - var O, B, R, T = new Array(f); - function D(e2, t2, r2, n2, i2) { - this.static_tree = e2, this.extra_bits = t2, this.extra_base = r2, this.elems = n2, this.max_length = i2, this.has_stree = e2 && e2.length; - } - function F(e2, t2) { - this.dyn_tree = e2, this.max_code = 0, this.stat_desc = t2; - } - function N(e2) { - return e2 < 256 ? E[e2] : E[256 + (e2 >>> 7)]; - } - function U(e2, t2) { - e2.pending_buf[e2.pending++] = 255 & t2, e2.pending_buf[e2.pending++] = t2 >>> 8 & 255; - } - function P(e2, t2, r2) { - e2.bi_valid > d - r2 ? (e2.bi_buf |= t2 << e2.bi_valid & 65535, U(e2, e2.bi_buf), e2.bi_buf = t2 >> d - e2.bi_valid, e2.bi_valid += r2 - d) : (e2.bi_buf |= t2 << e2.bi_valid & 65535, e2.bi_valid += r2); - } - function L(e2, t2, r2) { - P(e2, r2[2 * t2], r2[2 * t2 + 1]); - } - function j(e2, t2) { - for (var r2 = 0; r2 |= 1 & e2, e2 >>>= 1, r2 <<= 1, 0 < --t2; ) - ; - return r2 >>> 1; - } - function Z(e2, t2, r2) { - var n2, i2, s2 = new Array(g + 1), a2 = 0; - for (n2 = 1; n2 <= g; n2++) - s2[n2] = a2 = a2 + r2[n2 - 1] << 1; - for (i2 = 0; i2 <= t2; i2++) { - var o2 = e2[2 * i2 + 1]; - 0 !== o2 && (e2[2 * i2] = j(s2[o2]++, o2)); - } - } - function W(e2) { - var t2; - for (t2 = 0; t2 < l; t2++) - e2.dyn_ltree[2 * t2] = 0; - for (t2 = 0; t2 < f; t2++) - e2.dyn_dtree[2 * t2] = 0; - for (t2 = 0; t2 < c; t2++) - e2.bl_tree[2 * t2] = 0; - e2.dyn_ltree[2 * m] = 1, e2.opt_len = e2.static_len = 0, e2.last_lit = e2.matches = 0; - } - function M(e2) { - 8 < e2.bi_valid ? U(e2, e2.bi_buf) : 0 < e2.bi_valid && (e2.pending_buf[e2.pending++] = e2.bi_buf), e2.bi_buf = 0, e2.bi_valid = 0; - } - function H(e2, t2, r2, n2) { - var i2 = 2 * t2, s2 = 2 * r2; - return e2[i2] < e2[s2] || e2[i2] === e2[s2] && n2[t2] <= n2[r2]; - } - function G(e2, t2, r2) { - for (var n2 = e2.heap[r2], i2 = r2 << 1; i2 <= e2.heap_len && (i2 < e2.heap_len && H(t2, e2.heap[i2 + 1], e2.heap[i2], e2.depth) && i2++, !H(t2, n2, e2.heap[i2], e2.depth)); ) - e2.heap[r2] = e2.heap[i2], r2 = i2, i2 <<= 1; - e2.heap[r2] = n2; - } - function K(e2, t2, r2) { - var n2, i2, s2, a2, o2 = 0; - if (0 !== e2.last_lit) - for (; n2 = e2.pending_buf[e2.d_buf + 2 * o2] << 8 | e2.pending_buf[e2.d_buf + 2 * o2 + 1], i2 = e2.pending_buf[e2.l_buf + o2], o2++, 0 === n2 ? L(e2, i2, t2) : (L(e2, (s2 = A[i2]) + u + 1, t2), 0 !== (a2 = w[s2]) && P(e2, i2 -= I[s2], a2), L(e2, s2 = N(--n2), r2), 0 !== (a2 = k[s2]) && P(e2, n2 -= T[s2], a2)), o2 < e2.last_lit; ) - ; - L(e2, m, t2); - } - function Y(e2, t2) { - var r2, n2, i2, s2 = t2.dyn_tree, a2 = t2.stat_desc.static_tree, o2 = t2.stat_desc.has_stree, h2 = t2.stat_desc.elems, u2 = -1; - for (e2.heap_len = 0, e2.heap_max = _, r2 = 0; r2 < h2; r2++) - 0 !== s2[2 * r2] ? (e2.heap[++e2.heap_len] = u2 = r2, e2.depth[r2] = 0) : s2[2 * r2 + 1] = 0; - for (; e2.heap_len < 2; ) - s2[2 * (i2 = e2.heap[++e2.heap_len] = u2 < 2 ? ++u2 : 0)] = 1, e2.depth[i2] = 0, e2.opt_len--, o2 && (e2.static_len -= a2[2 * i2 + 1]); - for (t2.max_code = u2, r2 = e2.heap_len >> 1; 1 <= r2; r2--) - G(e2, s2, r2); - for (i2 = h2; r2 = e2.heap[1], e2.heap[1] = e2.heap[e2.heap_len--], G(e2, s2, 1), n2 = e2.heap[1], e2.heap[--e2.heap_max] = r2, e2.heap[--e2.heap_max] = n2, s2[2 * i2] = s2[2 * r2] + s2[2 * n2], e2.depth[i2] = (e2.depth[r2] >= e2.depth[n2] ? e2.depth[r2] : e2.depth[n2]) + 1, s2[2 * r2 + 1] = s2[2 * n2 + 1] = i2, e2.heap[1] = i2++, G(e2, s2, 1), 2 <= e2.heap_len; ) - ; - e2.heap[--e2.heap_max] = e2.heap[1], function(e3, t3) { - var r3, n3, i3, s3, a3, o3, h3 = t3.dyn_tree, u3 = t3.max_code, l2 = t3.stat_desc.static_tree, f2 = t3.stat_desc.has_stree, c2 = t3.stat_desc.extra_bits, d2 = t3.stat_desc.extra_base, p2 = t3.stat_desc.max_length, m2 = 0; - for (s3 = 0; s3 <= g; s3++) - e3.bl_count[s3] = 0; - for (h3[2 * e3.heap[e3.heap_max] + 1] = 0, r3 = e3.heap_max + 1; r3 < _; r3++) - p2 < (s3 = h3[2 * h3[2 * (n3 = e3.heap[r3]) + 1] + 1] + 1) && (s3 = p2, m2++), h3[2 * n3 + 1] = s3, u3 < n3 || (e3.bl_count[s3]++, a3 = 0, d2 <= n3 && (a3 = c2[n3 - d2]), o3 = h3[2 * n3], e3.opt_len += o3 * (s3 + a3), f2 && (e3.static_len += o3 * (l2[2 * n3 + 1] + a3))); - if (0 !== m2) { - do { - for (s3 = p2 - 1; 0 === e3.bl_count[s3]; ) - s3--; - e3.bl_count[s3]--, e3.bl_count[s3 + 1] += 2, e3.bl_count[p2]--, m2 -= 2; - } while (0 < m2); - for (s3 = p2; 0 !== s3; s3--) - for (n3 = e3.bl_count[s3]; 0 !== n3; ) - u3 < (i3 = e3.heap[--r3]) || (h3[2 * i3 + 1] !== s3 && (e3.opt_len += (s3 - h3[2 * i3 + 1]) * h3[2 * i3], h3[2 * i3 + 1] = s3), n3--); - } - }(e2, t2), Z(s2, u2, e2.bl_count); - } - function X(e2, t2, r2) { - var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; - for (0 === a2 && (h2 = 138, u2 = 3), t2[2 * (r2 + 1) + 1] = 65535, n2 = 0; n2 <= r2; n2++) - i2 = a2, a2 = t2[2 * (n2 + 1) + 1], ++o2 < h2 && i2 === a2 || (o2 < u2 ? e2.bl_tree[2 * i2] += o2 : 0 !== i2 ? (i2 !== s2 && e2.bl_tree[2 * i2]++, e2.bl_tree[2 * b]++) : o2 <= 10 ? e2.bl_tree[2 * v]++ : e2.bl_tree[2 * y]++, s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4)); - } - function V(e2, t2, r2) { - var n2, i2, s2 = -1, a2 = t2[1], o2 = 0, h2 = 7, u2 = 4; - for (0 === a2 && (h2 = 138, u2 = 3), n2 = 0; n2 <= r2; n2++) - if (i2 = a2, a2 = t2[2 * (n2 + 1) + 1], !(++o2 < h2 && i2 === a2)) { - if (o2 < u2) - for (; L(e2, i2, e2.bl_tree), 0 != --o2; ) - ; - else - 0 !== i2 ? (i2 !== s2 && (L(e2, i2, e2.bl_tree), o2--), L(e2, b, e2.bl_tree), P(e2, o2 - 3, 2)) : o2 <= 10 ? (L(e2, v, e2.bl_tree), P(e2, o2 - 3, 3)) : (L(e2, y, e2.bl_tree), P(e2, o2 - 11, 7)); - s2 = i2, u2 = (o2 = 0) === a2 ? (h2 = 138, 3) : i2 === a2 ? (h2 = 6, 3) : (h2 = 7, 4); - } - } - n(T); - var q = false; - function J(e2, t2, r2, n2) { - P(e2, (s << 1) + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { - M(e3), n3 && (U(e3, r3), U(e3, ~r3)), i.arraySet(e3.pending_buf, e3.window, t3, r3, e3.pending), e3.pending += r3; - }(e2, t2, r2, true); - } - r._tr_init = function(e2) { - q || (function() { - var e3, t2, r2, n2, i2, s2 = new Array(g + 1); - for (n2 = r2 = 0; n2 < a - 1; n2++) - for (I[n2] = r2, e3 = 0; e3 < 1 << w[n2]; e3++) - A[r2++] = n2; - for (A[r2 - 1] = n2, n2 = i2 = 0; n2 < 16; n2++) - for (T[n2] = i2, e3 = 0; e3 < 1 << k[n2]; e3++) - E[i2++] = n2; - for (i2 >>= 7; n2 < f; n2++) - for (T[n2] = i2 << 7, e3 = 0; e3 < 1 << k[n2] - 7; e3++) - E[256 + i2++] = n2; - for (t2 = 0; t2 <= g; t2++) - s2[t2] = 0; - for (e3 = 0; e3 <= 143; ) - z[2 * e3 + 1] = 8, e3++, s2[8]++; - for (; e3 <= 255; ) - z[2 * e3 + 1] = 9, e3++, s2[9]++; - for (; e3 <= 279; ) - z[2 * e3 + 1] = 7, e3++, s2[7]++; - for (; e3 <= 287; ) - z[2 * e3 + 1] = 8, e3++, s2[8]++; - for (Z(z, l + 1, s2), e3 = 0; e3 < f; e3++) - C[2 * e3 + 1] = 5, C[2 * e3] = j(e3, 5); - O = new D(z, w, u + 1, l, g), B = new D(C, k, 0, f, g), R = new D(new Array(0), x, 0, c, p); - }(), q = true), e2.l_desc = new F(e2.dyn_ltree, O), e2.d_desc = new F(e2.dyn_dtree, B), e2.bl_desc = new F(e2.bl_tree, R), e2.bi_buf = 0, e2.bi_valid = 0, W(e2); - }, r._tr_stored_block = J, r._tr_flush_block = function(e2, t2, r2, n2) { - var i2, s2, a2 = 0; - 0 < e2.level ? (2 === e2.strm.data_type && (e2.strm.data_type = function(e3) { - var t3, r3 = 4093624447; - for (t3 = 0; t3 <= 31; t3++, r3 >>>= 1) - if (1 & r3 && 0 !== e3.dyn_ltree[2 * t3]) - return o; - if (0 !== e3.dyn_ltree[18] || 0 !== e3.dyn_ltree[20] || 0 !== e3.dyn_ltree[26]) - return h; - for (t3 = 32; t3 < u; t3++) - if (0 !== e3.dyn_ltree[2 * t3]) - return h; - return o; - }(e2)), Y(e2, e2.l_desc), Y(e2, e2.d_desc), a2 = function(e3) { - var t3; - for (X(e3, e3.dyn_ltree, e3.l_desc.max_code), X(e3, e3.dyn_dtree, e3.d_desc.max_code), Y(e3, e3.bl_desc), t3 = c - 1; 3 <= t3 && 0 === e3.bl_tree[2 * S[t3] + 1]; t3--) - ; - return e3.opt_len += 3 * (t3 + 1) + 5 + 5 + 4, t3; - }(e2), i2 = e2.opt_len + 3 + 7 >>> 3, (s2 = e2.static_len + 3 + 7 >>> 3) <= i2 && (i2 = s2)) : i2 = s2 = r2 + 5, r2 + 4 <= i2 && -1 !== t2 ? J(e2, t2, r2, n2) : 4 === e2.strategy || s2 === i2 ? (P(e2, 2 + (n2 ? 1 : 0), 3), K(e2, z, C)) : (P(e2, 4 + (n2 ? 1 : 0), 3), function(e3, t3, r3, n3) { - var i3; - for (P(e3, t3 - 257, 5), P(e3, r3 - 1, 5), P(e3, n3 - 4, 4), i3 = 0; i3 < n3; i3++) - P(e3, e3.bl_tree[2 * S[i3] + 1], 3); - V(e3, e3.dyn_ltree, t3 - 1), V(e3, e3.dyn_dtree, r3 - 1); - }(e2, e2.l_desc.max_code + 1, e2.d_desc.max_code + 1, a2 + 1), K(e2, e2.dyn_ltree, e2.dyn_dtree)), W(e2), n2 && M(e2); - }, r._tr_tally = function(e2, t2, r2) { - return e2.pending_buf[e2.d_buf + 2 * e2.last_lit] = t2 >>> 8 & 255, e2.pending_buf[e2.d_buf + 2 * e2.last_lit + 1] = 255 & t2, e2.pending_buf[e2.l_buf + e2.last_lit] = 255 & r2, e2.last_lit++, 0 === t2 ? e2.dyn_ltree[2 * r2]++ : (e2.matches++, t2--, e2.dyn_ltree[2 * (A[r2] + u + 1)]++, e2.dyn_dtree[2 * N(t2)]++), e2.last_lit === e2.lit_bufsize - 1; - }, r._tr_align = function(e2) { - P(e2, 2, 3), L(e2, m, z), function(e3) { - 16 === e3.bi_valid ? (U(e3, e3.bi_buf), e3.bi_buf = 0, e3.bi_valid = 0) : 8 <= e3.bi_valid && (e3.pending_buf[e3.pending++] = 255 & e3.bi_buf, e3.bi_buf >>= 8, e3.bi_valid -= 8); - }(e2); - }; - }, { "../utils/common": 41 }], 53: [function(e, t, r) { - "use strict"; - t.exports = function() { - this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0; - }; - }, {}], 54: [function(e, t, r) { - (function(e2) { - !function(r2, n) { - "use strict"; - if (!r2.setImmediate) { - var i, s, t2, a, o = 1, h = {}, u = false, l = r2.document, e3 = Object.getPrototypeOf && Object.getPrototypeOf(r2); - e3 = e3 && e3.setTimeout ? e3 : r2, i = "[object process]" === {}.toString.call(r2.process) ? function(e4) { - process.nextTick(function() { - c(e4); - }); - } : function() { - if (r2.postMessage && !r2.importScripts) { - var e4 = true, t3 = r2.onmessage; - return r2.onmessage = function() { - e4 = false; - }, r2.postMessage("", "*"), r2.onmessage = t3, e4; - } - }() ? (a = "setImmediate$" + Math.random() + "$", r2.addEventListener ? r2.addEventListener("message", d, false) : r2.attachEvent("onmessage", d), function(e4) { - r2.postMessage(a + e4, "*"); - }) : r2.MessageChannel ? ((t2 = new MessageChannel()).port1.onmessage = function(e4) { - c(e4.data); - }, function(e4) { - t2.port2.postMessage(e4); - }) : l && "onreadystatechange" in l.createElement("script") ? (s = l.documentElement, function(e4) { - var t3 = l.createElement("script"); - t3.onreadystatechange = function() { - c(e4), t3.onreadystatechange = null, s.removeChild(t3), t3 = null; - }, s.appendChild(t3); - }) : function(e4) { - setTimeout(c, 0, e4); - }, e3.setImmediate = function(e4) { - "function" != typeof e4 && (e4 = new Function("" + e4)); - for (var t3 = new Array(arguments.length - 1), r3 = 0; r3 < t3.length; r3++) - t3[r3] = arguments[r3 + 1]; - var n2 = { callback: e4, args: t3 }; - return h[o] = n2, i(o), o++; - }, e3.clearImmediate = f; - } - function f(e4) { - delete h[e4]; - } - function c(e4) { - if (u) - setTimeout(c, 0, e4); - else { - var t3 = h[e4]; - if (t3) { - u = true; - try { - !function(e5) { - var t4 = e5.callback, r3 = e5.args; - switch (r3.length) { - case 0: - t4(); - break; - case 1: - t4(r3[0]); - break; - case 2: - t4(r3[0], r3[1]); - break; - case 3: - t4(r3[0], r3[1], r3[2]); - break; - default: - t4.apply(n, r3); - } - }(t3); - } finally { - f(e4), u = false; - } - } - } - } - function d(e4) { - e4.source === r2 && "string" == typeof e4.data && 0 === e4.data.indexOf(a) && c(+e4.data.slice(a.length)); - } - }("undefined" == typeof self ? void 0 === e2 ? this : e2 : self); - }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); - }, {}] }, {}, [10])(10); - }); - } - }); - - // ../components/smart-camera-web.js - var VERSION = "1.0.2"; - var DEFAULT_NO_OF_LIVENESS_FRAMES = 8; - var PORTRAIT_ID_PREVIEW_WIDTH = 396; - var PORTRAIT_ID_PREVIEW_HEIGHT = 527; - function isSamsungMultiCameraDevice() { - const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\d{3}/); - if (!matchedModelNumber) { - return false; - } - const modelNumber = parseInt(matchedModelNumber[0].match(/\d{3}/)[0], 10); - const smallerModelNumber = 970; - return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber; - } - function getLivenessFramesIndices(totalNoOfFrames, numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES) { - const selectedFrames = []; - if (totalNoOfFrames < numberOfFramesRequired) { - throw new Error("SmartCameraWeb: Minimum required no of frames is ", numberOfFramesRequired); - } - const frameDivisor = numberOfFramesRequired - 1; - const frameInterval = Math.floor(totalNoOfFrames / frameDivisor); - let replacementFrameIndex = 1; - for (let i = 0; i < totalNoOfFrames; i += frameInterval) { - if (selectedFrames.length < 8) { - selectedFrames.push(i); - } else { - selectedFrames[replacementFrameIndex] = i; - selectedFrames.sort((a, b) => a - b); - replacementFrameIndex += 1; - } - } - const lastFrameIndex = totalNoOfFrames - 1; - if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) { - selectedFrames.push(lastFrameIndex); - } - return selectedFrames; - } - var SmartFileUpload = class _SmartFileUpload { - static memoryLimit = 1024e4; - static supportedTypes = ["image/jpeg", "image/png"]; - static getHumanSize(numberOfBytes) { - const units = [ - "B", - "kB", - "MB", - "GB", - "TB", - "PB", - "EB", - "ZB", - "YB" - ]; - const exponent = Math.min( - Math.floor(Math.log(numberOfBytes) / Math.log(1024)), - units.length - 1 - ); - const approx = numberOfBytes / 1024 ** exponent; - const output = exponent === 0 ? `${numberOfBytes} bytes` : `${approx.toFixed(0)} ${units[exponent]}`; - return output; - } - static getData(file) { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = (e) => { - resolve(e.target.result); - }; - reader.onerror = () => { - reject(new Error("An error occurred reading the file. Please check the file, and try again")); - }; - reader.readAsDataURL(file); - }); - } - static async retrieve(files) { - if (files.length > 1) { - throw new Error("Only one file upload is permitted at a time"); - } - const file = files[0]; - if (!_SmartFileUpload.supportedTypes.includes(file.type)) { - throw new Error("Unsupported file format. Please ensure that you are providing a JPG or PNG image"); - } - if (file.size > _SmartFileUpload.memoryLimit) { - throw new Error(`${file.name} is too large. Please ensure that the file is less than ${_SmartFileUpload.getHumanSize(_SmartFileUpload.memoryLimit)}.`); - } - const imageAsDataUrl = await _SmartFileUpload.getData(file); - return imageAsDataUrl; - } - }; - function scwTemplateString() { - return ` - - - - - - - - - - - - - - - -
-

-

-
- -
- ${this.showNavigation ? ` - - ` : ""} -
-

- We need access to your camera so that we can take selfie and proof-of-life images. -

- - - - ${this.hideAttribution ? "" : ` - - `} -
-
- - - - - - - - - - - - - - - - - - - - - - `; - } - var PoweredBySmileId = class extends HTMLElement { - constructor() { - super(); - const template = document.createElement("template"); - template.innerHTML = ` -

- - - - - - - - - - - - - - - - - - - -

- `; - this.attachShadow({ mode: "open" }).appendChild(template.content.cloneNode(true)); - } - }; - function hasMoreThanNColors(data, n = 16) { - const colors = /* @__PURE__ */ new Set(); - for (let i = 0; i < Math.min(data.length, 1e4); i += 4) { - colors.add(data[i] << 16 | data[i + 1] << 8 | data[i + 2]); - if (colors.size > n) { - return true; - } - } - return false; - } - window.customElements.define("powered-by-smile-id", PoweredBySmileId); - var SmartCameraWeb = class extends HTMLElement { - constructor() { - super(); - this.scwTemplateString = scwTemplateString.bind(this); - this.render = () => this.scwTemplateString(); - this.attachShadow({ mode: "open" }); - this.activeScreen = null; - } - setActiveScreen(element) { - this.activeScreen.hidden = true; - element.hidden = false; - this.activeScreen = element; - } - connectedCallback() { - this.shadowRoot.innerHTML = this.render(); - if ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices) { - this.setUpEventListeners(); - } else { - const heading = document.createElement("h1"); - heading.classList.add("error-message"); - heading.textContent = "Your browser does not support this integration"; - this.shadowRoot.innerHTML = heading; - } - } - disconnectedCallback() { - if (this.activeScreen) { - this.activeScreen.hidden = true; - } - this.activeScreen = null; - this.shadowRoot.innerHTML = ""; - } - static get observedAttributes() { - return ["document-capture-modes", "document-type", "hide-back-to-host", "show-navigation"]; - } - attributeChangedCallback(name) { - switch (name) { - case "document-capture-modes": - case "document-type": - case "hide-back-to-host": - case "show-navigation": - this.shadowRoot.innerHTML = this.render(); - this.setUpEventListeners(); - break; - default: - break; - } - } - setUpEventListeners() { - this.errorMessage = this.shadowRoot.querySelector("#error"); - this.requestScreen = this.shadowRoot.querySelector("#request-screen"); - this.activeScreen = this.requestScreen; - this.cameraScreen = this.shadowRoot.querySelector("#camera-screen"); - this.failedImageTestScreen = this.shadowRoot.querySelector("#failed-image-test-screen"); - this.reviewScreen = this.shadowRoot.querySelector("#review-screen"); - this.idEntryScreen = this.shadowRoot.querySelector("#id-entry-screen"); - this.IDCameraScreen = this.shadowRoot.querySelector("#id-camera-screen"); - this.IDReviewScreen = this.shadowRoot.querySelector("#id-review-screen"); - this.backOfIdEntryScreen = this.shadowRoot.querySelector("#back-of-id-entry-screen"); - this.backOfIDCameraScreen = this.shadowRoot.querySelector("#back-of-id-camera-screen"); - this.backOfIDReviewScreen = this.shadowRoot.querySelector("#back-of-id-review-screen"); - this.thanksScreen = this.shadowRoot.querySelector("#thanks-screen"); - this.videoContainer = this.shadowRoot.querySelector(".video-container > .video"); - this.smileCTA = this.shadowRoot.querySelector("#smile-cta"); - this.imageOutline = this.shadowRoot.querySelector("#image-outline path"); - this.startImageCapture = this.shadowRoot.querySelector("#start-image-capture"); - this.captureIDImage = this.shadowRoot.querySelector("#capture-id-image"); - this.captureBackOfIDImage = this.shadowRoot.querySelector("#capture-back-of-id-image"); - this.reviewImage = this.shadowRoot.querySelector("#review-image"); - this.IDReviewImage = this.shadowRoot.querySelector("#id-review-image"); - this.backOfIDReviewImage = this.shadowRoot.querySelector("#back-of-id-review-image"); - this.reStartImageCapture = this.shadowRoot.querySelector("#restart-image-capture"); - this.reCaptureIDImage = this.shadowRoot.querySelector("#re-capture-id-image"); - this.reCaptureBackOfIDImage = this.shadowRoot.querySelector("#re-capture-back-of-id-image"); - this.selectSelfie = this.shadowRoot.querySelector("#select-selfie"); - this.selectIDImage = this.shadowRoot.querySelector("#select-id-image"); - this.selectBackOfIDImage = this.shadowRoot.querySelector("#select-back-of-id-image"); - this.takeDocumentPhotoButton = this.idEntryScreen.querySelector("#take-photo"); - this.uploadDocumentPhotoButton = this.idEntryScreen.querySelector("#upload-photo"); - this.skipBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#skip-this-step"); - this.takeBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#take-photo"); - this.uploadBackOfDocumentPhotoButton = this.backOfIdEntryScreen.querySelector("#upload-photo"); - this.shadowRoot.querySelector("#request-camera-access").addEventListener("click", () => this.init()); - if (this.showNavigation) { - const backButtons = this.shadowRoot.querySelectorAll(".back-button-exit"); - backButtons.forEach((button) => { - button.addEventListener("click", () => { - this._backAndExit(); - }); - }); - const closeButtons = this.shadowRoot.querySelectorAll(".close-iframe"); - closeButtons.forEach((button) => { - button.addEventListener("click", () => { - this._exitSmartCamera(); - }); - }); - } - if (this.takeDocumentPhotoButton) - this.takeDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); - if (this.skipBackOfDocumentPhotoButton) - this.skipBackOfDocumentPhotoButton.addEventListener("click", () => this._skipBackDocument()); - if (this.takeBackOfDocumentPhotoButton) - this.takeBackOfDocumentPhotoButton.addEventListener("click", () => this._startIDCamera()); - if (this.uploadDocumentPhotoButton) - this.uploadDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); - if (this.uploadBackOfDocumentPhotoButton) - this.uploadBackOfDocumentPhotoButton.addEventListener("change", (e) => this._uploadDocument(e)); - this.backToSelfie = this.shadowRoot.querySelector("#back-button-selfie"); - this.backToIdEntryButton = this.shadowRoot.querySelector("#back-button-id-entry"); - this.backToBackIdEntryButton = this.shadowRoot.querySelector("#back-button-back-id-entry"); - this.backToIdImageButton = this.shadowRoot.querySelector("#back-button-id-image"); - if (this.backToSelfie) { - this.backToSelfie.addEventListener("click", () => { - this._reStartImageCapture(); - }); - } - if (this.backToIdEntryButton) { - this.backToIdEntryButton.addEventListener("click", () => { - this.setActiveScreen(this.idEntryScreen); - }); - } - if (this.backToBackIdEntryButton) { - this.backToBackIdEntryButton.addEventListener("click", () => { - this.setActiveScreen(this.backOfIdEntryScreen); - }); - } - if (this.backToIdImageButton) { - this.backToIdImageButton.addEventListener("click", () => { - this.setActiveScreen(this.IDReviewScreen); - }); - } - this.startImageCapture.addEventListener("click", () => { - this._startImageCapture(); - }); - this.selectSelfie.addEventListener("click", () => { - this._selectSelfie(); - }); - this.selectIDImage.addEventListener("click", () => { - this._selectIDImage(); - }); - this.selectBackOfIDImage.addEventListener("click", () => { - this._selectIDImage(true); - }); - this.captureIDImage.addEventListener("click", () => { - this._captureIDImage(); - }); - this.captureBackOfIDImage.addEventListener("click", () => { - this._captureIDImage(); - }); - this.reStartImageCapture.addEventListener("click", () => { - this._reStartImageCapture(); - }); - this.reCaptureIDImage.addEventListener("click", () => { - this._reCaptureIDImage(); - }); - this.reCaptureBackOfIDImage.addEventListener("click", () => { - this._reCaptureIDImage(); - }); - } - init() { - this._videoStreamDurationInMS = 7800; - this._imageCaptureIntervalInMS = 200; - this._data = { - images: [], - partner_params: { - libraryVersion: VERSION, - permissionGranted: false - } - }; - this._rawImages = []; - navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { - this.handleSuccess(stream); - }).catch((e) => { - this.handleError(e); - }); - } - reset() { - this.disconnectedCallback(); - this.connectedCallback(); - } - resetErrorMessage() { - this.errorMessage.textContent = ""; - } - handleSuccess(stream) { - const videoExists = !!this.videoContainer.querySelector("video"); - const video = videoExists ? this.videoContainer.querySelector("video") : document.createElement("video"); - video.autoplay = true; - video.playsInline = true; - video.muted = true; - if ("srcObject" in video) { - video.srcObject = stream; - } else { - video.src = window.URL.createObjectURL(stream); - } - video.play(); - if (!videoExists) - this.videoContainer.prepend(video); - this._data.partner_params.permissionGranted = true; - this.setActiveScreen(this.cameraScreen); - this._stream = stream; - this._video = video; - } - handleIDStream(stream) { - const videoExists = this.activeScreen === this.IDCameraScreen ? !!this.IDCameraScreen.querySelector("video") : !!this.backOfIDCameraScreen.querySelector("video"); - let video = null; - if (videoExists) { - if (this.activeScreen === this.IDCameraScreen) { - video = this.IDCameraScreen.querySelector("video"); - } else { - video = this.backOfIDCameraScreen.querySelector("video"); - } - } else { - video = document.createElement("video"); - } - video.autoplay = true; - video.playsInline = true; - video.muted = true; - if ("srcObject" in video) { - video.srcObject = stream; - } else { - video.src = window.URL.createObjectURL(stream); - } - video.play(); - const videoContainer = this.activeScreen === this.IDCameraScreen ? this.IDCameraScreen.querySelector(".id-video-container") : this.backOfIDCameraScreen.querySelector(".id-video-container"); - video.onloadedmetadata = () => { - videoContainer.querySelector(".actions").hidden = false; - }; - if (!videoExists) { - videoContainer.prepend(video); - } - this._IDStream = stream; - this._IDVideo = video; - } - handleError(e) { - switch (e.name) { - case "NotAllowedError": - case "SecurityError": - this.errorMessage.textContent = ` - Looks like camera access was not granted, or was blocked by a browser - level setting / extension. Please follow the prompt from the URL bar, - or extensions, and enable access. - You may need to refresh to start all over again - `; - break; - case "AbortError": - this.errorMessage.textContent = ` - Oops! Something happened, and we lost access to your stream. - Please refresh to start all over again - `; - break; - case "NotReadableError": - this.errorMessage.textContent = ` - There seems to be a problem with your device's camera, or its connection. - Please check this, and when resolved, try again. Or try another device. - `; - break; - case "NotFoundError": - this.errorMessage.textContent = ` - We are unable to find a video stream. - You may need to refresh to start all over again - `; - break; - case "TypeError": - this.errorMessage.textContent = ` - This site is insecure, and as such cannot have access to your camera. - Try to navigate to a secure version of this page, or contact the owner. - `; - break; - default: - this.errorMessage.textContent = e.message; - } - } - _startImageCapture() { - this.startImageCapture.disabled = true; - const imageOutlineLength = this.imageOutline.getTotalLength(); - this.imageOutline.style.transition = "none"; - this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`; - this.imageOutline.style.strokeDashoffset = imageOutlineLength; - this.imageOutline.getBoundingClientRect(); - this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1e3}s ease-in-out`; - this.imageOutline.style.strokeDashoffset = "0"; - this.smileCTA.style.animation = `fadeInOut ease ${this._videoStreamDurationInMS / 1e3}s`; - this._imageCaptureInterval = setInterval(() => { - this._capturePOLPhoto(); - }, this._imageCaptureIntervalInMS); - this._videoStreamTimeout = setTimeout(() => { - this._stopVideoStream(this._stream); - }, this._videoStreamDurationInMS); - } - _captureIDImage() { - const image = this._drawIDImage(); - if (this.activeScreen === this.IDCameraScreen) { - this.IDReviewImage.src = image; - } else { - this.backOfIDReviewImage.src = image; - } - this._data.images.push({ - image: image.split(",")[1], - image_type_id: this.activeScreen === this.IDCameraScreen ? 3 : 7 - }); - this._stopIDVideoStream(); - if (this.activeScreen === this.IDCameraScreen) { - this.setActiveScreen(this.IDReviewScreen); - } else { - this.setActiveScreen(this.backOfIDReviewScreen); - } - } - _drawImage(canvas, enableImageTests = true, video = this._video) { - this.resetErrorMessage(); - const context = canvas.getContext("2d"); - context.drawImage( - video, - 0, - 0, - video.videoWidth, - video.videoHeight, - 0, - 0, - canvas.width, - canvas.height - ); - if (enableImageTests) { - const imageData = context.getImageData(0, 0, canvas.width, canvas.height); - const hasEnoughColors = hasMoreThanNColors(imageData.data); - if (hasEnoughColors) { - return context; - } - throw new Error("Unable to capture webcam images - Please try another device"); - } else { - return context; - } - } - _capturePOLPhoto() { - const canvas = document.createElement("canvas"); - canvas.width = 240; - canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; - this._drawImage(canvas, false); - this._rawImages.push(canvas.toDataURL("image/jpeg")); - } - _captureReferencePhoto() { - const canvas = document.createElement("canvas"); - canvas.width = 480; - canvas.height = canvas.width * this._video.videoHeight / this._video.videoWidth; - this._drawImage(canvas, !this.disableImageTests); - const image = canvas.toDataURL("image/jpeg"); - this._referenceImage = image; - this._data.images.push({ - image: image.split(",")[1], - image_type_id: 2 - }); - } - _skipBackDocument() { - this._publishSelectedImages(); - } - async _uploadDocument(event) { - this.resetErrorMessage(); - try { - const { files } = event.target; - const fileData = await SmartFileUpload.retrieve(files); - this._data.images.push({ - // NOTE: data URLs start with a file type before the base64 data, - // separated by a comma. - // - // we are only interested in the base64 segment, so we extract it - image: fileData.split(",")[1], - image_type_id: this.activeScreen === this.idEntryScreen ? 3 : 7 - }); - const nextScreen = this.activeScreen === this.idEntryScreen ? this.IDReviewScreen : this.backOfIDReviewScreen; - const previewImage = nextScreen.querySelector("img"); - previewImage.src = fileData; - this.setActiveScreen(nextScreen); - } catch (error) { - this.handleError(error); - } - } - _drawIDImage(video = this._IDVideo) { - const canvas = document.createElement("canvas"); - if (this.isPortraitCaptureView) { - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - const ctx = canvas.getContext("2d"); - ctx.drawImage(video, 0, 0, canvas.width, canvas.height); - const previewWidth = PORTRAIT_ID_PREVIEW_WIDTH; - const previewHeight = PORTRAIT_ID_PREVIEW_HEIGHT; - const paddingPercent = 0.5; - const paddedWidth = previewWidth * (1 + paddingPercent); - const paddedHeight = previewHeight * (1 + paddingPercent); - const cropWidth = paddedWidth; - const cropHeight = paddedHeight; - const cropLeft = (canvas.width - cropWidth) / 2; - const cropTop = (canvas.height - cropHeight) / 2; - const croppedCanvas = document.createElement("canvas"); - croppedCanvas.width = cropWidth; - croppedCanvas.height = cropHeight; - const croppedCtx = croppedCanvas.getContext("2d"); - croppedCtx.drawImage(canvas, cropLeft, cropTop, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight); - return croppedCanvas.toDataURL("image/jpeg"); - } - canvas.width = 2240; - canvas.height = 1260; - const context = canvas.getContext("2d"); - const aspectRatio = video.videoWidth / video.videoHeight; - if (aspectRatio < 1) { - const imageFrame = this.activeScreen.querySelector('[class*="image-frame"]:not([hidden]) [href*="image-frame"]'); - const videoBox = video.getBoundingClientRect(); - const frameBox = imageFrame.getBoundingClientRect(); - const sourceXOffset = (frameBox.left - videoBox.left) / videoBox.width * video.videoWidth; - const sourceYOffset = (frameBox.top - videoBox.top) / videoBox.height * video.videoHeight; - const sourceWidth = frameBox.width * (video.videoWidth / videoBox.width); - const sourceHeight = frameBox.height * (video.videoHeight / videoBox.height); - canvas.height = canvas.width * frameBox.height / frameBox.width; - context.drawImage(video, sourceXOffset, sourceYOffset, sourceWidth, sourceHeight, 0, 0, canvas.width, canvas.height); - return canvas.toDataURL("image/jpeg"); - } - context.drawImage(video, 0, 0, canvas.width, canvas.height); - return canvas.toDataURL("image/jpeg"); - } - _stopVideoStream(stream) { - try { - clearTimeout(this._videoStreamTimeout); - clearInterval(this._imageCaptureInterval); - clearInterval(this._drawingInterval); - this.smileCTA.style.animation = "none"; - this._capturePOLPhoto(); - this._captureReferencePhoto(); - stream.getTracks().forEach((track) => track.stop()); - this.reviewImage.src = this._referenceImage; - const totalNoOfFrames = this._rawImages.length; - const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames); - this._data.images = this._data.images.concat(livenessFramesIndices.map((imageIndex) => ({ - image: this._rawImages[imageIndex].split(",")[1], - image_type_id: 6 - }))); - this.setActiveScreen(this.reviewScreen); - } catch (error) { - this.setActiveScreen(this.failedImageTestScreen); - } - } - _stopIDVideoStream(stream = this._IDStream) { - stream.getTracks().forEach((track) => track.stop()); - } - async _startIDCamera() { - try { - const stream = await navigator.mediaDevices.getUserMedia({ - audio: false, - video: { - facingMode: "environment", - width: { min: 1280 }, - // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant) - // "We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges. - // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it." - zoom: isSamsungMultiCameraDevice() ? 2 : 1 - } - }); - if (this.activeScreen === this.idEntryScreen) { - this.setActiveScreen(this.IDCameraScreen); - } else if (this.activeScreen === this.backOfIdEntryScreen) { - this.setActiveScreen(this.backOfIDCameraScreen); - } - this.handleIDStream(stream); - } catch (e) { - this.handleError(e); - } - } - _selectSelfie() { - if (!this.captureID) { - this._publishSelectedImages(); - } else { - this.setActiveScreen(this.idEntryScreen); - } - } - _selectIDImage(backOfIDCaptured = false) { - if (!this.captureBackOfID || backOfIDCaptured) { - this._publishSelectedImages(); - } else { - this.setActiveScreen(this.backOfIdEntryScreen); - } - } - _publishSelectedImages() { - this.dispatchEvent( - new CustomEvent("imagesComputed", { detail: this._data }) - ); - this.setActiveScreen(this.thanksScreen); - } - _exitSmartCamera() { - this.dispatchEvent( - new CustomEvent("close", { detail: {} }) - ); - } - _backAndExit() { - this.dispatchEvent( - new CustomEvent("backExit", { detail: {} }) - ); - } - async _reStartImageCapture() { - this.startImageCapture.disabled = false; - this._rawImages = []; - this._data.images = []; - try { - const stream = await navigator.mediaDevices.getUserMedia({ - audio: false, - video: true - }); - this.handleSuccess(stream); - } catch (e) { - this.handleError(e); - } - } - async _reCaptureIDImage() { - const previousScreen = this.activeScreen === this.IDReviewScreen ? this.idEntryScreen : this.backOfIdEntryScreen; - this.setActiveScreen(previousScreen); - this._data.images.pop(); - } - get captureID() { - return this.hasAttribute("capture-id"); - } - get captureBackOfID() { - return this.getAttribute("capture-id") === "back" || false; - } - get hideAttribution() { - return this.hasAttribute("hide-attribution"); - } - get showNavigation() { - return this.hasAttribute("show-navigation"); - } - get hideBackToHost() { - return this.hasAttribute("hide-back-to-host"); - } - get documentType() { - return this.getAttribute("document-type"); - } - get isPortraitCaptureView() { - return this.getAttribute("document-type") === "GREEN_BOOK"; - } - get documentCaptureModes() { - return this.getAttribute("document-capture-modes") || "camera"; - } - get supportBothCaptureModes() { - const value = this.documentCaptureModes; - return value.includes("camera") && value.includes("upload"); - } - get disableImageTests() { - return this.hasAttribute("disable-image-tests"); - } - get doNotUpload() { - return this.getAttribute("document-capture-modes") === "camera"; - } - }; - window.customElements.define("smart-camera-web", SmartCameraWeb); - - // src/js/smartselfie-auth.js - var import_jszip = __toESM(require_jszip_min(), 1); - - // package.json - var version = "v1.2.3"; - - // src/js/smartselfie-auth.js - (function SmartSelfie() { - "use strict"; - const endpoints = { - sandbox: "https://testapi.smileidentity.com/v1", - live: "https://api.smileidentity.com/v1", - production: "https://api.smileidentity.com/v1" - }; - const referenceWindow = window.parent; - referenceWindow.postMessage("SmileIdentity::ChildPageReady", "*"); - const labels = { - 2: { - title: "SmartSelfie\u2122 Authentication", - upload: "Authenticating User" - }, - 4: { - title: "SmartSelfie\u2122 Registration", - upload: "Registering User" - } - }; - let config; - let activeScreen; - let id_info; - let images; - let partner_params; - const SmartCameraWeb2 = document.querySelector("smart-camera-web"); - const UploadProgressScreen = document.querySelector( - "#upload-progress-screen" - ); - const UploadFailureScreen = document.querySelector("#upload-failure-screen"); - const CompleteScreen = document.querySelector("#complete-screen"); - const CloseIframeButton = document.querySelector("#close-iframe"); - const RetryUploadButton = document.querySelector("#retry-upload"); - let fileToUpload; - let uploadURL; - window.addEventListener( - "message", - async (event) => { - if (event.data && event.data.includes("SmileIdentity::Configuration")) { - config = JSON.parse(event.data); - partner_params = getPartnerParams(); - id_info = {}; - setActiveScreen(SmartCameraWeb2); - } - }, - false - ); - SmartCameraWeb2.addEventListener( - "imagesComputed", - (event) => { - images = event.detail.images; - const title = document.querySelector("#uploadTitle"); - title.innerHTML = labels[`${partner_params.job_type}`].upload; - setActiveScreen(UploadProgressScreen); - handleFormSubmit(); - }, - false - ); - RetryUploadButton.addEventListener( - "click", - () => { - retryUpload(); - }, - false - ); - CloseIframeButton.addEventListener( - "click", - () => { - closeWindow(true); - }, - false - ); - function parseJWT(token) { - const base64Url = token.split(".")[1]; - const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); - const jsonPayload = decodeURIComponent( - atob(base64).split("").map(function(c) { - return `%${c.charCodeAt(0).toString(16)}`; - }).join("") - ); - return JSON.parse(jsonPayload); - } - function getPartnerParams() { - const { partner_params: partnerParams } = parseJWT(config.token); - partner_params = { ...partnerParams, ...config.partner_params || {} }; - return partner_params; - } - function setActiveScreen(node) { - if (activeScreen) - activeScreen.hidden = true; - node.hidden = false; - activeScreen = node; - } - async function handleFormSubmit() { - const errorMessage = document.querySelector(".validation-message"); - if (errorMessage) - errorMessage.remove(); - try { - [uploadURL, fileToUpload] = await Promise.all([ - getUploadURL(), - createZip() - ]); - uploadZip(fileToUpload, uploadURL); - } catch (error) { - displayErrorMessage("Something went wrong"); - console.error( - `SmileIdentity - ${error.name || error.message}: ${error.cause}` - ); - } - } - function displayErrorMessage(message) { - const p = document.createElement("p"); - p.textContent = message; - p.style.color = "red"; - p.style.fontSize = "1.5rem"; - p.style.textAlign = "center"; - const main = document.querySelector("main"); - main.prepend(p); - } - async function createZip() { - const zip = new import_jszip.default(); - zip.file( - "info.json", - JSON.stringify({ - package_information: { - language: "Hosted Web Integration", - apiVersion: { - buildNumber: 0, - majorVersion: 2, - minorVersion: 0 - } - }, - id_info, - images - }) - ); - try { - const zipFile = await zip.generateAsync({ type: "blob" }); - return zipFile; - } catch (error) { - throw new Error("createZip failed", { cause: error }); - } - } - async function getUploadURL() { - const payload = { - source_sdk: config.sdk || "hosted_web", - source_sdk_version: config.sdk_version || version, - file_name: `${config.product}.zip`, - smile_client_id: config.partner_details.partner_id, - callback_url: config.callback_url, - token: config.token, - partner_params - }; - const fetchConfig = { - cache: "no-cache", - mode: "cors", - headers: { - Accept: "application/json", - "Content-Type": "application/json" - }, - method: "POST", - body: JSON.stringify(payload) - }; - const URL = `${endpoints[config.environment]}/upload`; - const response = await fetch(URL, fetchConfig); - const json = await response.json(); - if (json.error) - throw new Error(json.error); - return json.upload_url; - } - function uploadZip(file, destination) { - const request = new XMLHttpRequest(); - request.open("PUT", destination); - request.upload.addEventListener("load", function() { - return request.response; - }); - request.upload.addEventListener("error", function(e) { - setActiveScreen(UploadFailureScreen); - throw new Error("uploadZip failed", { cause: e }); - }); - request.onreadystatechange = function() { - if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { - setActiveScreen(CompleteScreen); - handleSuccess(); - window.setTimeout(closeWindow, 2e3); - } - if (request.readyState === XMLHttpRequest.DONE && request.status !== 200) { - setActiveScreen(UploadFailureScreen); - throw new Error("uploadZip failed", { cause: request }); - } - }; - request.setRequestHeader("Content-type", "application/zip"); - request.send(file); - } - function retryUpload() { - const fileUploaded = uploadZip(fileToUpload, uploadURL); - return fileUploaded; - } - function closeWindow(userTriggered) { - const message = userTriggered ? "SmileIdentity::Close" : "SmileIdentity::Close::System"; - referenceWindow.postMessage(message, "*"); - } - function handleSuccess() { - referenceWindow.postMessage("SmileIdentity::Success", "*"); - } - })(); -})(); -/*! Bundled license information: - -jszip/dist/jszip.min.js: - (*! - - JSZip v3.10.1 - A JavaScript class for generating and reading zip files - - - (c) 2009-2016 Stuart Knightley - Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. - - JSZip uses the library pako released under the MIT license : - https://github.com/nodeca/pako/blob/main/LICENSE - *) -*/ diff --git a/packages/embed/build/kra-verification-basic-kyc.html b/packages/embed/build/kra-verification-basic-kyc.html deleted file mode 100644 index 2dd54544..00000000 --- a/packages/embed/build/kra-verification-basic-kyc.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/kra-verification-ekyc.html b/packages/embed/build/kra-verification-ekyc.html deleted file mode 100644 index 7d895add..00000000 --- a/packages/embed/build/kra-verification-ekyc.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/product-selection.html b/packages/embed/build/product-selection.html deleted file mode 100644 index b6abe38a..00000000 --- a/packages/embed/build/product-selection.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - SmileIdentity - ID Type Selection - - - - - - - - - - - - - - -
-
- -
-

- -

Setting up

- -

- Just a few more seconds -
- We are setting up your verification flow -

- -

- Powered by SmileID - -

-
- - -
- - - - diff --git a/packages/embed/build/smartselfie-auth.html b/packages/embed/build/smartselfie-auth.html deleted file mode 100644 index 5aaf8105..00000000 --- a/packages/embed/build/smartselfie-auth.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - SmileIdentity - SmartSelfie Authentication - - - - - - - - - - - - - -
- - - - - - - - -
- - - - diff --git a/packages/embed/build/smartselfie.html b/packages/embed/build/smartselfie.html deleted file mode 100644 index 69ced52f..00000000 --- a/packages/embed/build/smartselfie.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/verification-method-selection-single-country-multiple-id-types.html b/packages/embed/build/verification-method-selection-single-country-multiple-id-types.html deleted file mode 100644 index b379917d..00000000 --- a/packages/embed/build/verification-method-selection-single-country-multiple-id-types.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/verification-method-selection-single-country-single-id-type.html b/packages/embed/build/verification-method-selection-single-country-single-id-type.html deleted file mode 100644 index 811f2a71..00000000 --- a/packages/embed/build/verification-method-selection-single-country-single-id-type.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/embed/build/verification-method-selection.html b/packages/embed/build/verification-method-selection.html deleted file mode 100644 index 410dd737..00000000 --- a/packages/embed/build/verification-method-selection.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - From 7a06106643c730de4a120edc15148492a68edb24 Mon Sep 17 00:00:00 2001 From: Laud Bruce Tagoe Date: Fri, 17 Nov 2023 08:47:13 +0000 Subject: [PATCH 3/3] Remove screenshots. --- ...yc sequence in a nested iframe (failed).png | Bin 248717 -> 0 bytes ...on sequence in a nested iframe (failed).png | Bin 245352 -> 0 bytes ...yc sequence in a nested iframe (failed).png | Bin 240613 -> 0 bytes ...goes directly to the web embed (failed).png | Bin 251446 -> 0 bytes ...ctor, allows id_type selection (failed).png | Bin 254706 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- biometric_kyc -- should redirect to the biometric kyc sequence in a nested iframe (failed).png delete mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- doc_verification -- should redirect to the document verification sequence in a nested iframe (failed).png delete mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- enhanced_kyc -- should redirect to the enhanced kyc sequence in a nested iframe (failed).png delete mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- single country id_type -- goes directly to the web embed (failed).png delete mode 100644 packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- single country multiple id_types -- disables country selector, allows id_type selection (failed).png diff --git a/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- biometric_kyc -- should redirect to the biometric kyc sequence in a nested iframe (failed).png b/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- biometric_kyc -- should redirect to the biometric kyc sequence in a nested iframe (failed).png deleted file mode 100644 index 44db9d1eb7d6b510f006c0570092365c3c5a5f46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248717 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�Gc!A` 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νd2 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�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 Gxc@%|NoRln diff --git a/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- enhanced_kyc -- should redirect to the enhanced kyc sequence in a nested iframe (failed).png b/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- multiple countries id_types -- enhanced_kyc -- should redirect to the enhanced kyc sequence in a nested iframe (failed).png deleted file mode 100644 index b8e8be7fe8a79bfe8dce0a651bc573d79f23adfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240613 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�ZpnZ<&f`_kU2%}p0@i`8%4x>YGy`TDgy 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

Y(2e*HOha=`Kg0O zMvjfYdKKC=6WZT(DoFIYwN8SQHTs&8Z<0yZCyyO5fYoH#Z@ulzC>)FjeqemQKjnMT z6$DNKln3ISOsG+}-e{Tm@nb8X4!PFbRZYmWOfb7eK?SjlSFiSC%y2n5>O1pQxUH0x zN9zz!nRlo6G758RIS)A&0ttZyumEfwClJS3n`{RG`?aOmV_3B(X~s zq&2q{ZU+Mw0@@rS_azsoBy;N2;WiW?0;|J&FU|3A>rYvuU^T) zAk47&OEB||TR=%jU=oiQq6zBIEkp&dXauZ7bTR;SfFXMV+rLqf zYXv6+Nt01mQp!I_bui?8aN?>1Dy&Qht25o9B1OYc2+`>dvHm=8b`=RLEhMjIDYtB= z#Ube5=|Jji5-+gn@g@=DIxdR;ERt@i>mYPYt5oSjVNW4s0A!iYfYA=H8 zT6l`XkDK`AF6Sx{XbE*GDamZZQoj`FM9gllQ8ad9;v94`(nz@F+l`>9&nV6V{T|D@ zF&pcaA8U-5@(~9y!tirU8?8;T67p*xpZA5xT1#IeWA!a{O&zhh#=b==BQS783g=aE zr`$D(jv4a|@>B^}x5bVjNjKmGKLoJLHdy4FZ!U-BJ!}i~kbF?o^K;A5lCW*xGPO;0 zsWT}It%EQ683~QS{6CyY2o4B`W@{gy0*2)JfB^aEKB5$OG#xUuk{|o6aT@Hh6EjTs zA~_YQ%_k}IQOYU6-eth{(E=z`*sAX%PzWB9X7Mk6`Qw)3^s!uA0t!?rV!HT}jib?S zLlk|vW`#NYxyO$&VbR1jNCdf&`=Dt-b9P~{G|zgTkww(1B(uad6<8@v@G-}r$8So? zETliuxcGYM+Z2HV#JWqwJ9IP^Lc;?EY2qd?qGJFr75r;;i0ghShj(o9^I0}@;sLT@ zR0Iu7SIl6k5Wk3y$iR~zq=b*2`iCE)?7%_B0WfsUhmO~T@lSNV_w&4y6Ryp}hxJbK zxIz|$z2ui%jl=mk~AMw$9|0jb3ZfiZYc zCr*q5pIt~m2uz3M8SL8OPF*wJ_Ng{gLDy9V3=fc4U5&iuhx0o0WMs;Bw^N9YONG2` zUjvGF9|N84Iu%bjPR;)k#!|o;?S@t3Dt}kBv)78^8T|61nmJ;ipzPUob zI#1zj0!i+!KcC{J(sSuAiZ}|MgC}MG`bh5JDgp#zOPaeLJ(+vW^qFKEVKk z0(sCdOR(4}$#;bUZrhW|IDo+<*IF!!AB_PCm{1K z7CtqF&#qy~I@_s42TayCbt%AwmUXuGNo7iI6ijc?W8#Q0PTwrJ4aESY{ zf4y(|wy9~t?(!rt|4DtZ*z#9%@YYp9?owuyg=}jPBMj1_X}YlIFjNINxHD0KnhsRB z)bVw|VBC-KY`w_*3~Vp~V?*)kaxdwPVRZ4Jbu>I6(1C0ImcSIdEmkBr54q_3UK2|^ zw1x&MI396k6>ykn#Aq%rudKFtlV#{d5oMZw6roeZ{uo2wTmxqi`*mo z#7po(vhjd_i_O1RFB&0?_5xuLWQ1KGDz^8B>~dWU{gB_j5mCWAkoU2GBdu@MzQlJ1 z$SOk&SOUtiu2$8olo(faHq2@~9nS*()Sp(|d9zLH%HbVmP6x@G%SL8?R%48^%8YDM zPELckr;?xFTP2xx@$@%7YDBXpb^4~{jwm)G|0Ykyr4uLSrqtY~VjyzSysQ3!lZz8h z;&vP2p|il~fMg7UnzYO`b$wbHcj!k0IlQ1!0=1)F-g9b)o|2k{vYOsScfnRP9h@ntQ~>+4U(>)Vvd zG&L!ejIQasIasZZSJ3_@alt4d*Nkl9b{OnVa1Wxbtd?6`eoEOJn=YIQ* zO&??lzA+k%{n6b|4?NFndHFy@BcH>Hp`!uc_!EOyJn-f9<95Ke+qFuQmI#57$9Uxd z+lY;oE){UiytOWD_@Ft+aF3W+8>Ou@{#oQkLhDSdhBv(T2!7L@zRcVB-a``;Ns<(aNOV#o@zcqrqRFJc3PQ*9jn+umK3gee6I&N*;K&1 zctIn~VP4)1Buv-UeWKCFYEiKJrERN2PX=!DZ^pV0p$43Jek`1Sw`&^S~M zwQXvM145`FN=o3=KSg%E_~6Z}>*QCn>R29h0c_4Yh5Lh~!fRHZuDr+J2%_2tK67@Z z-=+mZF7JF){(}28n&HR~HP2tt{{z(`3bv4`l zm)};V;nusD(x;C1j%Zosd1699IX|F=YSm3)J#a%Y(0R^4(59OIuFw`z?Ah&v;?J*wtV6 z{Pz!IIp9)rblE#69%)-D$dKkbkjdW)Kboz@_a?rE)0B; z8BlyTtZp>4qjv}MXAB+||zS~R+Om-|<>f?p3)+4HXc-kSF|NBu0} z>%yy0j+0)etN9LTnZv|~!Sl#)i-_nTih8Gofwoby;s2Kgo-$npG(W!5MY%@`2Ry`Tn+sg+%D>=H_+a;!!1`PZma#ZYq zHu7$DqTm$&@5^)PI{9JKw2wu10>>=P)%e4MAx7>@JrBgO2GD1qvs32}XLh0iiB!Wy zjo`_84HXrCI2AgFhCIHzi8IrLgoHH)&8lhG2Sr3i9QUsyMvpFy)h~Pk+zWbf1_ZQ) z6_;WaB%#H9=y`T_nG+!zNHI(}m>|KOd99eX#=5XEC@kgPnchN{PaV^mPRf1~F%t5D z<`E6N7h0<*Ev!9C`8F2TYsPQ)KpxjwdHsSip<$0pIwc_V4hafkha9!!bBphK@sfp* zyZrW~zzLNv5PNml)LaK{OHUh`9^TC_%ulVTuye4n#y2M|Oug5TR<)!v7o#tAQ7zPtPxCiQII9o}$lNN6f6ZOj?QB`XXR4M) zK_&V2{2q_nK#wenn-OMm;U2vpS|V-wL$0WfzoY=-P(Tg%yn7f~2icvOY+0a;E zeCvDNu2zUf@~R=5f1M)2nz*Ru~j6cVDbn(e=Xg*F02mMko`OVSyi1aq(-b?tu( zi;T>8IrqVRdi43O)3)xAh)^=t4!I-AiV$9IirL29wz2L5VY~JTI=XrQt%5Zsr$cnQ zsqd&Q1OtARBDHf84o#PGUm$-Io>h6~L(tlQdfw~Z!4OoSz!?+BQOra7-ABg$#-PSKTIyf+E zu*!=O=j>O9*2_`g%z-chYJ@!(6BpNn)MbI@J0JY~Xp|zQ4Cm+P^@v-;HHFTNO-)cV zhU>)Z8^{pep5c*d;2T@ngr?e@9fE`zY!-+Rw86pct3daAuAhZHz@;6P>IcaWL*@EP zN=8?N~D;o*4dPfB$#19XRda2QNrVFNt%J?g?Fc) z1PyzimXwI)!!ItomP2MMl-i9~mLzBb24d9q(BVebX*iH?1V)YqcM@N|UK(C{!XZzO zT8?>Kj92Av_p`qFi0lfZmq~ySk7U=sA;*;kis#ql0~^N~3B^$Bo>^P|TrAHX2I;Dg zLS09^Y7Tlb&|`ICGy1KG#c6Aci{jeb7?s&jeOxApPN6!(b>1wORGaj?JjK}UPDf;2 zthZn~Ef?>+hAOQ3sLh#-2x-jIA!5ZkQuBI&DN@uv6p~FldwWyac87^*{S7J7wta;7 z`aSe6mB`Gu5bSEF21e(?@pgy-+2yz92qIrc>pMVTvO0#3Wq3!rv+Vv;hAossa{DKK z72uRLUr3S~d@>s5xJyCLN|@bJhJ{f=s*uLU#i^!5JC%T)+*#jo`ECgyg(A zcO+-$?2-H^FE7`f9?Y(0z}J2(6G+XDqDT5v%s1Z%5L#t0EO`!v?wjFT(<+$6iR5$g z<=DL*69PT6oh~bmgJzjJR!Y9srSp?$+*m>Xe94jmsvAQ7eA~7U6@kf}rR7VL)*Bxn zl*n6va=q1T3kys@Czky1;(fSKpE9*IYt!0-+09KD()*Jx`)jkkSLF7Vrnurn+Q6j{ zLl6N`Jr?jm$ku7tvY9Ti>#~4-RKC3&;c;JF9?U@Rdnw7}Ntq@Y;kd?z?(Wn!}o~P^${1GuA zTfEkY30$4w%9`rO?|OOcqNHbaKx71h-3I(14=91mJCbQ#cR;MvhWz}-nRqzK;}@4? zXm|4Q2Su{)C}y!4kUs{w6EfaUd%=-i(-_3tG z{6Drjh>havTb~^*;y%ft&an^<&_)x)rS3Nzmv1k~(BD^{nVhWm!}bnHt65w6dxV7r zfH}XnY8HdQ)!B z5Z`o7GC44nz|-HdNl1ityl#bniP2n{u$&+4?h#bd(qUuZ8)_fmmWTZ{=UldIeA;%h zndMF0=-x~!@9H$sE2#V9!KY*YbHdw7m{1wNr9vq*#?{egw68aRh=EEMaPUGMhq9@= z&~L%L)iPQ+g(DS!-1&K^Yyyqt&4Ig(5OB_v+N@W>5@p!BGo!`xobgZvc{z03gLK49 zx=#XPW2jjjm{?m|dwSC5;iFb_vC&udzFrFp3nq1ks#T$xXmX50AVm8ih*@krtK(Xd ztP*>9E}xv#%Ec6sEc!6O=3|B%?Fl}RyMFedXml2H9CDXezd3$9!;rZ3srPRi?>R~i zlR(wMyjd(NT8x%v%e;3^ev^U%EnRo_^3H-YuDd}CoA2Ix5ZnaI`u6*JIS%20Y~{B= zGT*g#9iNh!*?hSr2u^Wq7pMHp)I+xAZNIhnI`w+U^gaeBe*akvbyNpE-`k3b^_}pkfs>jLZG*A@z8ocJ+f{UjJDGlWv&?8? za%K6+vY=@#HDn+~Ac{u7)*xC^l-^vTJ$~?It)PkBcrPV22uuPno)Y%!XwypEJ>Z#!#=t{C$MQe1?yShze!uE>8xOY}NZhN-Q5fYm?k5jMtHif(8 zNG-iqnV~|Jsa?`>#fhdUMP>#mN1TI`xLZGx=$p?r(CyqDRSY#RPv%STmi<(DS#1Kw z$xz2*gA?MAifm|wZMYsjOUbh@Sr0ON&IG)IUZc(8q-P#Ubst9VqIXwB{48Tw`U|J8 zYK6dn5PD~ArgVk{sbw0&vRc7jKg%qcu>jT9w6rw@Fa!}( z1av?Jg{6IqWI}UuGo;5AIAWpPq{R5x*c7Gob~Ymu<0_2l>In*eVHJ%a9cMf`B@?&1 z51K~nAKSSY>RiJOMDRX0oKa=7wbyL9_d z`KX&Wq1Wc6woo3M)besA0kdYtFbOc#xSjbdhYlU?Y{mHZcH4=5~+GJl|AZrM>)0CyDm5%}g1=MsaIO^lJiRPnTgsplN zkB{(_JDC7HwbAa5mO>Gc=)2kPVPho#v2D4vdJ^&_dq_jO`jX2(W%e$B*i(5BgOBa% z?mj2a$;GR)Ray`s86gpvX9djA60I|2Ybt?52hXk!{?1U}cCs}wmZW~_Fhh-w)vCnS z*J{^|cwAa;t_I-OdPTMY&>{=*%x6JEuDLv1P(ON>fqF&gje31gWS& zkwTc5S>!KxD>gnCJ^0VNs@Gq@Mwumx{bPFt4js|r;x{+WSlC!HJ>KLN7nikmE&&@s z%=jk448c@ho*)H2J7n?U7$g%E7Z=+lr8M@8Xb3W%REv3i>il_GNC1|KRats6Q~2HS z3Nsk4d)W-jo9=IF?xy+y-EOOxtW+P6NY16@9|Ghz=xQeEo!>U@c&P{1W9rBmq`hj+ z$v!YjGyOFSwgUizhjO?`#HhvgFRpV{TQ?{s@2+=~DKj^DxTUdE`|x;PzWC4cDibOf zndzAsO`V>Aoufjm{%i$fPJ%9q9hz=#rJX|_H+q!*iH?pQU2B{Qcy%k`5#evk;(3f! zpX@(InT+p%8rh#>5&v#=uk>Oa3j7Ic{6>VJQ7 z?({*=|Ncbr`tiSkANb4nFE0GA=Krr>{{J87KOn*XS4Su(NsP?1^J`O+mR~xr4jcBEFou{OAzvvT_jur6W7*+A%s(~Nk^l<9@PV*(tO1< z66z!PRsgUNn=e%I<$qD4?WM#PH{F~|e#6Kuke1{#BB z6jY8iCl=cbormIC#0zMP3O;?33o~*m?#^%<{X|g-8XGxCOK{zqK99ddX5?B-ZF-NQ zGA2e9w`cfAOd&@(^rPE3=m}YJ?Twdu&W0IuJLAD8TV6iMV_2d{Z}23*gM=%@mTXnN z;xF$Q*C~?)E(VzEFP_;@F=MAc%tjqtA+SM}i#m|sPseSL7=qQFZ5H1x#7ja1%8Hpg zg5EwB+t~;>0MwTCyYdI-{xuYy?6TxP{|R1bo?9=9`&4-N3hUXc^586O5wbkm)!TLynp40;f4@~vh=)tYwj(xeu0ib`G*QR&SscH}0#i%-skGuWabLD`L669H2}Z{(1DseIKAaEPg=lnWgdqo?@=d)mbP`UcHusb|z zs7nWxu!ynAa&>jR#j|eA)gPXmdgDwgL{6-0TQ|;J{;)zLYPB>Sn1~|H&@a2vrQ_^v#Ngf*(?1 zUDZJ&ub02Y9bIgvgTkI+Ap*6T!#R1gpqkhGE5Ppm`nn<(s!3V7VM!2b=ow+L zEsOhfW0NB3qTFhM4$4J05VrlCM;+WZ6Dkd8Y0dYb*xZf3&axGejDYdvg40|f^b%7? zx+xHSsp(|~RmPuCn~Tvg=ruOipSw4M^^bgf$Yh%h>vG0Ww_P=7Frjtc-UqR2{I_7 zgeMYGV*~*EAbBZyJ>sQL-G%Y*v(wXRIyxx`HJ74zay2S56P8xHk8EDoV-u4Aq{EVq zj`+i>EGXg#u_P$;0uY?t|GWy+_*Gw=on0rMpz)?OaGQ#7S^0k*nWIm6JXMUn3y4bN zPL+$o=q(3%bqx)Y)_emOCx<-2(a}3P0UEUo3ymj4S-V^H<*7|Z*~eIyEj2>; z*C7BMB$7o_l%qMP=W~X{f!%|$36RB{VJ8;t+Tu2plGGU5IPJj6>W@vcz!|yCgFt7! zHqPGJ$tkV0RR6?@5I~7;p9`uB{tt3p`SSu<%&-?1xt|$1ACLq-bRfOvExjJNx*S1I ztOd~v`0^u5MNo_|Q*XoC$R+{eD1%G~C{JaoCMR=LNVF0y}3`4l#f-B9vnjNWvN> zTskz~WBHh-4tftxPA(zz7IjmUr~-JjuH)lE&ztcxD*zKii^^~q4zUl9{+?|zKWd7r z)SSmx{d-{s_3^vS>qJ)Q-U)yP=nyw|JO&+m7PSlw2SpZauW-mq#<#xG4)LkE`{u@H zyW;k7+bic3$y@oTA#|V-waz7wVomwOp$z&!5Yd{i`$$|$#Q=K&rBpyP}U z2CWLNE%RfqZ{HN<)lV@n^G(zv<&5kXTn_Gg4#|+1^sTKz9fK%<->f&b=^eYYbg+QU zPyz}3?FcoYIr7?ny*37WIB9HQ6YbR|1#!eK{^Xixq4KF|U(X%11_9#C!a_GKW&^!h zT1t#&+W*hJh-CiU90XFkdWvsu0Kfxyl@K|O&W;X&bDRFRP91LL5y3lr>4E)*Eh*8% zxD0#13xa@G6u}UZA=I;!-ZZc0%YzW&NK;5an?4!!%j;M{pl6k_Dt@=ShsfGL?}T1= zBgI2kHE6(i=mHtYARL{YL8vPW=r}az>iM)1rlTnr2#E2PRe;+=!qvzw*Y9s3@<=vk zU7{;B&43UN%J8^ujtgx~b+L6cgkT-kdMDo&kv(}RbYu2Z)-}u7{{B6S(4@O{)_HM3 zQp&zN{aPJulen6;;UC9YQ39Ya`1UecMYFQ`)&Od7|6J41s4(`CHWt?O(bq5FPel!W z>Uuuz96cUTq(1i;I)tpS^G6SQp8xox0h3Wt`?%>S0RQVa>3GY`O?vdt=Q=Yf(mQRQ zBZJ^OAeJ&h%Cy#m%2VJ0fPz-AJ@HE=&$;@vl*7g52+&Cjk%MGqDd>{7KFCFS=sEq| z>t7|Y;!o-bH_Oz#KYskA*X0lC9vGYA_UITX<8&-m0is6XNUN{K@Pvs&^KU7GemJcU zo#%6+Q2)LBE5AI5NWPn0ba(0fx5SI}njA;909S$kbNIAsZ_?vZP9GrsTBRSB_Hwr zjB~)4?z!!3ru=>xf7%j-fiu#%0t{u_v>A8XmZQxo6AHI*DC5rKqyzjE~T4czr% zIR>w`_47?XR6$`1G#@if=^TysoUlHg^BJAb_^Sy7necr54AT_ldGO#l?M;=Lolv}~ zztkCd#QL5u9UQW8M>NrSkDr6iGn4p@02!u?e6rA#L~3Wc1pweFUy*Jono9DtFR&gw zBfs^T9tR~Pw#i4KT}uy9`sZml+pY8q{c1JDIf0%_GUof(p&~7_GRe!pw*czM-F3{> zz&z8swIeP4y}cLZp;`uu!#2SC+F+FVU{bQ6M5|C?-p5>IkPkJ z7y#lq<2+jP_$>2|l-U9MmLBQdB?sIRC2Nt2sAx)1)x;kyKrx89N-B1u7gLK<<@=o< zfw2=C57r>we(JV1*Nr$1t!@&#-xC0Y>26PITqW4JD}WW%bTq~pD2FLW2pa-94#fok z^*#?uQ+v%=6y%*)Z?}heGvk-LA3)|mRbb*1iA(@st{K`l;ihtX@NtMLGqXS&s%gS% zY@ZXghk7cI$d>?I7#MX(E4vV`m}b`ye66m0=+@54=A;9#9W&77;{!A?fsA40^U;Dz zFhTEtDwDwwv1x0x+&Xmh^o>8{I)HrAC~)Ney+@5#ZzQPIj6MeJ%+bk_>*#Cdfgus$ zRB1}(b3x_(v~_n65?195%K=+{H~0YRl?M0EhjI-9Cv~x|l#U0vi0A7Udxj5uOm_7@ zc_VIa5VA)MC< zy91CQj-az+PaqQtS2sI!hYKOkHoxO6`tqhDE}K5U-vP>V7HD{cMX$M=eZ*}4%jgzY*FO7)VVN%K4jp46xT=mqE4VEqfZc(_df4d0+tH zZfk2aj>Mfew-Syy=|t6^g7m(_`!5{c|FLFL1GaPyzd%T2Bzr0PZWaw3ka5e!^uD?6UqIe^-E? zc>TScEb8x_1L-gd;}c^SL`2SawIRx`IQf*rDjiT~-~>^Q?oJ256WI;^+09m~hFz?mD*-29myizbZMv2kPqW zN?ORYh5=9Ydw%5Ajf6CthpP4pJ`fU*)i;Fr*0|vd{85!V%l}CnA|HCtn-GSmvrw+esnbbJNaJL3G3jBzM zX@X8hh7~6#H&FV1+;j?QrpTS%|MOSqrKk#$84D{*4IQ1rk)z2U;@pRR5B`x%Y@env7F zLm?3nZ2zJTl(BJSRy^hFYvkzYl$xHdIXyj{`ir77-V^^n#P{7@kUYX`>0Dt}c08`A zTBR!IwzhyA{(!*WGZnguywP9l>)p|0b53}r%!+IAs;{(2d}rXz4*s(TgvB88fLkKJ zfAQA;LJ{LASb+J?4h@ql7wLSG#Awci8}lVXtBsF&i8m-HHu9f_QC4(0@UO=7w zQeTBMP6rN}gw=d1L;DS$^BzPhO(vRi9#Q!!7*sx9S#jNXk@@wF>)B5XvhQfNJyZny z7$C<{(<112rtKpmBNIgO(1)JayES7$#tFiy3AqAYYPFs5A7Z;K zLd+v>I~R{Ne^rgBzI4(Hf(q~=;pF5XWNbO-adn3W4xy9GBVf7zkh=kddVuYXfQL8W z&fwlJJ#nwJcwXlNH8IxXdV z`a?ligWx@GpG|~ZBVnzK)vtWD9@TjUx2s%wL+YbM-Vpg>xS4F;(9_2mn+3QVch_UT z@P8em#%WFHp55Ngoa!gY38mf*lvCjQ;PT1||2mj3a1@SHQ=FiY1-qufvhooeU+_*Z zF#4o{QF1Dk{CCN|CI5@^Ncb2Zuf`G`eVgNGs-K-EToYyuuDQG{0k{evCh(o=CybO; zhD-xQa|Z`hjP0GOtFY-7ovM~L#@wWX>J$6=#bHfAk0{O*`;p9UWZs6SRLTAXpJWUa z0dhBdht2_NkR;Y{L_DuN>%54Lu5LKo<@_VvIaTuZAGQ~`1TVqw z-X$d^=ar7|G5T8IcR7`!)l=u@<}~XN1I>5v??5cP9h8meB;&2fXPz$rNhk5DHBKY(U!>c;L+7tkR4O07WcoCf$usTc*tCx z36OIPz6N_gDvB9w=LG@w=NX0?Uw?eU!dX-tV<03Vgw4frbp`ALsmGX=Md&^7c)W8i zzy zMwf+!a?aMX(aVA5r__m7VP9iAvr03iNp-@AnfKH}5fQ4W*I#p2+F7Jghjox4;DWfn` z<-lmWE)<*X3tzHIiE>R#Ru+}FsVJ8B^*zMiu=n>!)qQa8$BRKQr71gI$46b<(E-hK zKCFTPsH@ul{gE(WX`Em$l$x4m7S6cYOe2ylEG&f_8=xKf{bVtu8;R$UII>rd zkwR@hZqh3RUMinkzSd$6$y_!bD+>8r?mK?;WAxN6P2vy%ta6e0jYSMCn~?Slr>;!Q z_E}0J@uxh1#t>LT!kykHsiTJ?SE zaV_^{=OklovRt!<6~ngqRTlO%k55+`YG4gt-3+UH^#{->TG*BuaXSAxc(G)GP;Rg< z9nfM@7XnQ2;SvC$4Loop2vIatqEouCE!qkS0{^$eO)oLiVB7iy0h9yqomC|heB^s( zT{!tVpb~OETxVg4wy-u2SH<8U%4IA!g3z$oAoE`XWXo`zEa0g0W<4#@!|6LqgpgYS z=)*sPkQ6=6RX8<^Ds^cMA#;Y5xs;e~;=2`Lp+np`;IIzvmg1>hlvYZ$6ZJpY24t2l zT6bf7RG_%0}*-ylzzoeqG0HR{nUc~)cA%0iis=wrZtBdn|Un&%`O<&CB zk~E~6;BEc<(g%`M?*fny9mAj>NK=LMfPGkBe?Mik$kEr-n+E&r1+#ij+fRIhu8sv9 zNa`^dbS+ugx_6VPm26B~&V8=q)cXj~m+|3jHxE>#4XF!Caaoz1MK2OPrFNGrLt?`q z+l^7|5AdV-5BM73Y=iU=7S(yl!6dM@#ZgeeJ`@&}T8>@@V!vHW6nJ=~ARsvQKz|ql zi!HBPV87+7j>B?#KMZWasrJEeXj!EO9B>6)mLA%dT?z-N#Pw^WkN20rJZ7X$J3qo# zlyBiuV%wEa#kv~Fid`UgLF!SH_w3tC4jR1mR|^OL=k5#H`LbChdO&MJ-fK4~MvL(q zwTEVr3ePt`sPUjGuIr%Cz7?eMa=`9R^66Y)&~zj`^{8`N_@0R%3Mf)-p^#a#0XRLW z@$nv&P?#aVnr_AKOIz6kZ*Ic^gTU1LowNd$Q zQqmR*{A6ZogMucM+tBI8`l}mfpk!}!;*b{M948bfXA}NXJk^3PU3? zjKsiykKgaR*ZaTsto1EF)|xqI&U@bTzI#9W+0VnEoXi9?EsxQaZ6&BGU6&=|_r7*_ zydH=#pmPiJ=4;I+r>@m0|DJgBT>C^hI_VW9w*&ys`XDN<3QNIkyFIa?LN!Z?-l3pv zW`TpZZf{+_v11n`m=^*hf7gw9IZem@{10R7naRbI$7eQ5VY5va0kPVL5GZCUWUF-? z-B-Ajb`6R~uqLkmoc%6xsLT~GH^6RU3QPI>9}(|?!m>*8YPWIBg-PdT6S)}Bwyl(HzvD4Rycw9YtZikxnK-5Zw)o$423E-1gscb#5KPxh=-@^OD` zpF`Yb5!5e%EXN~p_fEYR=h&fR^{x^OIeTcJDfHifa@o!>x_$^h2=zfIyR<&JOFrsT z2q-)1o3(joTyCKkZs1PKmq`Y~I@JO1LqF;&i6I$ur$OMGnb{b_ z07xj1FDvyxnZf4T4$p`8@9#nxx3|W9av0)VMGsN(uJjxD}T zb8m-;g;>x76(vnzKZU2mcH6p&U)=2N>}n)ZnK#;hEa@|U0@mo)%Hz{6)yNG_L)tC6 z&=w~JJn;_Uc$Uf(A?seNxG;YzOXLkihoBJfvlRzU*Rb6+gATQ-w?XofKsBVEu*b5s zo;w-m@jK3pfKRICca<(sO3?gpNmctbF?o-D0880zvWweL`>gBLiaa1I8XDVgj*sJG zmL-#k=c@XxLR2RQH6&oJ9Vu`UNdi2d&bcEwx$9jEP>Ks`*01@7K&^6tV^WwdWX$~! zqR}W30C3C$rW?>HK^96xR4Wg?d`FvX3H zyFX$FZT7|~{|pY|S+{w7CJk*ZWZl^zSF?D5!rWxD?fC)%H(}u+2+wo!b2S|j5A4d2 z%s7JK%7DB*NJ+V@EOwdOZ)YX%_j=BJEN&&DFFcRB(uF^hs2}z!FS>C6uoP;wdVIkZ z`k#R{Ft?B^nc2oweYb-zi^2Q1{gDEc^+rO~M#nf~H^IZ>Zq;sq=n48Weq&q>#||F? z5Cp3K&@M(-_9HqXf&&Hy@@|Myk2I5};c4Ro2A6A@E0aWB=UnRvxQ`si_m{FH8M@hD zUV94LUyo_+$ll6Ou?$dSP%Xqgw75e;Mm~mXQ4_JbO9)R751%|RpjY~*(8;$X%viaQ zrc=AKWK#7nf?1;rtUH~NVHJ9*l}%@0P_toXJX0kzRQT^{G zpGEV7?QxOaL?_%=icmI6S})qsYv)2)O2C)BF*)WB5SRf4P^eK@L*=S5+0X!(@=$=G zb}sz_HJ>exv8Wi$IbweYbfftePzya$fR35%?d|Y%dmpT)Z*sBG=ew1dl{$M`7Z;ZY z;UMoPQ$zo6aY5k%R9nX~XCuvcNTlN8F2P#8ID$MT^mWp~Vpx_1R$+}KeSH&`6t}w` z`#2ZEtn#k!zS>b;&mROrgUi^}bt-vP7V9^Y)fLF6Jn3o}NoP^je=KB|j;&haDT zJ?tD1I>5w*)eG8|Y4N-E<8}Jse5mH2#$?gy3E`14`Z_&US-|&)KYAxY{hh1s=chDs z;pS+rWqm>?yykvX$&A0SZ+knndhkw8PQ?)DfCLYiya_Mu2@4DBlvorgL5sqm*uQY0 z&|#P-I2AsHMH}nXj`()NJ4p**s#ta$YQQA8+uPsd_72ce77kCnkWK(4|{Af z)@v2w>Hvi2Geej-}g>P zAS{n1EDwRb@q-6ich85PJsfKmbO=9YI~wQ_W0u}+u|SX-&@z!N8@^PE-dOu~O~mOt zR+Lxf#NrQ6iE$m(X5x=FGCGM+GQvnbs}m^XN|Y3SKPj2*^nDZrNAF)f*WbsqPu_y5 zc99ETsq@SS<-#7U3$Iy6AHC}+n=D8NY1W4xEadvA0l#UX-}Y-i`X z4t5Xrf`PP5<+-=YxLn&;AYG*PO z>3+p}El*n8`D{H7+~4uB?e{yq`Z1Vz!iI^nh{TD7MRw%goPoZOk4jxx7~xtw_+3oH z#d~^rohQGzmzLuR%eRUX#oX_LAW0bXLdGQTyn*%K(?%5pOu&U$4)Ow`tm;s)`3`E& z-~YJn{sd~sMnL>`*R@9BP2(cSs+gIX7biaZ!fsh>r>d=;4GJ4k(MlS3KF?UDkApri z2;qJB`0-)N_K#`tx(qAusNWhx66X<7=ghU!PBrCUUag+Is#9@%e1eQK2>`0>Y{tWe zn<=na$UZG{baH%BM6#S#XQ7sp6F4XDQ*2o8zC8783*{r@m%QEoXj`;^o|=f`7%_}I zAV*MyLd2?Bzf;;qP8}}VpI@`*1rdBd8oe0PDT!XJgGbtvf+EnO7y$!hZC(4ESn=#KH?M8^=r)@7`I+_BByUv zDJjRvymM=Cc8x_M7pR2>czYX*t_@U;MD3+-)&u?h_MQA++&x`Z2ab?aS~tCk+JR>P z>d5x?Xx`2}EuVE3pB&S+LiCsWfyni*r;>!7bhL+t;%}n-*Uy|L>P4CRY^nM+j{cjS z^EmG9Lnmq!bY6xGQup-sLUaq}))J3FT&mUaqe$6EuIBPBM zf5sFa>~oXNtCF|(CC+R64ij;chOTpnudiYSeY{6MfvDBC6IM;b`w{IJQ90SRb_MHF z4MLGi5~0=GzW4w!@a7Rf;j0fat5>yib?vnC_g);Hp}O#OpuD7H&KE!4>rZM=%Kmi# z3=%mjf^|a~hV}K-5Vp#5H0Pc4GYMA%x$k@4l`vJ}Qq48u! z=ikcV@wy_LeTMcuxt(K$L3~wO#PePI%$i(c^mD)Jn6xmk*Wn&b%}rsniArYu{p!wz zizi%l;vtod0=qS+!S?qBEw%H(dfaVeW$8~;wPw45Gy4&HMRq6j!0Y-I+)nr^S%?J+ zK@n(N)H>P0FmH@NNWX@vJZy8JS_HmwU9`UDU92QY;6v8*_+cG>zD@3QQTuF`V{B`fj7Q4Ps6{ z*wy)9xw-z!^IRzL=CE>WHk}+hNt0W{5L&~~`GEXi^kV8a!5atyp;{%c-( zQ=^L>j2?nua%uiQiyHjJbXSN@!`3$GMQYeQbwpyKSM~y_0Gz?VTrWiK1(>&azk{I^aDf)O-zoPs{d(5F?Fuu791Xf{Nt0 zx~guLgHZUdVV49&sF=t>8@QXT!VQpY0;S7OLn74*9y)0|3ArmnW#p*@BaGoT@}c!1O+)m zE6lgYlh-aWg^Vm~xaX^%kW|=j~N6f3Cm-+GBA4*T`1hoAj(3OM5^ z2q>rqwj}&oAtE_ongip0D*udg>vxCw@q-o0d~NN-uByogYK1mJxr!rg6gtELd+djk z|J9T5>?s?7L8(QLJ{$2&mTqh~M#1y?Rdw6-lBE)XU|67L`C2p;3FC{}@Ue}kzXqp+ zGc?@0_um2#LGoh*8jy!E*Vt*8WfE2NsinVIAJMGZ-nojxt@)iQ)Yb0IWEA%innc13 zeD>NOarxgnpmx2R`j&<^0eaug>!1OCdUshemH)Z*_Nt-5`<4O4n5OWGhgLF|^Qa8P zGm5FiPvwHjE<)kn-}7Y}7ovc#pL%~6GKrVyV+GBRZ*HOu^)rQgi_h!0j)#fVR+rvL z<^Nxo)+An ztlwY1U9$!XiS~Gw5;IWwhXtNOhl2WK049e;Qdl`OKOwoR3KzV*gP}D)uR}zUVjuiH z?AKt}VM&_A9DvswV6^ZV>JLw16vy}LHLO;Cd{sO)3fB&`Pf~YRxBg;9TmdP-S{DBK zbMV-el$EujXXP#06BBKSZWJZgd9+loXUqpOrf|gc#(#|0b!0IJWfO6Cg$vGz|Eljy--Vj_-PDI)7BVu^!Rw0G824_qjR#udMim)MBe;1P zv(}`A2U_itbtsMH{jYw`|J=)8k8nebGx?>;8VGP#==gP^3mg2-2Pr*Amqs!UlwW!`^S~H(=4R}uqTH*}~mn_M|Ke@!yZGH8!(b68t#Jg&+(q*2x z3}5D<`)kVF%&)8zHZHy4pZel()q(MzgRt$+sEHF__F&Rm4_NaByc{0+hrM+qUbN!x zpQ;VzGeyPMXAov)X5a0~S@Ia(p6r$D#rZ^hh%2vdVwg-TMM%4 z`zdY?{ymtGmwloRc}m#tV*l4SpD>z-oM@f1*N6F&!skDI zaw;+U96q?-L9hE0UmiN~3PIA}XUU7iATz?5d;$zb%QwbF;9>~sU@wW3!_RNuwK6p| z`~EmJ>+p5|z0oHaWDy-K{f!@l z=j3u+B-!$gKnhuf9Mjeoe%iS)@wxUWLgscWGUHaCyMX{d|A*3k(NEKCY{7(NK7PTR z{>4k(Yb4S+qKa{sYL#uF7RO|NI7>^e1Pt`7n}W+9K;4V-pJ&8#8umwb-H{9YqDjuO zW@gfN7Z7PpER3<)K6_&f{GK8T`4lAgOKg>+zD#~t^0Fds3nZrxBAZ`12_=4S;|4*+ zN7aSuNTm8TaV7-^;Y#;-Ui0Tn^IfSZklUh}JQtkzBhLoojz$6J*d-JxiQ4hZ$!73L zl?W0~ai7W_EdMp`y>W4Qs2264Wn+jNm|1e+WA3~B%fpq(do8@wPFSu!nH3%MVwEE8 zc;A-oDvR4a;?qFrQJ(heTao{( z)z>d(#2XOPEb7pch{s4F;y8r}kphu+?R@QG>2ToIWgo0b z?z_B{aYp8%M>DjGv8~gV-2Q4vz4I3a{l!~2D)>uGez%-6;VjZsOBo-)k|KI zz}X+VIbYt(-U{llQ-sieK>o_@&2gv-%xoZ)_!s26%JmI>2uSeDlL~iU86EOojsW`o z)YM~H6(PD?wlZa+!zTtgi!m7iA&Tm1r+^uY08?H== z;In9-cOYf6y;4g4wTdRhg)D$~1@G~Wu_sa7Q;z<5$Gq)f`q{CG#_HSPY(*P`}|$s{nO)+y*j}%eBsD+S=MQHH+U5 z{E79N2B0oZ6crj|fj9=5Z{kfp4%q;qJQ}_NA>>sMe*ttpNz7dZ8k5k=V6x#U9u3q9 zd3pK5MdE4cW5Of2$1fKTEkWHZbfm1ZQk$Nh9!*z0Gzwx^h9B>Rm$>4A3>K4hwrFTc zPPTT`@5kcW<{X(t>2T!m@<>Czfqfx8xqbnNZcwpuh{_m*${>;an#<`R9o1pS1FTzWd0|t`3$KfLyMx=ys9?sLHms)-n`h(3!UxRnvvQuOVCn-}b%ZwXS)o zHaKt$Eem^GAT#u)Kd!qW2OqDj-2Pta%uvcFnEPq!aSHY|U~1f~Dxiz0qM`!34`^Ja zXEq;q7ZdO7Ug^9kEX-`D@91bX>O>OIXod4A7`%ReOG4zBhd3u7>u9eKu+ID5$*m@B z79CGR3-Yzh_4W9b=bFj7`dC8^mk_xEj;O3kZMdiRgmgY zOdFD359H)Dyziv;^zc3@)q)8I>GYjaetvYGWS4c9!`!NSSHivlIgEyB@dz_+uU1LE z^VMz=sk8HD?0F&3pO@x7Kn35sy1wN|Um0$!6`2%~wzqfnei~qVYS~4pce*WB(Y`Cw zq{k1hZx2Ht$)D|3l2*NB{QT~Rr=tx# z)yH?o@Ka^rbJGK?Zn3hxe0!AqNV$C=r_ZYAxTcwz*I8-e#<&^R>9v!CTdl-0fN?Gb z@POuvxXzxO)2#Qn1CkDRN2j602R*haTOKvRwBy~9gkDKp)e4KGdllNgnG!69E3x|= zD@9m~$R%mDa!EJeb7S_pF%&OqFSWba=f| zyLwJmg^#A&XKzvRLoLDaGL#n=Ry-N{_Wa~M`U+U@qY+_esmzO07yY+i08~6PeO;y;j01s5bq9LJ{jA5{Mv5Hw zu6-%}qkV%|CugC=Ds$Ua?B{)yXz64=PW*+J-~A?!DJR3%oRYgg$epp``0Vs_zAY_% z{b29iMZ*u3?sMbKwU+%f`8D$z$9xajj;tqZjJw37ci<-~Qw|>BC4a|4Q!kUOw@)=F z+FJGxs5Q|;{ZfWpV(;li%BW4D{nR6#rIX9(DZ4)G?9AdBW$%3S+7H8zOq3nV>#GOr zc=5w}7}U=KWR-CfyKHmD(;ZyEczu_(X8GqD7NVG3cBs$72FQ5?i-QSPzM%x(Ic1uL z9fIVM6|LNiHjS@@eOF6+{QOLeH)e5zZi(N5^|%LvvtZZa=UTk@`%ApoO^-ZovF)s< zZSdrKN9^lp@PpWtJ=KiOTbPoT-uJ6Mcpv=!QSLYq+sqZ8UquYNo?@KP!8blP<>w^6 zm_U8M|SkY&J+SM)VJFcWyw_30|N!e_40D+RB!=8N|KWR4#T*yO8_UZ)sKC(plX5(w%@y72vVDXH2{-=E?UPVtSu@XX3~Rjm{gcF-YB?> zoSgN+^}cLg4>}XM@)j-wAx0`CIa%5M2xU|)dLo$VVvIshgfb!Sjr?_er#uKkx`#a( z7tZZJt!&;>V*+QZl-(~WbF;d3t2o_$z&4y_xfa%bZ(b_iIe8!(o?5v6CIs4c1ifjh-S_C))MD+LHTND zl&X&A%zqmKf&alo`_R zK%`~9hd?etc}5d?X~~nQxjw}0#m}|JBJ1vc%wuU<`K!n~vU1VYI%N)xF|Z_1UhtB@ zR7bg7>ac$3Lpmcyy@WGj((`F#M@^}wEb@!RMn@MYOYSps8aNWvL&IQhd9Hdgt?Yre zOF727e0}{)!6z2tGf_~GNGUYrh1v~JIeSez2xpA)zO~Br^lVpt()v+3-jCS{#$J3K zD_KnpTzJO14xRn;1Q*g6Q3~N|T3YE}zT8z;*I!BO7e`dMt|l|6($#JD$UEv+&4b~k zN_$+dXL%Zj_-0pQQHpZ1Sau3wDXYq1@&!=J)O19&K}&oQDWV8_y5atMOwkO8pFkmN zF&+ns{DJ_-9bxCt$m`miPtp$|>eUWg7dF}IYG@1;VvRCEzYBIJ*7L6|uv_i5c1}}` zChRwsNIogVQ8FUnPQhbjv23}!0%vVkEh^w=$$Fs=CN*-ZF%8<@TjK?N!c;JppN5vI zc9TzRE-Cvs^k*w#xwUS{vUAtJ%lUrVukp&v%ted!3?&u)oE-KN(~atIku1&Hwak8k zJDb`g@0(?YW@gc#T1Te~bC_(~E5LIr*&75~o28}5=%}b(bHN4=->3F5>GYSfG=J7p%o#pI%pv%h4AtXQe)AF~1%qSH+jK_CwnVWC6VTJKT;KQ~P%$ zN@SxvT^IIGFh;aRF#$2V@dO?!CFHn?#+0`}>`U)qD?&kWf5l+;-O^S^gPv}#W&qi; zs_FeW;;)BBr8YZPR&jBu^1M2!)tXuZ6|6H>fAw|Ww&)P9CMTEOd1v!=MG;QG)O`sT zCq~R3x|#y9Ad9{}Xq_CtFij#COW* zy_M}EVKsL$Iz0SFb#Uk-o+9BTO3tJdj@%|5@kCAak<5)51I46Bv;Sl`liZq@KZh_% z0+B=7)Xc?y4(JA%xJ6OP!E&8^=$>(O&E(YePzv0g3ao!kSaKHGp-0@{tR3ZCs>KUf z9_&NCy}4OBNdl!qD_EBX99@Q8D8kKEV!hAl)`2b7?nT6sM3e&<%atRHoJQBAk0i7g zEOH-ffF1Tjw4G{`i|cx0nvRntdmorgm|}nCq}C}BU+(i~IAk9s2|X1?#70D9`2}*H z5S4UWrC%Q0zk|K0OxN2Q(X#p5y#7Wu@6lVRW}74t_nOW%>8s~z>-L%HMb3`XuYc## zRgap<$yr*`u_zbap>GDi`NB`1Ho`@!Xt%Ynsu|dn z-Pe2jZK}R?)oY5Ja~YmPZQKMM{{E<^q5L0|Oii);ro%y6{<}1NjK1RJ>7NbBL+B*V?z*qk+=o$ujeKzf&sNr6hBuKMvEA}M zhOn>0g=h&j-@g0~>%C^;F3uS)Qb?hUnxO@50dz-KJ?*!$9sT8z(y~LaPti0n0ZZ<& zOqTjR++b<$;`pDE?lUE5Ls+rDS3GDdz}&KeKSVJiZY{_Ebv1BHUbWaTsz3h^xc=L!=1VZne#p^7R7uC1xh>E*OHn949&Uoah{Ug^GF zq+}evIhI-OIr=SF`kILIN9;yHc7YmTADNwr`FyTbuyGX4>*!-LDHY`xFF7c}F8Emc z#=ziuRMK@uCRk8xLgM1b5yQ4TI6I_$q}bKcDI$HWF3O*$ifGcpQUX+4qZ>sehZ@o0Ihva}O15y{r8&iBmHg|NIl zTy5@&b+W`Y=X-9ZrF4(giaG<-;m&m|CawEHC}PgR(09j#75n*N!HL%c;!JLPbEy^9 zKB^|ZO36Yw!cJ6MgIjX8`D0p|k7R+?`uZ5cGoj}aamBm-$%sejX9tcj=^*mcS-7zF z3eTa)3z=5SwizC{B&W;)wn95~+s0q0O5(?3Spj;!W&~S*5n^JhDG+*NAki(g8Co9{ zfJ(2LHMeRg*?_KnZ3Z`LUOqe>DiGq}Urf}Jhiv#gbnnjx3mTwbQ?L{~ja+NtxuNrP zIzK$UH%kfhX?Jo)QiPtW3C=jXWX9h@`h%+bz_wF4Vj`;dz|3^!t9O}B{?3lz{%j6^ zmHl|aoAt1iTkaL6rY(}#{S#kEFz$E}PKfo&tQA_q7hDXHwL`b6k2MdEpw^wwoR(EV zp^^YJ%F|fPSa#YWL1?J!lX)IL^1K46e}`LEr))|3;sr{aXV3}qrTKG+rK;31Li0{k zsCNFqATn=vJHhbb2mAeHNxf1tje%b$5V`CeQ_-4({9Vd}crK5jS6xcyv_yHr~My%xi$1&zxOM zYZQ~O>#1}gdI1Qzo`eNWZivOcii4nc0fcc2)#C(Za5}!$sN-}aR@DAEFfEvyln(}D zC|bA!cI8-SvoBFvUs(2-vX}{_b>kF@6?uz>@=jht?;so>F zoH+o}8i2*1bgl9Hw#?Gn%JclN2^YhauULEgRnx!^d;42F(3Fx|j# z+EB1yel$~5jN!wfrVaF9Rq;kVq(-oN4=s~HO!s}>vB~Z@a9}}kmdlPY6uaK{-Miip zre&p7u>a0*ZUJNPWMS$;e4W|?$pSM=);Fwm^{jVWbp9*deN5m%Mg&WU{K6jP0*fT! zm}1=UP|{8IjmfS%ssC~TvivJ)l-p(sY+Bja#0NlRGd=xh+lXOzlPyn2ifBI3gTvm( z6kGH8ms@<43)`N$rfyoXxw3xR>^DVy@j?7oG^LN-b!L_pZk8r)S54UTVdKVo21yt$ zUTlMc2K~wJmPzU9t*x+L zRt4Kv&lR({Ud2&$Agdx}f?6`K#$*E8fBC4RU$g&C#Z0Se=Hg(tuO@~CY9iSfk%}Zq zpG+C^l1+IGJ#*{Z)UkVoZrne1%v?>%HyQwp1%P^`Xz#_BieU_zbfB7coO=D{@tmSm z17_w7NLunR6~=^jAr#A$0<^ZPuK|5dpb@Hn$I8_gW7vf+X$v4_e9)1h91mOuk1zfn*BdXy6V+^=0|+0aYvnxX9z9C!3wG6$~k!faa` zJ-v6oT4=jcB2*PjBx974b9y8UIul35F#BPpD2A4ig-Wl)NBHD>@On__mOD)LXkG5$ zA<5TrFJ_zOhYXfQd2!7R0J0T*-Dw6VmowMN(fr>QYxk0W#NOP^IjE)n?#=^QPJi<- z|8ZWu3I~C$jV0lYsE7nAT`txe0|06~Zlmf<`6Df5Wbxwj+q+jb%v&6U+f!yQPzN&9 zwIq7pz^M1{^qnIy^pqk#tea3hmwq546R@>{$xX1Uk_AR!u7*BYkj+S0DHRW<_%vvdLB<+mqtOkX0Qi;+!d+SzujfYL2y9D2W5Myoh(rL9g#t#>bEM z(1jIjWnQNE+$Q;g&@*4vA`Sb-#6_j^%r1AOLfrnY8ZE&}6v7^$O4+GWN)aiDjy40e zBnz-){WQEZy!TmJR)vT9A@soCDi#q9S4_Dn9~fg$$eX3iE?NK38ZACr_*5qC5p?;n zi)L-Of@n0Yn%*s0Xm|*JzwV~9IaY1oRF+cj@H*4w45|vVHhz!rEot$>NjEvGwm&SweC@{I04X_(vFPZDzNmr~#T9 z!XWW(XGg~!01p_aFZbIXj}WnVw0?54Yem5wY)4{Gx@;1<9crX72kNtn&6QeL?PHiA zTvb$8Pg30`132pkZbGhIF?gY-z}02HX7zbX$&;ZsgPUK>JCl0=e^0g*S73m1fYSX{AHl z_Kj+;AYPpdi!pqEEKuWXbaiH3dpk!Dy{kBl=U&%y=yjw|(Eqq&0>N$7d}c?38rs@n zWmH>TT^(0N0B;38)9;Z6Xpoy2jQpZ+;5HfaRP~hklP7aUEewlJVl2wZeW_9bkJ|(i z@>_0JbFi|4qWK-0%A%qoG-3i&|3Oz8YMLFl??Vu#kyo*|Z$DDTIeDmoRuiHDcQH;8 z54QH>hsRJE5Mo z5)sokoV5O?-wrjT4vdz&#(+LdzGbhds2McpF|<_Qx`2mdX!BQEN_d}et+VE3`S7b@ zA8QOkM=_bFR@$IKy;yfbf=0KajpJ3VCSY2SVM1=6E71u#YBOhyzF6Uz7!e=a@tr!5 zHoKHS>AVij8)D3LX(NFDlz5`ctV7&Oh~1Ycg8a^J7D?i}e98Ylp!z+d?t#ah69Krg zSPP#ivTW?_>4_3>HMSx6mm5Uzl_1{n{l@?NmU^UWt+~GlVWpv=WOI5fO@<6KbNn(D zMH3Pd3i->&G1#42PnWMqfk=NW4UmvsIO``fwXl+qQ~}o3GLZ87m&FZ)P~V@;Y(+=6 zR>aGpp7MqcyDVhCPdm}8_?Bactj<_^Pul`0A$j(VecIM9E%oRhTOs1??~!;(b^y%4 zDpKF4F{i>-Ds>{G!OAN}g}9_PG(bH8I0wCpLi(_}dPF48KJ-=!|IV(fm|u*tFWq0- zI8vQL>`hmAqHrkaoH2FM^YVg&rb6BwJ;AZ1!J^t0L5*^|<=Wlxhs&dtQdC@euN03A z=|eaPT#7l}@ttb<-W;+*pl{aiwH*|UAMCq|cy8qZ-`bO2=KT}wPpjEH;qY{QQE(Bt z^t=3`a^jqD|7xp2=E3q5sHPNW)n`HMvBX=_(>M4IhWZ2UO*RM18_=E{-&?>E9|}~? zJo4;u9wkmPUMKP)RI?^n*RK|#0M4LFKCm3+OYhEgb{BJYNb$x``OJ?FsajcC@yy_F zFVx5q0?mCu-+yfNTo)ACz^m7Fvkja4NXTYiO~5QCkF__{`&XfevynYxCv(pCH@9G# zc&D^j*nB{D`fN$ji#t99*fSG(k8a8H{OM!3(N3TAH*f5)T6{UMbXXB`>ovVJyC*Bh zKtTjPeA_@7%D{wu7hB9H+0`0?2lpb_!9jbt$BxWFs_!oTLqWl8Ja+zJhwo=S@`BA- zT5jt`-NKwt?-dx7+ujx62v2|h@+M3TF&Zq;&=lt6=yghL_*P_36U&4MU-Y??vEGK= zkBh#wUTC;oD0f~4ScB+gNY*NXPv4sP>9w9 zgJTyVl1;*X@T3{7vBl+38i1f3HIqhxS5l~n=E|0CnbB96VEL7neb8Lbt9 zTGy&(D~#cb`psiJJfGca4cu$T!Wf!gJPG_WC9StnJjO8JzO zdGrr=qFF&Br>sn;v{YQwAy}i^;vPf_Rv!v!=Tl>eax9hEkJ>Sr*BJ95Z7lH+KeakK zzgF_CSB9lw|G_4|#Ru%?+XW}C!KQ`wJ7X^6L44>49=l_QXMLVSXU{jQ(s+Xt)PXh{ zfp+@ZHXaC`3n3rsT9yB>TIX1RgLFO8fi<0oaWZAwk@z(czYfH%*Ec|tgPKngG3P7< z9XJYwM}pMR+&|F0+;se<(CVv9;}elV{AA`8#7U#OYum%;1@8Z;;lP(C!(RPLVG`C? zx^xurT;k$v*0-6G)^X#pl0eR}XTt=AMdIqRN#)Z-B&!jRXOB3kN!V%l>zQMFCnJqL zE*dR;8oBZPyK}q&b};*RuQl;Q)5i|oCjLu2cyj#C_aExA^!|8?x^3MlBI?ytm*3nw|CWzP&ul*Q4;zbk zZX>lb{^ue7cR(rys5@nv$Ln09S>7|u<-VCDNleCyLJ*gUpCcaB{dZ5DM1X0J2dR-* zEbq0pO`6XS?|nAE!^Mz$PjUUtI-m!Z#&)?IVXl1pQ@PFI^2hD4y zCsqcHkH1|$bW%@M);MRLAEx4$bD4iya(8_H8p_i5kJ!SWAud1Lmvz)uEIfD8KkDcI zIV^1-sX>l46Ac<4nP^0_uZH0RuB^%{4Q9##j>X~s*RM7$)w*!nU!jn~wCd42L$NWk z%EVb0?1tNs@82Ebb%+T$HTT~m*=AMBenFu8$U9@|Oa?}3Ws$?i_bGTdUDfkDH);OY zgN45IZ+7Jg1}(sgr+DW>Qo8+P`MYJYcHa_Av_FMPgJ0-B`dIK)1a&FV`a-}di#Av~ z4TNJ(&08H0Lb_DnPj&d(MGZi|<%- z;Kx?X0aL4S`FG=TSRaTVCjZO&Q9A#gVmmF#QAG$pPvlE%_-K*@rv7}g6H7c5;V)0b zARVY+Pr|$wfl#7=leo5Y+j}HE5XuSS%bG{Rr=P9CBPD)~cu<#;NPW_w`1REP%KfXe z%C@J2EFWd(l(lc(`utD}ZXI%QIHnK%{h|xgzn(j4#+2TBnJ4-ZrIcw@ekNMhaVYZV zW(-CwP}k^!eEP`AZTEShz<_J^l&BFaNi~ ziZnlH274eLhC@a(&;P9G#swvX2W33m%vb&ylLny8Hv9&~ji1gUP>4ZCwq~rm)ygT! zh4;=sbiW@34nq&f|5YdD@fQM^qIv^lqk7;LDf8ig7CJ0hofRaH24byH1TGbEWgvk~`R+Y3||~Y38pGCq40Ke)cmR z*ubY)K2%@g(V&;aSa^_vm!Ha8E02E&kCzdzt`zHVLi*JAoi=)LYs6mN+dFx5Ma}Q7 z@sN#%tcsmd8PRdkVy7g#%5^yjnh5(wXay`cqL-~Kcn-*=|G5t6Y{NeC(?RIM$)gIn zz)-qK<_99|#JwdK_LfNpwH9T;ID-}|el>-EHYdTuD>f%J|wRI0&3IUh@y5d<-d3TPdMMN^yk1PKs zpOdPVOjk8;Cr5}ZY5ZC68{kr3-;S2;P+~k+lK?6R0~$S_ zo3REg9GL9H8!`WR8(ttTA8%S#>YuuQ28{hA=@Q1u5=yK>LF9)gz{ zdpw7rpe~2T4fKMpW~)`LSFzbv-X$R9s5q*85~!^o+O&WA?|g1115c+w{+p>{fF|^* zRfQhX%(4A7|JV<`DZ-oiB=(Q-BDFG*Zy!=}CKm3l8q!kj0~p`?SxRQ}^Q^6i(`?@G zu$TCjsOL(J%gS(?Az{Z=r+mu}Q)1<}?g;JZmBK?+_%YG`uD%b1U2=B15T>Q=fA3vd zFss+ngA@|lEqOz$6K7W+-v@Q^5rsnDQoi>8te1BYXOBcDC1r@(8Rican|*~wDKC$C z@VHNjQ(jT_X00^S zc@Xtg1CSinbo7zta0+wU{=Ob#E7FAa_iX5lgnzaHdl;hzP|aZ0?cw7Wkk`JXVyj;( zU^AFbx@x1sdSL;5^ULHbc8=W5-57(gmg)X$a9 z;zQDmjgM77r|(8;dd1LnaHKd>r01V#k+T`}$nOwbGst_k@f4!=Hvl6-*Y@3drKjk~yDOTGbX z4rHUYJPo1KF#YEf=1RR=B!NuX85!LXQKBCnAw;ZF{#663?D@hi{e-ivbfBDZnA$ab>hNs7s1rscD z0DP(=Kyj_~I1i=mh^nba@RCA|-08R%M2QjVlkmpB4N7dvv1U`@Vb#9TGrw`Jc6(OW z%8JITBB!iOiP2^(^M2qgha|UVcw|aSRvd3u?x!3P0oz~qifpz?iPA%GEd$id43voLJt7uJcH9eLIkGyX2SH&Z^`Dkrzpo4|2o*k^2XJ6_xzOqH6(Yk1!A z%shCYn38?z%z>Q1ZiBrYwZD3VnU@CJilvC>(uwf*M{e9IA-Rh8yZVP%lrcX2nmtGA1i3=RpD+w=*2BD1$Fw;9 zph%kaLU_xxx(<#0w`W|OV`SJlyw>3AbjViSweFf;cXgy!Mg(=hYwjUp;3D zl@TbmX)@jV_3@D_^jGvJi|>}Mj8!wqf;!vjGiUznDiQ*X*1k90*Dr8teS8@1{JZN8 zKVP4r6C*fSimq14w6=;LTn>>=v$C$by z;Lce92=lo!2&Du8xPukOvLaH!>TCMFRC`VDzW88FsYY+q7pg>I4Hxhd5DjqH*T@1? zzEZRzqSymYWYdQup@kXxjz4Wpn^}Vd!#=^2Sr)M5{wZepU2!g0v5xHGah{(4%$6W~ zV2gs`^rncv@rV5UD8%Ki_PT4h)8uQ#@AhLg;tOEH{AVeBiMYJeZl|o_-Ho%dsM?Fo z+Abk!yv`<+Zc<*l4XpcPAP>fR?V5h-LoLuX(fI zfs&V-9w{kl`1{lTcYWjIx2@JUPDe&ZbAdGPuLR2d;*sSdk)Dae&(zhUKyMb7{@%>c zF~mD#Ek4^Zw5jV8lD4&da!)+{PmAP~0K%P))I-iny>Re~3$Om@_%VyAt{sv0ywf5Y zR>Is9ZBukF;&J5@jn@MAE1wkQ@mgx1M}A`M5epa5AFNd@7gp>@WkD*3uY;&Fq zsL(4|kaE8mYEmq9J>pc`%0;hiVB${T+>DAxj7xQl%SAOVFzMMNNn4C^7ImxXzdxCq z+eVJo{Ssx?RLxd%TWjJ5S>iMJ_V$j)Po7XuI-JCjlFrS~`-x(OMwZE1*ONpE53*E` zwZtYQU9?kH7MqwGSV;%J_lt>B zaWM}~%!tapw6OOV5jc+{pak`<-)eGWd%~p}WH%X=GgMCHYp~o9y=Uw0`}y6I8inh= z4_RNSkQ_f^<04ApapcP+kCz1F-o9TA?(4FTYW4*$3GOGiE`cDPQEA`jX=Ecm$Ybg8 zP@laUC{T@3J&vH&HPqQaEs*5%pqKr}J*($LWJ2jHmkB;5c2x{>Z8}R$GkwPxcJD^ zsn&>Nj3Yi1m$w*&SZ~x5254iGUF3+HOv`H)<E%=6OT4ra>)>>H@uT0?2;9pCbNu*E( z2P?X*Y*VFD`rQNkg_~C5OrXvMtOU0Gw*At}?y9uCHymAETPod%cb|>!DR;UUyIWbE zkKxk)rrWt{`0b2^T+Z!+s}I>Enk&_h|2yAaoepc8d6?V3$bdMC2t^<9y;Hw3eb&}2 zPT{zwUAwWB8KJPULxUps;2iPDM;v*kb~7N2p}XtCGn=*{wOhxFGfoxo=j<>9-+Q#G zMMk+zb-2r-kGaf^Zxgo+#Wm7QcsFK`Z8;9zpUia>W3cpcJb3Oa#V#u(U5r zirBG?yU+LcXS%fPs?p)o7f$=ySiQ}D7BHTRlrZ`tp9aYjeUN* z3tfH&zcTi`6MO$=*aNK!&H{}JZEDVuw!)Gr6rK{5S7=Z5)3NfSo+3_M*1_KI&~5l~ zLVMW);q0ILICrjl`aV~TRN5ord!KY;K%VLRovU##+x$Pk%fld6!IB3v_grAp z%Ncsn9fw~NlQV=L?Z$2vXN%lOV48LJ^qfWrdHrMs%HmlvbDwrWQBhwbo{={oVSNl{ z#+QB2xnYYNDdCl@aogGKwXn9PibhFrU%%cwX{hyV=y6kY$N%H&Er6+)Nsr^k7Mn`mFa}zJ4mt}FCg`eRG(P{WeYJygd3gowLu8WfeG?%1N{{Ss?0L0( z0V|Rjt+Kt)$m{*cQZAdD7GwoYK%-`}rJ`SVFqPYm-18=I||#fQgx&uJc{5pL=l z!?ZJ1Sp86{r=vUzmH%@fX|-8o0+62YVmzW>xce*XJ#ipDjl5M992tf+$dV| zUR-ujc~Jd@H;3%s*|}FbiTz&k9Z=bB-deL{EYh#mwWr8Y4Mj#z&_NbXd*!~e#UHc; zkH)|3I%&X-lfM@v84C0;K15<8`+uR|ebO(&I0cCB&)RiL-zX%|U7pNci>3;@q2;N` zSM99Fb&r+42{)}3N_nB0X6x*XLgRZX26;e)DYyJ^M)RTPwBxEW<@+htktZPf*49IA ze!AxIhKJmUJ1JG54^!qnbwt#Bu0P1Ra}=+;$GJDq}kX|CE4Q zofy#S=3eub3X_&`Z~Jqf03PQmwd$7z!wY}%a`#6NAo-Di>>t^s%}E4BXJf#D1h+ht zeiR*ctZ;M3-8^)$orXN*^LyWqL)Ml&>cjvL(P3KZLKALLb~l*t^mK}d9cNXA*B!mXzQdxbF!v zkrYJc3|b1L4OY2snI*B&_}l`T4~ERY7iE5jl2O>%(ResURJeE+>hxx3odo~xVE#*-f5oQ#1!sDfiKqDej%-vWx|F_d4OjTlb`@JJQacV$=1h^! z?AzO4q<)DFQB|KRdR=avLg{8R)$4OumZa7e_Zo^K`-fK1tf~1@*c2+UypCkmm<>?H+X$MbVi@)$$7H zlR=9DX)R6yhhC}j60672#y6ZRsTbVIpxM`=?B63GE&WNMcyO5RV*>D%F`t8J$yCi7 z@e#@DrNxt<>&1PJkI6XV^Sy%M(eX~c!HL7)#a9Q5KP*!8a+P65N+E$tg6~_LVjf=a zrj$tvb)G3@QS~ImR5o|eW0C^f)7j0gb?p`754#;(xznAQD}YVh+gIuvN?$O?qIx2+(Z`h!;(LGPY59x5`# zK9kB?FiD*>PW)#$zNwnU;@ehY<*8lc!bc}AFGaA?L?|!RZEA5fr%vHU^VR6V-`;5zQq12)W+Kz z+lxe}MreIwZ=Js}0NmEz`ncFKgsf&yw6!N6#CF3TdQVv-Sw_4rZi!08Qvc`#xwed*M>g7XZ|xrl?o6SgXm0~LN+q9gk140v?#eTo;|o$w z9-jBx+cpqLcx#wu;~AB^h%Hl`{Frt3Qw4_(Rmz`0_U`n0_Ub6hq;4;K6f`2#+2!&I znpeM_Ht-`$6<9bP=)LCX4zNEXrSWi{8*;987b_lqOi9CCEH)@;h#inG=cRDilprK> z47R#;#Wli^B(#Y$Hpn;mkduYepNm*NWy+FfM*Z^Jf0D7~T1+^ZeCt_dzbSW>^BShu z<>`~Dx^aV+Bs-i;Lx_b1NUb5rXdT0uN0r!cP@S5f@W)uCm6mJOH4&U*pjOj4vJ!?k$a*46$^??S-dL|GUu~*Vi==0Tc3|AHa+0H-Q#~rrbX>uD-dV zQlyKI&PtoSN>+YCA9gn_&##Q*F}@N(fOqxd2bGw2S8 zo@8S0CpnYP+mkgJO8kbpiCVz4wOB_sIUHMzSXoa;-YBL_M;3c8Z2$qD#I&@gNxS-& z<*IXLUq*y}*qqq47;YCqYZV!SLYok{WrTK`qF*I5{ac|y;L|wq0%sfj)tJS90$1>m z$*EV_ZuL}0xXiEo(6gTResOLtI%GFM{LJV@8_QRCc>@AhUYd>}mL-#qct=%2S{gT3 zjXCITQ)aSH|J2L~W^GyqWTOTLyhojq>t}cUp^5Q#)1G{ z1*?V~i3gBu<^aVS`=h760F9HVTA%DgrR90lt zvE&G%T%JFUg0#_`V&}V8A=@J1&-JRjjxsXy7P~DheDI+!k`RykOy`^of}9R>G0s9X zc+8mN-nDN9hYX+oGw`bqA0>1fao@KhfgHNm{m?E{VItzaAN6hIdfH&7Xk3diiYL2Z zTKC^(08YX0noyZ+GD>p%_-R{QP_^&j&2ml5Eg;|zIx}^ca`W(48d_UBXXhRcfRaCP zfbakm3JfqHBHmO+Tu03j!@CLv^Mr?iVh9`gdc^sXO|L;PgkPNOapMB{*#v0~ zK);}T)PF-8U=_3O@rm%fKdZLBYa0AW)7;%1FFU(Mmf;l!8Zw1wntHdX>TXY3i23%V zjB?PwDX|#jCd2;7LL_nTj(?{bCUtQFl7#0Ua6AxKEBtuMLthJ&OzNqNeM@Q?Om2rL zx=se6n=n*h^RPSuX-^sDzwYzR=Rtuqch=1O&rgG|WA}hzAtAZ^p*2?XiJIyPcj`1{ z6dlSp)7@|VR;gS3)vfzlh4Lc&QHf8!HRG zF8*CZ9I%G}Gx)6M?=%X6IxW7hB?3K^_ib9JAF0_}7O_qP{CrBjnxu=3gfZgqjXEpd z4!#`;z^woC9Cmywb{q2UNm{%AWpFJyN}-&f#2pjS-dGD`kF124xs3!*fNi){JttH;R zFbWF|@?SU(tbH`_tqn^OGc^jJeBiV<1CI?f1nX_1(+Wde0ppj8S~$d;3=86@;|kOsdV_O+XwmXTLpqx#RD^&)@2zQv-;BR^4y zB7t21Ew6O@+>nU`!3%F2nDw&?FfSK#J>Gh!l#2|h(q;b;6=A#kA*@V$;|I*^jI^%O zc1D`E$(3J$2$TMJYnFpGD)Ph6MF+dN533GMR<{FtPwmDWhsmcywY*}bxy72MWMb<} zO%jeOPme&6N@=fu$N}1oI^DlEv}vRmo7If6YyACckn46vsrfHQ8R2Mv(5{kK+UN{5`=+~k-8J|S&^Y7`cZozM<|D0jf%Z!gbZ>4tZ2?;&m9{m z+)pnvjljo4LC*OOgdh~9NUy#$>nc%^Vf6?NfK+ksx_KMToTg-5YhSqgKn#t&y^+nO zQqtg{xWJI<6tuVmRZjWt2Dk^Xvu_PFw+Q4*8_>&7i;V=_koZxf?1x0*tz3L!k%fAC zV2|@sBzz~a$m`t_FSnh!&GG)xH@?-I$4e%lm$v5A!g5En$=GigF@zHUj{LLkJ};Il z;lGNNh0@H98ef?5W?*eBbwp>cPE6?SmPCnp(>!|ALcFtK)WAnGe1d#?D)L3^^>NEO zQ4(q^5Y)Iq&A<X|+&netbo-aC z?}tuCqH#4v1wQ>=iN(FW=f1%I01qxrl43BBWQ>qIDH@b0jV5K@e8{)cSbJU-_s}0ye(MnUc^b z0%WF%?IwT!X0`^EF!|IMMuT8@0L+B^JhIZv&wuAUH}??YKf2M>v8&SQqUof_*WBVt z-Lb?iht)k^J$^5>_Z&DV%?CHpVqSEXcJVln)*Zam2{@ZD30f4}Byo#o+3xuwEo zFcZ@?E`N zfmVPU7OHcRquLo3KtFDiz=AD`6X$|MErR`k!m;41kFk!9FgbZC628Ok_rzh!*ofU9 zY3OeyAfrWb;yAdqAOQWEoAzcjB~c6KaC38#eoBds0QhPf+?Bc@Z7^C~*x;Bf%1E>| zA-$4aMLQ|K%*(m^dD%qOgXKzB%MN#Yme3YxKVw!F6keZj8lY2nazqC^Nw^Wz5fju|#6)sRZ}cvPFMul;O{`Yy+N%v_#`A4g9MRIkOLGhPtva+q z9>CG?D=QA%ONSAk4s7n+(K3+DNkv~+u`U}o z;vvr*+yFfc@a~3i@$-j+_@%Nzmpw$^?&F78kOc-|=+x9ZE!N=i@%wZHp{0{y#3{4d z+)2GZ64^kTws9wM@}SYh8_L3WMloEVp9LHZZJkM=#l~5wl`{Z^HE(|lae{L1gqy|5 zqejStOM<=HG|HgqbLE)wx^hxoowp3yFB;GUNm5LA^J9qZ^RmITw6O5+UG{HZB+;jF zm;(rxkx{0-|I0!R^I0!e5|m3{fCB`!%x9T|_OIoPs^$)6=j5Q~sbMOu5G^>YIjJ+p z4M1I*ORFM)c+;oNC$XI%J0M>{+GxJad`$i0H`kFTuy?5b3!~E8XX@)d7CB(hJtSDx ze8Ot-#FCj0rl{SpV?!U#s$T=KY7jRF ztZx_%P;iQgMXE6)>Se#j^rNOJp$E}kG~(o@>M?P-SoBu;NRcoa5+dwNJgA}Z%^6bs!E=k1prIO z#=4ll6w3$@yq#QptCSmHU9v6=_ml^AJIc=qUHo#xSK1^mISLVlm_gdyaQb8rePg}e zkDvgbib7gT{2iU!bC zTYmcjZg3TZCnMl;Zt3hy#9ryQKlCbQsn+e>VSDPn(b*YkgMVj>XuXBFHrFwyBnLR&t!%BBz9~IH}+cJOF{;FWu{W>UN zU}%VS3b^=t%M`_O`B|Q#>2?0e*c>I?^%c*K73Va_6Wc3XoMmL&uJ$zO~7^2z3Dcm2vXefE9*xK=Hgc+rfKHsKGYzQ zf?A2_Zah^+ZE<6vIvC2!g-^tbD(B{=xnC6W?^pPN6nBukqc7r)?|CfEN@1C*d=A0$ zNU^s-%Mr_{njYYJ;L1N;Z8&Ui^$0+GX9~+=7vv+2mL3HnQ-PyCVqKJF+ zNJcM(1(wV;4CPfy_ry#~)7iha=Mxfocd*hIFLM3&IGyH~Y2)vr&pqC489!Qf_4=%u zH$Zoe#0B^CI0$%oxj~~ZC7^nCvTBtB>wG_ZeR1*gJIhUE^KuL1Maz+R$Rqwlox9c| z_txeZ;aBTMGDcD*fYia3b~m`rV?Mv;ovfL*op-I6NO_?(0)@Hn>qDgSbc>puH%21DG8CRaXQYg@ep4>5 zeHuokWsSS$Sk0+V_n#^WjfjdrTrlm3goa&u z(7&3PO1WToS)D;=%>!cE61gy^#vUgh0royEdH6!4MZ>~_=R#?1U{U^{ZYVN5xtTD# z%LQ2K83`ipTYJ42+d~^y;fB-wgiKZ9qB%6knzIan1wp?P;yNG((g%J|Hh#%bu;OI< zV_>8_6{#C)|Eofc7UL4k?jlU)pu)qcvXNn8Y_c~i>+J60AAM%}MNhKmHjzzPzHLpq zLHOWSt6d&_pzWT()zA~vfLw4aYTb5%I!)WqcN$qdSWhn3HYOvMN!GjyHF8_PiQk2X z?2t|ueUe-;D%rZa4$3krj*DD#?8QQoNMS>WfbPbz<AuUad;6ce z|KkF5Rx>gHfTmJ-zu7MYho-5)2OZNkdl>3)o@f5C&os>UI<&^N zKJlG*+J(V|zuY{f3ywO^9$)s+_(rZ(?@yzTwBTOP@mP;EPb=NpbPJ!`z33P~4LAo? zJ{JrGdnm43Gmipw%Y~@Qh0+Ejxri|5&yNZ~A8t6^-I3{9FLd~rV-+i&77jbOxv)jt ze+=c|0YXENYmQh3e=)3ZP>_BKD3C~=;y{3&8E{5IK#vJ$SKDYcs>y1n1Uksr#0WzV zS8V58Pg4I}YO*wU+`Crmr(Ry@H*w{px`>Klg%;gn0wxzxshWE4QgZw0saEUc8)Vw? zMdvN;y^1ClQ3l8lljk%z?7`SbhPJjiEm8sRTTNEi#@Pd1acBg?qNDNUc(d!hPO#=1 zRhRhazv%==Nlu0(7eO2-Sqyx>KAXFeYBxF7{`B(Eh;QnI*gilGt zLms2Y1q>M+$CX-L_U9%hgxfRq0czZ#GgQJsTL1|M>reNV-_P)=yAMbze}T?vqrP-Z z6DYaV1?eE*TA@-$p`!&*yYLAEou7M+1{3KzQ@_0csVo2)clS4`K1sThAHoK}&hu-z z8G7FAzvsdR*80cmt!o5~*uXqzxZ@$KP8dnpq zoGS46?rcOvgt4tHiLmSDuj3i2mlv~5r~LerCere=s#NF)ZE?c~G+fFiNbhSve|4svzl z@hh+fK24Jx69D6h9Bg7qo^qrqEjC?w?XsQT5V@-2H`c9JHzw2Ew*JzLko*A=Ep0d~ z3AD0_N(0FP;U`!ydG#O0B5-JL^`lcS#2;krC=Tn6)7h(aSMRg&W-5!nr|jzQDU*6k z%8^QX=aEo7j<72$`YYAWPxfAb)b;Asxc_t{m5<~YfI}9WgPde@RGH|~loTdPkB_&B zY@;G0=hovEkoa}_biu`Xx+HA(5d6pGh>g>c%0{f%P87(GKWdAX))oY|H{_TH&;yDH z>6-vwr_%P*C9Lp~`K9W^U|n#J1&-EeVa*!HH@`eMa7rZOnDKSVX_wAZTlm=&&|C`0 zltAR|l@>MC{ib5?oePz`A3uIH)StNG?zpkBpoc?LdjMz#$tGe8j<-=% z=$^y;(QKJp240mML+mcc_p1ag%pge&-#b5tSrWMT6Rx<&R>E6W4vb9QnRZ~rnvAvf z*Q~%z1Beaq&u%<9JrRyPrbLQ$LiDzH=2)b-5F5%Yc_Wb8!H6L)op9>kIBKqSFB%%< zmz9!vwrs^iUZOYDd^}TM3)=9MZEn@N?bYuf@_BY2)%4*~i7|_iL`d(RTZt3TJOLho z5hr=jPh$lItIn>low@@Ok#y_#RUiXEV#P;SLBy>?YwL5_^Q2!c-Jp7dE=dt{10e02 zB!fO8S}GXa1ATa)~x#e>!m zdq>ARfM+pqf0nim_gNTuVKu&-W>dUuk_K@;FfvZ#cO! zAoP_65!^pGkr-sKR19_`m?--$nrzvAEjTDDDrMFe5~BrV8oHrn#jX0yHQ8Oxpp%hL zChlgmd~Kn*nsKmzT@F6F^?nNX5Y3@{{#Dvqw9!9*{`4^tOwz*1lBPAHBM6#Y3_Afd z)iAVPM*uO)wSIN<>*>EY=W~6Q8zcX0utdv(K@D$s$h7F1Ls!rfb1-<+aVGtd8OW6#_E#ctI0Aya~U z4$v*QFSpUA$PfX5;c_=;h(FyfMAl$(t6mr|W#^rhMF9Vz)^h^ zEh|wb5QU76JO4WeYxj>@I#FWy4dWr&BZE+~aLrk}YMFwZ91btJ z44(%*3Liwv$}S7@3O+=E6lz#rQ0@sndGdrU$v~3GRF4Utf!JVlI5=aUIZ>m^hu0)n z@~QMA{LHS;y=ELm>+A%MWkawY;iQQfXXaAm-qs&$($xFCwk=Hke|h_B5^#7Tdx=eVeIXpYzL$^fqk}Etx6t$^;qMhlRc7 z*~X$=EmpLZLmus99Y8vRiiwGO0@B^-vA8>h8`{Y7MMm7ICZaob70RFRFU+O933DYb zL(Zb{EgvXR8Zr%UYmgJWimTo}py}1(Og11%(+h-X(fA=K=1t}a`7S4FN@GAhiG_}U0n!ZPQ_k?6^< zU+t!O^v)0UbP{xO0Oe;%J(>vpt&dpoj|@O-?)1!65|4P5n<2w>pS54Tm>(lk-~olI z4j_Hg*(8S7_c6z5e-lCfqdCdKSp3csb!AJw&AD0+Fj~m;+-&P{(~PFF0Wa*o#wrX3{jD)ELG(mHZ6 zp&JnwX$kh)CbsfoC3!q zs3J0FghiUNBdj$m#$RgwC_##(=uT!uj{jZ%x{7RoU()y-B1vW$f(joAfN-Y!p1=0q zTjEe)_9)EBVO9prJjw7Gd1n_JV*N?SLb29-Q3jxRM@)bz-x3EH2OwooN+*yBxJn>~ z2M`1?5JkMC?GwBW(;C}{+CV` za<)wQ$xaR02^@OARFs63V>>@gdmS%q%$|N#(Syom8fIim5R2E=U&8ckI0-u{28lw@ zR=NX~HNCb&)%Q~&viUS5`KD$(teVn<=#{L3#8+K+L;Fl>r6#W3G>F1@Q`lnSd#Z`4 zgM9v!;}sp(5jKhe!mO!!-|&aWzAtR}D0s-(j<+W{rrfU1VeiC>g9qT995PmE*gs|fw z84isY^V#AH!0u{ad~4;aPmskzf=L_#m>E6!ef39Gx6WT!KMiD;$X#CsZXPDSf{t~& zj?zIx!juEc&b)a!7CgZvdv^mBE}7!Leew#>zZ?<2K%q%5ycFJrjSLz71o0G+v-Q<2 zyS3ct)NfImw?fUwBJ>pZV0_)6`|VrfLYhJsmzcTKf-pmWfkd^U(of^o!SXQOw@myP zbU?r7A!;#4W8qrIE*?W$`wyE*S8x-3hQVGWdV#P5P^j{u{W_sVMTL?IBL(Ve^)a2M zV}6EQ54fMij;2?9f<}e{$nPnUJsAbXvj-|d-#Gah?}dF;eXQH)N{oz4Z8%v$?d?_`X6i4vgoH{(D(_@Y zOAccuNGguU#|P;^6atdCQ0@dFM;k9J;(W42sv}vMiK!c~iZ;m_-JlAI)AN3yZieFIC+_t*^DG)j5X}9sHzdKEy8bQOI9fuq>f>r%+uGSrXl5k=W zedFi1qu%kIT5Hr>`@}*krk|;@fL?T$qKwb%!1f_Hw;cqQnx=J?DzM!sojXkkJ(Z}@{HpMnm?QaZrobO}h_KtA5O{mhwa z%<$h+ANE2+^RKsH@!(EkV8|VS<-Ah8m;UXOA{rUx(Y)VzOaJanZk$`mYb#L7f;f&! zmvKVYd40>Zu%QEq5vU?127btW|2xCK!_+46Ln^tG6yfXYOKlvJ*Zk&Uo&n{=&va7C zMO$|V44bY%o9d}rH}sS3X#nlEbQ^d+`vw^rhri~5Sa6cjHx;8I-r;32fqcVV^>omw zoNLQDUe|z?0*B{LV|&VG%CwlC(@P^sjok7)>htqMy9fomiP=mE=(^gzW@c?S=IZGq!STKGdt}IPP$kr-`ZGedQQIR_$=pEZRU*HpM- zZ9OiqoM!>VPs5V)*~4W*?HE`^Ke6G&PnLEeA z!ivFDDwTbZJ8>W}wf&0H6sfddhjM`sJ^qt?&X?hAQ1%-50Ti?|3bvyupum5P%51y5 zlHV2_8d5ujA(s|cKFZ~uikX7EFy7;h1#RZll^ew`&aHT~A5N7M>6d6HAPeT?TNHjV zo>H|SmVk#vDQJLeOVDwKCJdG25x!+y(MW~sd_}Jz9!gb%PJ6~()pn`Hi1z(uK+MaG_A`t4|aX~9J;&*^`8G}?D z-KdVq39-CX6jqd#-LkRJzHv=g{%fZ{c0P`swg z%-Wz=?&2?*e|hKKIK3fcb_Y(}wz0+EmwoL5Rq zd)h!%g6#hNXWt}-y=l2ttT7r7`o-J5G9v9PPIrdjB$s7?}k zFB|!Vk#L-R5QpzxH%JSUx!dCcN&%?#baCNxw%fqZH_lOg+|%1jl5QEd@>GC`AfFl3 z{2E%F@CoEHz{kb{36;}(^2}h~AFTOmO~1Q~M4D%KAq4~=4?uY=NY!zig>pFslWf#M zNv8ebDq)OZm=rC@rz(pcefU9%8D#Il#rlcmgmT|K%s}(ry$JXDRt`ge0Rdkhj7FA$ z(0+*jvog^qr&>K(y3%&;Nd}#`dOt4bKTMMZ0$v7APFNLoJ9_E4LQl?PA*D7t<>&0lD|0PFCj6p;F(saD`pTual<*AqOvgXhOr`K zumG*}>#`Z3%G8}LZ#26u;4yqe_(EA;vMEVA=arY2FDMvX%U8tN-!QycJ!U6MvXy`T z*3M1P5Zc(94lT_3JOzqq6FG*8s>8Tib=gUQkqcY`PCV91Kd~;q=8Tt3(&y2!F(w>J z5jx!qM&-1&qUl;LF)^G%jc@?VXcfAga`;_5>U1SsT$IEBWp9gnEt@2#kL0Hkc5zNFX&6!7LP9ez97xGr4faGeQY>nTOt$*!&{4SAC7 zH$xX=_&R(M@8}*dG2le+jFk{p2vIa=`OG%>D7dFn{58zZwR&L6npfcSkDlLb1k^@c zok~}!Vgp-VwN0Vhnm1ZznM{?>u$*V7C%;Yd^#dITi@bFe z5$bl(z+BC~R+{!L$ffh}nd#Jk?;$t*UG<>aE0+d1FaTza!F(>kr#R=VbhjI%Lcpd5 zT40-#m5r+hfJGz*LcuUG+kTsZjXfegQb>iX9ijd#RMHzni5H{=ID%=f64M^foR=m- zqdH*)3Gnf1)a6zK5*^l?yfdi5)cwsI9bOzd3~h~0{g^tI)Gy95fmtzeU}#|>Ve$NN zZ0GLbU_WLQ(6s5SSvb(3?2yYH6!1EB61h4o`#nHWN_-`DIVU>r0S+igHs-E6Jt2?a z45Q{ypI6i+{yrsG&NDkQQc(wWQ~)@i7%^3Mb6khKCZmq0&*Y@AyjcJFIa=ls6Qrk~ z)D~HYSMV+0O9^hb+O^b=Tk?IPAT8CP7gT_HXZ(b3&nXlHT62AA*OQW18V@EJK-aDN z0P_TpW-~12qJf`_D>5_l=|lIN;k5x6j6zT6fTb_AAa(qpxuyGpxH77DntgQW4;^LX zlE!zC9MS4JU21T%*_nP>4t9x6+&u`t-Hg^zqA~ku9i22kppfiWw0LZ-DA=tWcsOiL z5K{`3>-H9bO_`@n8Xbac zVF8?I0r=Wmj7pDKDF*q46x zeN_ae%?2vipki294ey5I*bsMh^`eEu=Q|?fMy6YzZW?>)e z;{&up0FaK7N>MjoCGnVkd*xnwJ*P8!c;lO8Sx{}_hr_dXg=;|-?bPnD9&B5IfZg|AhSp;%SI^ec z-kyFXz1Ox|r}$7er~S`z??w!BAjoe6r2GcnkNZA^4gs|Vh<3HW|r4Ok5rp!m~*huOoX)u}f)eFJkV>$4hj+-P6<1ea52 z0U;g1UBITuTR8iJ&d}`_>b-c*drL6LcUAy#$@X+FZpRz$`*on)y~^uEX~u&*G|&Mg zRq77g$RR7N-6q@&cE9<&V(;zzT?boUj|%PiAhOsyO(ALIB9Kg0DBkkRD@55K||Bv z5Cji7>UD_0bij^JJt?b-+)WH$?$Mzwd~B^7VXw_!b8ZmJO0m0*)*DEz0W!t6{^}B9 zzfznaUl7R21A1@O^mf)m@dp$QoI0!nmM#MpJd)48*$aFkz1AvBPv5#BuRwl+vJ#K^ zkz`bm`1D>JwrjEGyV+zr*ZW(%X`1u^I8|gI{J`*pdyNMmn(vwI{&8vlJOyZ@VKan4@epAf@x66A&PDnhONB;ktn(~=H}!lafJxT0 zarA(w3zwj1L|&Y9Tj z&qAB69{rZq=2ff0Tt*$LeRRM5mgEnbirH)M3vc?YUIhkCNt=mN6?A-j8(Xlw31ee- zJ$V{aj@9dJu z@5v07w6nLb?+(PeV%@hxKlDFE9m(RK9%M}<-TTJpiAi6A%85@*SM-@Uyp^tylBE#k zQ>W>VxdS7l4T}Ak?xnFtttCrG1)5#o>%~CC>n&!WZd7H;{knpF zUmNW57-o|ku*_P|h~dA8*$6`g0I_()+t-SoT;mt3@jos=gcx6DDWKvM;A5cRVf@il zE4V2q1PtLH63;5yr=zpm0pteAK_F>kCFILV)?;;|qeL6c^xDS(rg2dHgM=XTRBAZb zm3MSmCZam#AoA7;_(lM3!IN(C>qThMnmSq98 zmekX$z!Vpqkj%vUYHo&y9lYCBhSO71vuExnT5fb;>AbqJk$_dwx|=6|*BfC~SS3#RlaUlUxden0(TIIF8mB{w8^&69|BjOZ za60jq;OoukZx~=M z6BPi8u5K`^BiB40mcLad@RoK{?##>v>b^BgP@)i#jsuExmY4M~f|@OCY@(e}KZodm ztp%q3)8O4k@sDl|Nr&8*gMMS-2cx?0TdmyKL7u?-q@ezEtFe(ryBE z&$ZXdO|w7y>qsCS+C5oG47y(;f_!+^ia*EjOfq7pHs~sL39%a3VeeL3P__O*8pOcwJJt&*X zTHb88!Q&fww6eIDdX=!9!7`Bi^p*vGES_JCHT^itcny83H+FEK$~43TH430dgk$YAP%#`` zG6mrr6lx0(4MvOj@ZnDlrQ*Xl`NsqiH(#Nbtq>C}V8#1h?({&rxLU3bzvc_6px^n# zZ_eSBw(xg?sDq9^H)CGOpdY=}jKBQ?J+44TgLilsYGT4&q6~r6nYOjJKuDmnqedxzD&B7i`dW@R_|}H zO}P2s(nV#z+ZWvYFmGCO{vwRjC$r}cI0||~0Mj@>zi`sSQ6eWJQ;{->6%rDfbvoVo zl#E$$eT~p{)i0u#Q&_(`ujH_1xV)K`KM#Q#!oSD7)3&mps6vK1ig7f@lsHs+Xlg1e zyFJp939rLNkTge{HWTy!1L!v|58q>;5e#UoY`y_UQMt zbeo`?^;G2eUmw5n)2uA-YYoueX8|7{C!fP3LOHaz$mo1|diNeK?n=#SXZbn&I7WnSIP_+&k&0e!3-c&U}4p-O<1 zlzeJ#p>O{$Ti(OD3oGYScZuQ#xR26`e(4WcgY%RE*c+)W9`&2~GGqX4E^l6W^UUep zw4WBYoB2M2bNWe*IVV#>qFp(409;=~v*I5&V)pgH_u)<&nw$F!;L@*Omr0I}PWrV@ zcZiB72WGFwjSF@4okv!P&Nt7`5w&tD#rf%NT{oZHgYv)TZ6^i@1ipCTq8|v!fe&Z{ z;Y5>Hu|Q<$8=xqG!eQNnI5!}MGc-7uz1Xh&Ewe-p=(p~fW}?87(*%B;jE7^T62vCsNbvd2VpP(;U@2-2}##kL-GzBj(}_z|y$s ziYqI7Uoq%;c${IYqk$I~*1UGqyM5Ko4~d2{E!O<+-#(6;YSUy2!k6L&^bw1HLV+Y@HM_$EeT-a?)I(qmEDY^sTUuJUu}wzM5K3+vUyZkBH1lTb zr`Y9~_k<5uuUHP(o@)|Z-)Ok9O8|N19?xN3UhPI-DbLFd1BB|Md3zj||7=eG&ZJ&5 zV$zE@C5d2ab3pS|-GsxUFLVGF27m5hV|SUA0RfG!Eyr%47H(Fi&pC}m*!hKEugZ9@ z3Jnbn92hkbYE2Q6!MqNGhCm=1yu=CKzJ3%EfE?ELrQgppZQBoFT&*{vn{Yeh&tBY4dtP&)MY>45@Czt5i~fR(b@+QLK$cGCOpMG)0a4E_L-cRT8jU@BVX zKMpR%j6Na9=t=1F2PPMwr)FiZn+#>&{`?4#fRcg&Dka@RGc*VSA|>734BgFM=<|DG|M!RY z<9odOy^j&cak%4(b**)-b)Ba;n*D~|+&NBWuob7*NWOOF5h6dPs+jAjG$n=3H|(z~ zSN8+!ykv@;ZDHZU+?@PLwFj(B$R?+@>+jywz>A7%fr9Y8HX#gzyg^go?0LmSmN&SR zry|00{!5EKkx$46kFm6!K^AP#4g%I}A)Wic@9+I2u6!td&(x8RoKaJrCZ#h3{aaz- z`Gd0_)%UbfgVQ@VGvIkco;~$^^oWmd7_UbqOR;}R$NdEbIZh%_Zt6dbMs7kCN3y_} zWyug&Xuk##fuYpY)Q>RzOicXY_SBgo=;<@MMti}U9%tGPm~w=Lhc_xof35!Yet+Ky z8ZHmH<4``|8}j2V*!C#Ni1hUIkI$%K@k=*k`(hPT_cEk*{CTjrm{>jEie){!T-wLi z-x{m3{0vYunx~SL*Kc;(N`s4eJi;et9FZNfK_@%%kH0}GiO46QGYFhtz-K={r-c`w zOfa(V5J=q#d6rn~1|^fOOD+SgJL)RU`uGF{>B-65y}t?NKS3dkCus(-2!m>mg0wQ1 zHgLfh9-s$dW%$Tn^s-K`^w2LXG|`ePlaBl(dvoaU!q!0XnyP35#f!sU_hVmhHb5YC zcxQ+K7-?&LancJip9=}OfwEQYo$ze$=O(EMXZIJ#>+#F^Ey=HIgs-21^a|W#-y1i zZ_SilgzwgWloj*QmIb@NsB2Kwz7?wb{L;S0k8c7-1?`ViRMPy8j@2Vh&B2R{ z*AVAleb;3*>P}}@t(@q{95saf{CH*{odSDl=lB_l}&>Fq5orD1gsonpB2zK(T& zu)=LTeiP$PD4YE>;n zmO>~~iEasfMmlTI!zf9O+*e_mF5@Mcvl2$8{4TDn<-a}a1i=mQf2M0}@hxZ7M# zpUndc*iLSVgfmykGcZ*^RV@r@!CI@Wt?kBnoAmTjRS-{JSZW!%SX`{@g2>^tW)kPh z(H&YlKIUH<%GDr2RtodSN`*rDHI8$1D2uUol&ciqYnTZLs6ojjKAzI7$Sb)%%fv=V5Fum-`kZ~>kf8qu&5%vsE42q?=t=_ro5V3N>ao< zIg7UMWB)Ww*)Vc%V>T^6Up!hvW1jgXRT)-=^{BIgta@f>==J_3ysGcG&=g}eB8aO$ z&Y%WAjMOWI0w?HZ&4wC2=7r9N5f^I|C=q3PdU|f&PwAwIXbK|_UU7rgJUq_D@t8d4 zacuRtyuzX)ZF`&J3J!MSIS(Ftb0rIl;Md>2F4~oW)pWx0Q^?4E?t3C!qkXh~Q$T_G zdI&W;2gi@4wbb-<)lhi_1y@ysWhS}k{_skSqSmOPVQyX?eZ`U$<+V0t`?)dCO>|2n zN|(1YX1I(kY(39!6J1oKNJfroS$W2l+1iS8G>+@s+4k3XK$J*pYSN+_vY^(PKl}T` z2iStJ8Wgg#uR9EZwJu>gCCYyk^r^M{eDz+D@z%m-csVSy%oV%p!r+8b`QqxiAH#%rhuWA4G6=8I$e4Dg0(RQu)`BO}fbxnzbi$^g-h^DSiHP0ag6Vv7Q z8tLIrN(QFy4oPp)@@kwHF*!MZ#zsBH!pq!Lh@LtoJ5hrziwLfPcNPu~%3$t6gQ4_5 z%fcdCHti!OmcK5C8f$A-W@dBoOuY$*(Ik6hUQa}avU2-0EbTVQ4ZiiZ6C_ti2%f8= z9e}5of3&YOCjSzGgPp^0X<#dqI=??NBfC-<-D@H3>>L?H&KK{4*U&F}>SVxCovEGs zNkK*CcJN?AP^%;?f<@&*icn;YKRvy^=Q2P1+oGut?Q#>b)Hdtqmup%$MKK<7d|n$~ z-FG@*ovpusIOpjR-=0d{IJx%I9Az*B0ivWki)DJo$nKJpR2BnQR>J7#^9>h>{KZ*O zCrgWlQdQe~n5?DiFo}&>Q!H+~aI7c*fv`U_fA$N@%!GKLpO=ux;xH?fL=8Fdj3)jS z3bAAm`rM9f%h=nPNiWYdtwGXyz)EIil{?cCo$>nh*_z+cOb6&4G_%AqZ{W^+6D>M! z(RcZ=vdN-eS8VP&IV&bc8zaZtpDT*gP*(oL-_zNd6=Ze0vJrB^&s9yRuQ$%Ua@bd_ z@8>=UtOBQ`xBAh^#~p#`?`t~7=Em}_N0i+?-D#zzv}F4X%-PZkwt=c&B3l3n zMGkb!e>OEutvSJ-ovarusZbq-&U>%JpRF`Kt@nyM+T|PBX`7#irI0B6+4l$a`1oPQ zW=4&9P5~hB(J(0*jDdmCk$qHGN6*M89!xiQtVE37wojHGOAB&&x7&vy?&?}GP@;1{ zgyz+Aaah^Jai5%h{jJ^X9bHBJ?w9@jR--|G2VSHX#twSy+Ywx`bgPKxbP5(racZ#bV)&exKbnRZF;uGX4A21& z3H+o`R_eonoe!)iBHY+4OVDlB;ifi&C2-Qb9%&Sz&FDWP}QCb{i4f9&EtK<1nFWA-oE z?YUe?PfKh0geL2?YIA2by@}%sZWv5I&?u)i%FKxAMTfQM^EfUm--5Dd8UKiTVbq^n z2!?HY`5-ixQ&LJ6Q}ApoL#?Ua$)F{QC8kmmGwlG89x4!Zdr^`L`77 z|2NFk`j$AtA|e{mTj^C*TCnfmum0t1fez-n7iir!EXfjiN}Yan77&p4=OFEfOkW^= zC}p<>e#aM1_s8{LVq%s9)*zAu#}ep1sT=k4=R-j)n!rCTD+@&Axw?m z2h286gCg$cHxjG_+FCJGUwj;eZW|%)oXM8Mau~;ki7~MU1 z778sjY#zH=-dR{wkeZmt#>WKH#c^*Aot#`BPzYcQbOOXL8g~8DD%p;^t8tfS|B7p> zO=n*{oVM%(5Ao~qvD<~SwSGbglovmpz^FN8Kxd{89bBT_Jq@78qH->WFc5blsn(4Kuhvb@toLAn zf!PQg&>QapVDd{zq3o82VseF6cAdeayMlugl#w=7u#s<%7|J(@fGtF6BO~PC%jxpY z&Y$}0g@r}*1pbmvS&v>ks~X+@;#RfPow@UuS@q~|)@5y+v;&PuF<8~;@6m_0=+m%- zr+|gPbm4D_6_EP9*zq2!o<2C2fw1i`W+kcJnOEWbpYGeC`$-jEKgdftiO+dts?eMfCyWoOK-w_8unY zlns|2YLK0kH6Gf*`^n>??{G1dEgRJA=JCet4YAPug98BPux>Jaq;{P)8I1`!(34vZ zjCQ<+h@$gpq>M!EHe;PZ{GbB&^qcgvbLY+_ke%r#=CXiI(|i7Yz(=pk5eXm>3^oM= zgOtSflaXi(nDXQ%VrjaEn8MkIeG99Qv_&YL*&ZN#rE{7WjI7A z>&3(LckhOG&Nu%F6Pd35BWZ+KhYTzXm2i+xvC7r*@)BHFSy7@Urn&S<2P8dAIWjT} zcYF0tuU6~;sXE1?vz#8v|Sm< znpgx)iI>B80(kmCEEZnoC~=`iN)VlZ zJ0d2!%s_~3#6?(s3x&x6n1HXK9lRnXBqQX=Q9Q$Yr~WfSpW$Cn*r#e!)<#nl>>|zh zT1_Vk59HS{>Gw1N^8$ba!a6c_FRg$;0~SRUimPncIt7uj-SioCl)jy}V|ycU4zBH= z&h+=7z4Djg0(+DRBL)Op;1xWW1qi1DyzV6{-$MdAWyqHNj4gex(H)#R*|e^JE<59c z5eTT^%f7Wt{{57-x?mwbpdr$GN(tLDp7x#I@}m(dXv)715BoZ3A$XbR>uKNtxZ+b@qSli3{ z;$L`wajNY8?i8kro1CZL{pYv^3Q2!Y!`~nOKYelv049qRA2@%WB<=poR{V92Pvo%v z|8qWg_y2T)|4%OR|NqWE&G`R)ZFo8an8;Bhc4gQ^28A31{tNvEv7*7*rN&-~!;p2Ob$OMhPX}mT;W1x^gU9r*1 z&(0S0>D4L3LuOwt70IEMGF!wSdB1mbG-YOnwh)D4AP<&uB!gwa7M?k3IIASp9P#SJzMLO)x9Ku<-WqQWwZH1`-0au(G~mQa5Rl*n*d4y_*zWN zG8D5Eg@lq$<1#^C9LYV>e_9;gwc?)j_;eq*U(2v37teZ(Th0|A#=60aJN`IZfI{h= zM_j4>m4zBcs+pHCx{ksE`{j#jmPVN*=a9pP<0E&z@M~jg#fBl~6-(RsZpqSjY!pGq z*P>JLrTM*avIS3hsetb>~%4o(WCbs>05$GVEbslkF=XknF>&sQdVVBlnSbY22%C#-`7Ot3Qw6qoV zJCz4yTU%Qa-1bhsrKh)j+7jTiY)yR#M$d)Rf|_rdOtcS7aD?d7$MPV+S~~MZV&K)$ zmHpGR9WPs)s6uWpG?8pjt2d<97kqv5VW+GrV=qmoc_DxU?d#R;!>ctpv<@e3c4V6= zMiMY;W{NXcs23I%?r)}?FdwyOx!XOVt8QYddJ@dLZUusJ!(}7C)SO2^H%(k)IgOEn9| z%MrS_GJbn|d-I{dUSn{f=^m!ph)XoMtrBKtW_U>Fl?sZ`e$yT)_w|o3d|Ky^{?l}; z%hwR)&x+MG!@?DQPH(4|l}YevEE!Z(u6+kb&+~3?Y@kjxwn;Wr5Pbn%-&I})XJJ@8_I+m?xSIX8*sPm6VP0N*G zuHv;i(ECsGbT)iMpJjP4)2v1vF~}fF&zL1Es-o9ZNTV0_8J(icqxLXbQlYo&4k5Pw zo0Iy%(k-H+IbW&NgnS*Jj3yZVwqw!*O~bV6Ru}qyiFk>HGWMswi{U{o>m3Ul_|E z&!j6GEO6`!NiOSB=6~O^$BqwTOo;ME^Ws;`Sc9~z>gYu~0O?`XHW^z3qPe1q?VocGBeHpC z4{))u=Ss5Lo`u5D`*0uN{>|@`qe_$^zbGnBm>xzmiFPcZM$-U7sW|NLH#Rrto^}4) zt2w<#2ar$Gq%NiFU*FlhI;J}=AiA&|Q|>iliZW<37ww2W*-I(VYuci}bEnx#2oI7W z8f8ZLJ((r47K=l1cn!e@&AnYcVxa(*v^ivjhlhWd?JCbu{qjXv(8YSTC6c9gWCRIT zmLa=0gJ*PyA3A1kKq8Wz!#9Enxke98Ol!m@ef)m0LKR)S;n zXKLP03>410*Mt&sMQ1e~+%oJ|M#9KXfR-k_VX6HKL+`>l`{9Hg_c3!2_nPZ#ry9sN zK*9brwuHeRrwYxZtr$tLHd1>iXr~{#k-SsT8aOcyhfYcS>Opq)SY544ZWngd+ z#>ccxDM%b9FA{Qn4iDFd1n@&r9H{<+9BRPc=?#9dpQMJfsUW4~u+GOBZcjs!lWs9^8uC4v*7((#--p zuv+RRVqsxn>6w{b-6YxVV`Cm}hh4!P(Ps@_*S(aelB5x-_2r1v;2d_zaJg_{f2p%d z)b~1MZ>aB*V(Pihtbqxp47moq4WPa?4x;|$eE@w*hL=Upd4O1>6#riF@j>hn1>{RW zY<#7Aq{1S)^EdwUzuQGb37khTv-UsnNQn%DF|Z$dvKeg9eZ`_2W&=AL8%!YnxV$`8 zM$Pi4un45=ZQPuT3+BH^=-zUN^&|0 z3p35_D{cpy4@dusz5m>A^`6d8+cTdW!79QqY2p@8t973hR8or2blt)~+K4z7&92x^ zhuD(CY#=J%3EXn%+0DZ2BY$Wp4zo&0MYLfA)IOy_g|euut!)cYwt}1*gD5fKoV$`5 zNpE+zD6IPX$-Dx@Bum(Y{zCc4|9GJ+M=)m+^SlwvA6H``S=TxLu`aZtaXP>4P!iGt zwzk%~g!R~poHF+aNra#+VOgS|AA)0@zfXBgYAk8;&4W-+oDbf zW<^{7#6j?s>u1hX`}gf$eQ}3Sdh%WE&8Hwk%~Y|;>N+1=6^}b?@7}`>PzxkyE3%d} zY@2yv;c5N+{llKqcK7#(@gLW>l7%KlnwJV$&$c!>9oGo?!z{i667Cj@U^KK~4kIg_ z5+LuUd2&=_%}??7K!7*Z%~S}75cIrpucy6TM(%hHY?(ziJ+v5cbIt~bM-i+uETg71 z`^k+=Q|=J?j;<{SncnqmdEUn*&9hs-c5 ze?6IXcae-HBXcr1;Rp9XuPHo5&=c6LI^+bLSkXsNqaM$IRK6<;%PZt?0gwo#hGBlR zpj7qi0j!~pE-(MS`O`O@?+~}vf65Pz6`>65kb@;UWdnl)z(Ypy>u?WCUaN|Qj}!2m zUiT^qfx~e;NMm#=uFS&-iMfw+{;V;V)sq%RiGlsa2T*E+*LwM)*FIb*Gt#_L=rlLC z?uQwsB%e47F!R>WCT1gaj{&#`c_U@z!SZ*_8GPLXOB3)U>c*8Fs1U_49eo$e_$(Zj&yZ3hiDUqCLVk8U%~Ln zLsl&Mb;GhALcQdCAaT~iv3Z5L-6ya&slj-DPs1|)C6~{m@<~4EJ zw)QBfb~D=YW9F$Qc{(D|iZRt=a9DUq3*CqR_zcfl|k$-%ol*^_oA;Ek0nfDO?L_!a156%e!?BDm|v|#ZD}isGIYx{z{l%>oIW4(hP8OZsSsQqx?2CyJ`8xax{l8x4g5h|CP7>~<(dd8ID1yf{**Aregb z5z^j=E<_bR3!TXA``GJfFsk;7D+*M*LkB0r*oddf z=EHex7w5hOFnZ21D}TIpY+`2Ap=MDTHxVkErD0!)T??c_nOh_r(L0DSXNYAIdNm#S zd;c9)dH92soO&waoKGA?@oRN;O3ibk8OjG{TB9>ctY_1!+#fXrQ^-k4wGp*3Ffw-M z=|L!!TwuSV2I0#`$O)aMk_H0TOpy;F34KKCXlUq}v!T949;U{=lQV2#P2p`@+D^^P zd}1Cf!VxJ5oElI=E-hsr0d(y>r|imNP4x1bnrTR+ooxY1Tuj1|`9tHq>^9DM^?Sq$ zcWy-4w3^%h7`G7%l|3y@z6kModb+WKx@!6|veo7mGYKqL?1k1)Fxu5;`8-ZqS~5kP zqf7$;4{Fw;X+EooRLLl=FXX|v2=a$EFVwj#jjNpZZ~8qI)+MCXaGx|&wVqZ8r3R(l zLUcBCshLE!Mv1Z6{+8v7X96x00&J|Tl%fD5mpV<_h9)|05d2tSmeJCZ>e&%tmDiMs zTVJQQwJprZPtd7pdkqQS+K2lOR$i4nm{Dg6#>DjRm;}Ujyt9bWu4E`rfBps`A+bE` z!>zWFw4J!}a#?R7x2>J6^!$7cNb%U?vPCk2w*2Js{X|{X+wNBHjE!dv4PQKBWR&o0 z$oFM!(a)#PFos|Tfc`j3uEa+#q?gRH#HjO5%Kzmjd-VGwZt1J@l6O|3?59ct%Av)U zOVQ?ho4*9}lv&-eRt8a00FDTNb86DDLGHGzJ?y%}H?IROY%t%p1td({A$Ghi3Q;2v z8@ii1QB3fDsd^Ez>@dprs*I1Q!Pn>FR#WVWv_v2sZIqmhN>-$KiJXE$Ayh%uxZGk% zjL>pYw5Td{u2BbfYPn+NHvY|s^J23OCyUZ)$>Btv&PgN^$MqmLTR*d8ZHC9TF;AS1?<7*|Bo<6-)4p4usok(k z(?P*u2Lo+008_qjXOWj5SN=>lKD|Ka{M?L6hW(Y%8s?dUX zG4_oe(@^KfK$jUyc>IA{kaNf;a;8m-P5Wq5Y(Co6xf6s}7zZ11oHS#leC}_@CWOx< z2Rt}9aK^{RNolBjT_d^z1XYl6-!VA7L}I~nT$d>sm3uuqhc{NjI_EnYjyKzAuRy=y zL%<*Bd!n{q(Wt)>9{B*CR$f(=-ze2;o`%6@aLHbR7;XSc32Us#aR22oK05w-?$&z| z(1!ndg@hxq;b42I6VR4KKR?Wh6<2ro4a(q#1Syw^5Bp73q-YK$W#v?!6&EchUS8fz zij&>D5CW8~REj{TK3_7AlN-&fnJpEGEEDZ8tnfN_G*ICT+C2FXAJGN(($%uq3~!+p zR^yKFiuzz1CU=f|EMRMio}N&Vaa%#L$FR1(1#+ApsA0HYBonaXa&6U%$ZowfYHMo; zHCF|zsMjrb3lmWy*W^fV{$t5$b*$;Ys~Fab5fO=d3V&pK7KUXONwaHWlb>| z+^S#cG#NGzR?Jd~B@YgGQ+Twc1hc*;Yc#cn(!EGFMZ#UnqP|Z_IyGh)d3mLFH)r&2 z+zXbY5d-H@F!sji8RJok5m^I~jPPvbv~|Cqn-$?%#m}8bhiF8>1(!T=g0ZYoVz;={ z4fC<9^Ffc$11{d&7(t9tQ47Jvoe15fiw>n3+5Mr*ukQrfxtkgpbw!n66>Ns$hYEYS zpgB!Dnwa?`x3~cs>TM;pNf4RG^+=p`NQ0(EOh8+`l!n__5DC$!i5d#=NXqFW5 zG4W=MyQ;;Kqt0fD&b2H}>o97)i~DR))iz4AJ}cnLN~XWKXxK^NzWU9&a>vSb1crFiC%)?>h~H6zKZa;+mz4X0>F%rMW5 zz>%aTCW@u{61(AUC!L0(%PakNR~82|W@C;(kv$s zKB~zc#YHO$ng7)M1c`$YH|q|jFaPT?`1{4S4%UlXQVzW2-CbRY4FV^7ZJhu)Ijz;* z1QD1Ba?liEJ1Rw*n`ZoaMja1X0S3O2e1qVZxqUWad}iqx=#FgM@(nvE<_om@!s9X* zE!r#A0VNbbV*_|mXP61+Tq)Y3oy>kDf#+l{*mhnoqXUgy`w=Ht^t5KO)y!gL*p(GZ z0q<7i>J08V7vE*$%HuWk=e{vh{8Hm??b?;Hcv+vzKJ@EqrC7sGkPbDK5ba>gg zhzCf?adb&hgR~b9O}BI3k6E&?XuHXa4Qpr+i8z%u)I-8aF~h9pfJ3hSgcOu&uLNRc ziOE7a4phlQEY-M0!)-M&m)Hw6R-#owLJwkRH_gg-DhtKckW~sDhJCM=N;3*!>|uJp z=5{fx8X4H|85sC7dgS#_JMEtIm#ys5W*p&;#U_?XD0Nh*-T8G!5BJ*Vv#&i~--&;n zdehQ*Yqr!WTd6{+j*LPSs=yv(%)f3$CT!GoEm=H@!AWGHFalQ)-WOr{@j5o)ZyzY-(Mb6I74#J||ligxgNTj*hegSWayyBCro*;^0 zp5(fs%16TWG^V?*fjJk9EuRt2FgwT__C7j?fbG{d^%fc}t#v{>eLeK_H&!FOU6nM`glu$*nDzI5${3`&d^HhFR^Qd);JHD#mit`!WXDJm$$<>r=@M!7$FFIm;oP^74dyh`ru;Ph=c z;UVe5{B)LFAo9VpB>uO{-6C9-p&zaU3X>q^?=r+?W?mhrp^CRbUb%b)uc+>V$7`42 zl_%n!p0~4tB2hI+B(mc&21k3Unzxk18>?)Erna~bA08yi4zEPJKl<7_#CV|gL?H|_ zMT)F$rRwNyu)r>E&(Z!lOZG8(g2CJOcsq6xf0+9I{%JF;jd=gVM^$MxlFNz`ieE=6 zA(;pInxU4w)-%!EgP$cMIW$tvzL1p-UETc=LdC5EAj2g|Nl8mPyZRb$ES^o$dqPQ> zH_mD!u98F`oSkch#Pahxyc=9!PK-~Y=}0loUraEtv3|tLlV4&12xt;T-_k!-L_0iH&OHI~z-u;kVKpT^klyq!t?Cly}GGT?{y&|uKgoITo zal7s98b=Hak#kgrjt)+gEO*YI!?@CL=u7UcJVZJ%SY{Bpstm0BoAZ-3R>3h9zcNro z^hpT`RP|Dy=nE7S(k%Je>&Bv}go6kw1!H0~-v*+Y3-Iyr7b;+LBIghh0eKQiOJsUl z89&OP?L+J#;a~{Hbc{IQ(kR@XxmH zzkeAudz*62JE?>+8~AQE?y?d6f6fdOJ{awj~>g!n7SwXQU(Ppr1I zh({C4o{m@qR7+3jU%wW-Mogf+$}J)y@;v61Z)-_-*hRq_N|vLbGVe*i<4p%kzpeV~ z`D`}blzAWP>+#4;ucoiqZElzj2Ql#Gn<|M_CnF)BUHr)T$`B|;{8I~1bYF+=Wpj7Y zmoLUHyCWnQ8}OCx z8oKDGIy!^&ZW2zyJKxGL_}^x37O}Cxj*5=ahGr| zdzI%PJTBtnPxs}cnd97Ds?NMMUVCU|ztcrzQIjQS`#MSV9o_q|&p2Uu*F|tvZoYP3 zJGyw<2nPagB|QvH9D!2_Lv!FR#$!`rv};ePQnoBcl%pib03e4yw^^ zerUqF$NGEs`@d|GZ48=fPjEOW*8S2xEjC_IB)#3<{sryB?;9!EEbJqRV7Y()8VRTQ_X49%grT5^w)Qx;4go&CcAX#d zKy#sPBag#mAm=s0)Zw$JySow44w;#z0mST>2%Gd(+aj+6yW70HvZ*&_7Z+bc&pbKU zuHv|Srg~w49{TQ#TuRI9=x8!^jbRquxo6R9#Ka4^woOjaEIlRp1}rY$8CT0n@hx@b z3nb^H;_i4wM4(2tlBnrket+A(8g48oC!2=r6Zosr+yM6J;|)r!Z0Fk9ZNFXNsUF+d zUSIF|ESHwKXbFX89GO~PWwXt`5va`t?t*L+s}RzuX;-u2ooCZg06WG4IC1^cS( zog<5W{=_sLDaMgAkG)&&Bav%x9{f9@$m3O@kICql5oCkkDoE~*wPqO$;*F` zvw&{9@6`NscXz+Gv$JW=;MR1r(T$roC$^39$7d>uHnyeeLGIz; z(Mfb(HilI*k(zGe`&zB?>W|5mS+>=+(911!l`$KHN)Z9s~+|1#GgJj_i`We0fmx zsnPE7Pg>}V%wv6`i&w~l#@@5M{r+-Fv$4JrPlRQ>2X4v4I3tVIT~P4c4ZWm03=EG| zRNhH@w!WWA`~WV|Coab?l6tV`Ni{Ks$16+im__wSD$D%4g~^F;*-CUUWQNCGgq?`p zPL@PcyN#)=W1mP!u)~#bm@V#7U&rO*;v!sh&sspESC`V6S)3NL2w692qZfR(wrsgv z3@LDyN3R6duc{8BJL)!o*WD*On*uSs@HEL!4C04 zZUcjxy9XFgvSb7`l|2SjJ4esFE5p#0r7-;Z*i92Dt?`TWx;^gh{(eHvEnEeK^q_kc zoj_*Bd$h=4X=QZ*5hWp7Ls4~NI;k-K%GTD){n6ErVfc5L!bvipJ8q;}73(!;Aqo_3 z3pkxfAUw)^>0De6k?0)}>g$5^AHFq-`{l`+J?r>_&!wTRK0ZHvK}qQ{+^DpQ3XYIU zT3rz_E#<<(B3YD#eO`R3&!0cJ^(yBK%`Qv@M<5qJ?qRRlTb#I8UB9Nm5Yk5; zw9MK`_J_FnZK@z9R-uq;qHJ1S18j|Z^ZoI;z%O--Z&NpJD5_R^yr;=MdrRh~qPlv( z#Kg<|eJGM4fDznR=~^Z|-3D%@T=H{#*vj)h(z%Y_r0~>!>*^(;(8PLr7vK?l*|bEE zOZTkSE?e4$jXlpRDkb}RrRNGEmpsruJTgjijE!rRS4esy>@>ixrKKVh^waMZ7V^hB z8!@|>pTD%Mde_|z*!~e$TAD65^Y{At=S_U;H^eO&&TCh%dSFnfdkFax0GrPvAoSto zC4HHzJSV525hxMKF=!d4D;lFI8$iT!4JG*n6BN#{`2Q|T5c*> zkRL(og;nrQ`g1}s-MVbVmj-2Pq}(o~?q;K25^6<)Y3ZzeN)t1F@9^qhbbP;0XuDzgY)GBQ zDk-szA-lqB#eG*{R$Wx|F2_m9xyX|tPm3x|zuW|iy!M4Z{b+9bAGzcZ3BYW0rqg3r zx68y^DuvV1Yf1%*UJO&HArMjmYnRB?HgBn`M`aa0XMH*9No7{!p2c_ECC+7M$WZ&` z&+u2gRkU^XUxOs|;GrWu5lXToMPppRm4DBa#yt8JE)F@jeq5N0^J2gA4_%6+bj;aS zjk!17e+H|GztWyDEJi1Ea{Kyg8FWf2-+dC%c_tfDfR5$nt2& zNbJ@_{1W%fB;2C^KUKYr%zjyLDBx7BNKV6>X&Y8 z>W>_b@v3lMKEBl|3jt0OwXx>rD7&n-o++W|tB89!l8Bsl713mrR5e%032OduR$Y^! zgDCl*Q@zb(;;gFHjm_0D=ja!KS!X0i`)SdB{#CLHnpH_qhf1vJMrw98YOYuUb^~X! znv3r#Lfj)JBt-L3Od+LhurF2kb3AExH+wX{z5Q2th5jj5n$w0_FovMzC?=fF+CF60Tc5(T_;F#WRe7M)k6vY)5;BORR z#l(Jvh9(J7kZl%Be(i0*rP{aSURDhSjZ6ELzuS0t?&&veSN0;!^D3HxeC}q#r;|dL z$r)qtxbCrh@lC{6Kmp}u{DXonB3#OC^irA)-d2^_(x+U#HcxeZu(n-8|8yy}HA(p( z%c9fcC46xH;_mpICu4L$d=WHf?o6*h&Z};zC%ZpLuX8FjmmJ_ULoMqYU++(gCyfRS zYu_5QY;@DiGWWDE2xF5_la5-CQj+pJb;Mh%KYy6Y`G~`9ec0@^10$3LpIR363bT~! zZDT=Y1cc>wN7)%HIqq7B>hLU{wS9Mfma@>e=d^Vh%zS|=_LA%wRkv?;cC59zGw1H2 zFC!q+a8bYY)60*W)tNxsA=K8v1GYICIW?vHa0FP87+7oDS{jBkYu+9kw$F~*Zw8$CT5Y8+z2t}6r- zk#B#zuMxvgWBzu>{LCN9>_28k@h1K?{X8i*Pf`k(!wX%;wse`#dOf`wESq+Da;A>j z2Jw&26{v+F)wigG1Itd=C+#GB;@-YrhFcHWzO-iFm64Wy<5MqOel(JzeE8jeX`sG1 zG4Y1G`!Rd@(XuQXN72axU>9Ajl|r+O7nNmQKSrBg*$TfR*2SrQ;BfcuEU5XeW%rKO zH9M1Y@El?oR#{NE<(*BaANK4Nz1v%U@pSIRlUx7^n|}^n+n5+~eFgOXRDPJlLcfxX zre^!)j1Hgj%H0K?=I9f`kLl?+!8>ywn8#aC{7(ciYGk@Hzka=%U9m$D6V2^<@x<{!C-c~Ci9I+@UO~G)6C+m-Es2E;IJGgU z=u=~pN|KYGUpsdng?V!R{KbB!zk|-MD_5Sq<;)oMkr@1C|BI{qcoa7zX754(t(UVmZ-v*VVBUMs?5JS5YjWXP^Vcc+A2hENZ z`3a&-^{oVyvKST6GOCudyxV$xPAxVw%%Q86tKS9Gr;;0z>u-H6wqs&}|tb6tTblJ{ht zq;G9jwQrE*1f2^zW_Z_{1@3WV^Rs@w;a17I`$-1>!*l2Pu#*?Rs@*Q(VCHPe{=NZj zvU47~cmOP~;$HGB^W{`mAG&q@owP#IQ%A?U>(&oI`o*;3X@(;@3pKtlz~P|?%6CSc z=BRIer4hN4bX28E0V74-qxS?g%_Zrw-;$C=vzYF-)L0oA-EU2%p5MG2{Pqd#HAmc{ zqr>}56mbSYP9F1YPM|N-5kd-xGcF@mH?SV9@LN4mb8;enl|6SHTCR2Scy)92EFv*V z^r?!9sPBx8l~vu?ZK^jMAbh!wdErLVX*7Lpzi@`us-fCbu;oj3;84a@%l7#;a z(D3V>bi~0-QNGh!ZoNn}4h7%4S`n#80hGF7o`XC+p2sjtz55?k~(BHQDcdL?ajq|S8PK4;o%2RlmzYkv1? z+Z!(@2uocJLN6Fwtv#WK!2gZ)wQGEDFnxS+myK``PEPacCe7Yh2Hx+Zv$Z^0ZR5s6 zcGnKVxR3DmafJ;H&m(Sea;7{)I0RaAmlYFMAaia}sG%}N%#r3-WhkvUohxbY-hKDC zo7--SPNO6L7Nmjk+$RaUzwCr%ds!f$8X>@2I`_D_R0nftm}ZIGpz$C!Au+K_x5^uL zG}w8i1dlHsqy}F(-aqx&wOsUgf26_;o?eJu9bjl%hzbr~3Otx??RaRvF3&34mO@09 zy~WPBcW^LA8ce~7343tnqSQ_rVrjk1>SuCLRom4`N#7f`zER<})Qx#wwzRf=ydB1y z7$a5dOu@v7J{rokj%`GY*`FNL86FHdFMr26+2KkY(X4q0W2MD?xq4EH1W5|F5LcXt z4F-$0x1Y@0`=ZV=pFJfjD|TyZ>z$7`wMUPs`U>>QRC*~OWI%J8*EJK#WtPjHPV;y) z);W)^d3E*STLk`bcNm0aWccNOzG7oztL~KZdz;E{X>Bc1bxdWs`3r}Qt!vP!ga8F4 zDC4w^W8VZ>UQInC$xd~C=s0nSDJdEQ;o#_~^Zmzt4$Y7~-iq?uVa65{C8dQcKKeR3 zRNG6#w@Gi_P_G(10cOHDDO287>ga`nhg6jDW7E@DyyG)FXG~iJZe87=Pz^{B!Ff5m z-NK;;9Js%akiwFZ(wDWR-44^SE2n`7(lP4r?8D=&{j%L&^vXoY1?$|^kb`SuD+WCv zFNyDVJdK;+3QO1Sep4{Z%f7E1X5eG&Huy_v*B6L>a$Ok>@LA}|)Cj&A>r8r@<11O4 z6xKd0mf=1MFFz@1M~tOL`i^IDYI2m$gcI<)xJOzW$jXL%bZH%9XFeLmb1+@=(r;_; zrwu5(pvB}am9m}y%df{9hv#2dh^6>;q!tA%yXFW_V=ebWOx>bHAd0153;4F(o*+C{ zWl@gJ!!t~Y@iLdNGg!klhFNa(DvHAWIQmb-vS3GuNR(7U-g*4k4d*954fia*UfmtWFrB&8HNcz%pBdun z>PMm4>9Y(5i>lrQ8ojV2M7Z5y80Fv`$lE0thesWv?0wOF7pUX+N z%95015OI%jRZ&!Y-DO?MNo|r2gg3aSBk%N3du44~ z*FaJ387H_u3ASrt)qz3j=xuB-vcY$yA_!K1FN;-X4dfqO`H#mWD!_4{cs`ygxwvC{>4jW6sR}`t5n;2NQ-R!BXtm{e(N54v~#9Tah^XB}xdxk*m26NRr zTXdkWPcWH4;9`{e8}Ey1PHDdla4+LUL|P~Q)GVQCMyB-F^70#+nyd~EPDG0$9zaG8 zPX-aJXCCW?j!x!;;^Mw3+sewyxBmWKs#%X^WhsGiW_)=WM@dNuq5`X#0G%txXFONe zL!VGuiI|yP0j19M4dmD4dWTPWMV>E+H@TMR2lAj3!uDLudk2LBl@k!Mrmtp@v!CU0MyYnpEum9I`&ZqPB%x`aTvuB=} zxt}}My4JO>D-e+%C2D=`8sep`0$ysW1Vl|R?O8@fIeo1YEag6{j&O2J0{CxkjujAe z4~EY>l}z>1hd;9qf*hf__K@##jXn*bO6S!BY4%Jy=+bZCSfj96vE-<w~C14MIj<_k{l8ZG3H;9E8=b=dVwwQM0d0^wz4Bvbb#4P2(o3NH8%mEsopl zpU}RzviN9-=Qwjb8(Wz3EIT3S4+3H`3P@Zg`>tsL0+Azgo^?>l{^PyV$Go-LZ&%Qj z4YH20h4}bt{D{|IQUxzpto`7{uTd~>yWb9$LFqD^S6;t)!5bf_pRnjGvxB|%kK z?fbzB?1!HmvzR+;cLx#$6ViWGRYDTb$Og{{M>m+r`~AL<+@8G6>Dy^fgU~~CHx6LIq^fF}1I(Z{&WD@y zwf@RbgYodD6tGB;;`xXmP?YymFwDa4pHRSl#V>~?P z<&LDp37_$S=$xG0dB}xqX{Ot)Z#}%%ok+>LNmOWnbOK6?j-B2A#A_zg8@qv%-+2jY zV|nqb3-PRTmdY4e%uaR~efAF@q}{r=;B#%QOu)ceHEwu@DJO3&d^nTUpi;}N3!$tY zG)d6lua&1UrcaYSFdQ$}_!9#W6!Ze)>LDcXo{Dm!DNb2gt(pYyN+t=o%Ssl{yUffP z0Px8pGh;F`GHS3tJH0d4Zr`d|<)7roR?2WO`D3Y^QC^m=Sy=I-Akdr_o5e=EfU-sH zh`id^*a-T8)EiSC)Dzta0&IF2b@mQS_lh;URPNmy)NesCNWn1gu)NjYeq>+r;?DOc z{)bC?xU^p|8oa~ei`sxlF>Mg>tuy=jN$H-oM@A8$ar5U&i;0?dhNh-H))isDpc8rT z&LxKdR6vc`HAd6!o}oH$(Qf{3Z?1+g*QCAZ<~fSP^$VQ--N%roL+F(?Vj{i`ReoMz z3gnpYn`ts=`wy7DwHw2>5K!CL+vprwdbIuP z$43o~`C8=U;y)odGpO|O;XZ9%IfM!4Rj8qklO@B`;8mjLG-T`Oc8(~_H|ZiI8&S57DZidFe{)zYBO7&kGHNH*pJZaAAYPjPyE*I&| z0uO}S3eq;G-zFAjFra{^Vi}ncY&`mi^-H|a0W~r473fEK1#|-S)?!pRKz!d5S?qK* zZj2arpq-YNm($oDVNA+^kM)3({nz(IwXkLIC@V*IlHB>uHs2)QNBzn7)>&FcMor?) zs@Nyo5BByjeVc87=i%^@GZ3YsLakVB=klZs74^$6Q#XLpMo7hlBFY(y;?|jFP7!Ne z|72A~+jU^LibhcTe^4*Bnb)i=?q%@g2Lg{nx(AE#Ivt$Y{c3;JwnHx zy>o=se*;lk!bhX|e%q@Us!)$v%Ly)MCA^;Bf{XGkl?e&*;(JJG4LboF=e*TNh!ZTw zDJ%dCuJ`;LUx8*4Z5}04TwJ^)A+|!1kWtvPn_tbe@IA=~9pxo8wZUaqr>Fb;+ii0{ z2PYw<*K>dmu$#LOr25KP#h!e}4eTO<;F) z6Vi9`0J80Mq)o*Vsm)0Zu3meK#|ML&P^Bllb~Od(EP0Fo{sNpxQj|@6dLrnwCA;_HswO@n<# zGc%PBQC8$qwnYuf1mbd+{}_slYC@E`?BW=AS7qwzB?Mhh$D0%e`DaySRtqt68J5(F zL(4(!_q(K-isp|D$~Vt)co{M+SSB zs(pKR$pJ5fo{kLXhiF%=(U&Pc-LajpcBz^&bNzRpC4?tsK7RaaYh8%mNSkBpj8N9s z_ZAA{I<%DbjY>LAh;wwDX1szxQ66Zge9w_ES{a{NdEe1>*Jg4|wH)=c=#;9a>hW#5IePW)#!RgE~10QkOAz-HGA-g^ulwWT@h;q2wh$Uy+ z-VdHq5vo||ml5>cJtCr+w;J3%)~PQepjvCnWuW0F^axLFL%x3X6ly zG|Fd07!N&1*^4eAVD^4(O)AlzA7&iC5mg7qUa`P$De^4Ab}%bjbUZdk5*hx*fE0LT zG-(v=CSPzI9uOX^?h78wSB*0+mzvt^)&LRvhCTNv9uL|qP=xzML_b3M$mqx4Rwb>j zLF)3Wtw7;ZSHF5kIe2aFM%3)(_^;KDN6ETDsQv7DCjox~TGNXZnXNMoo;nS{R#1=k z83)Hkf0kt!>(tbIB{>FttlGM|)6fReiy6D5{i{$BaXUJL?Ex@q_8fTQeVIrt0C|>M^(Ti0M#DZ=eG9*7scw3{k zt1G2Wl}VCW_s(791C^XTrPGR|Uufg>tNkr5McpZ>Vv{37b9+IPVhA>*iK~;#4Igy$ zEm0ZYYoNnqBTc2qLYnVUZw9+3+XlwpvOD{a;t~}olc;VVtv~hW6I4P>%%srkwFkcV zV1S}~^O-7A#aDFC%q)@pV`s(w$fw*6UV*A#@yPXebD8GQFPhjx5%nrjxZ-A|{k=Z8@priyaOQEOaQ4@iV`~AJQ29 zycOi(A^cL_<`RH3KSGRdz#1*MQ9p!4*46chv*6R25V>IB-FUOIx;nWw`Q3d>rz&Tl zi&f4goL|60R5F3iWYIJMnrn!O-_;t~+C~VK$&A?azT)8aW#{SG zXZWey9k)h6C5~ap^}ll*XbeO05OK z{F17--SV$MTK0d~$%WGi{`u7yV^IBml;a9hK6Tu`KCi3>kGWAOXG1<2)^*Duqyc27+a|!XQai8~<9aU|XzVuB* z6CbIUx2Sl}9*>fs-gZf1MhZ&xXq+u`{|J#@(E-VS$6PFK$LtP;P3ekGoGp*{!*4@* zi6M-NBGKIVats6pmAgN>>?{xUKm+-#(#mSdYIjznRhHK}zg$>gpo;ly_fmUgnOi{K zJSE*&a8wn#l2XW`w-iWzel8Wic2p$Y9w`6T$u)FskbgMAByJTzOBQx>8&~X$_m0i{ zhVn8ur87IyZRrtMBVHwnWVxf`K+x+f&d5 zy!GhOm6zr^6C^n~Idjy*Xks12gsUoKRy!-s_?*^+9M90k#@d))AN~48SUHXe=VQBq z5RsC43C>ZHsMJcO4pS=A%+CT+3n%GK)A;>WeoXF1#~Bx57?%j>ZlkN}q$P_~cR=I* ztvh%66FG?(%G+2~{q6`qAt|IjIk^O>aHt;5Y;m(f*UEDc#Ow`U@ly z0EvAhLL4+*Gf??GaduxO&`4ju;Z0(R<&{+&>fQ29YiqpS`F;fpldcmp1@Vt5zo1Cr zx%b^o)7n1tzj@vO^ZbLd2#ZzYjw`TNw-)Q3O9u>E@kI#5Xl6EO7#LtNGczYk92L2= zwYBxJuJxrcgG*bwvF+#2@rL2S10z-0B2*lE+uM#lK0debclP&PeT27zA_}`98-zo1 zs`fAsfjD<~GQz1*nO&d>BlHw82wANAmn(osq9CL*KTl7bDXd23nG#p_V-K1P4CJs1 z@Q2lfiiKd{M=GvjT4?p+Oy;CiCsPI#S#ZIx4EHzQ&i3i)a#oa^7Jg^sg?Ud#);tNg zh?~?Tiw<8YI8GWF^`*Sm(t|?70=HqZp}d?NYDu{*^R#D)#Zzpuz&pSbVqs(Zv@=b9`Q%``oMP$F}-$i9G$rxqjmXkH_>R(Z*Cn)|Z;;uou+K2(RaDkaAYh+9!{ zZk%0lcNE9pwzlpyTQ0?)l|wauB;YGj1c8v};6V*|y>RnL(D)h+I60$RB5WgCT0TVK$ zDkU^l*I+c@djh4W?wLhU|L$CzUYzxU7vhFj<-T)n-PmX^`P7S_QM8Enf8&$qTXT5v z5b6r1ZC7Y+$`IYD>FN?a;3d-6hXQk{-qlJu%D|v|grw|wtKpO~+CtLO%s}fSWTHaZ z#+S!XQnHU(U6?#g&d8uGQ8Z5J^MZk(e9X?qWMKbE`*=L@%+ba3mNx`4)s2n9EL2q5 zXY?FJ_4`B|&zdJR`T&7|!%Thb?*H(uVyQa1x^91psUbPm8!R7Pq20%0QOOn7e2-)W zrOXDeilGJ5C~76=*Cm$7D0MZZntkpQ?VTuc>8%gm)A}kN6D^A$)iW9&Vquxbt(I6G z;zdsLWNVB+&x+0-vtDTrv?0A(%S8=?MAa z5Pjnl>Q+YEuA56!^&TQ*fxhqaU**<&5Y&4PbmNrmpi3te%vP+dUK;8-kU z(9&)`WV5*^)PDy-+E3@E=f9On zlbCZPjkLQ_BAwegn5?kePYE`K(&oFn=rz8d+MfRE$3{KIdiZU_Z4Or$o^!KZC-W~Y zzWNDbcp%R_iUr{i5i!c>6%uZ7iP;AS{iVGx6$=pt%(nC*%2ZxzNY%2?8_BCqE^oc= zk=(s=*N2dSqE@*qVJ`g3@rR1}v{VTevmJ*f(?aQ~#p#DkDgo^!-%jN3HMOBD``~gv zs;T*uoR#(_YS3b`TsEU&v8RpsrvDvb<<5!Q(5K@7cXH$!J`W7g^XI?csJ=lhPoO(E zyz-2K;}SH33>Hiaw{X1rds?j3H}3M7d2b%q7*v(rgTs}>a9n}sI6;BG@re7wxb$`O z9s;&-dh4rZt4uanBmlveY~weUGLla&Y8A7E$SZo5%~QR#`#PdbfEcV;W%k$EWfZN* zfO>(1=9Ggn*@Lr9f|bF7j_#J8WvF&j z*qywyshC2A{TOGZNNt(wqPDE=#cEXhuqWbTn!D*g!9a*5q5CWlJN=kC!h9z`9%FUf z*VnH+9w``6k}o6;tWscXdR#%rzteu@>eZ(k+74udgl|X@KY#voyI^b&=W8MIpH@Rp zM+7ZI57{d95A^0_b7%0%HygsPWAy4rb=^B@X>WfmCB?+!)qT}bR_fO>1t2sFVKldF z?_OQf1HJNB-HUhG=9^ov2TN?}NrWOXb7U|`Ni{I^MPpj!ukEkCwy+@jrLx+F3B=@I z4ZC-Ti_Q!9t|QD$+9Qz6bx=qXOEGIv12*+lOdR#S-9~Txm**&s&IMK$7PW*@<{1uV z8TgTre^~i4HBUc5OT=C8cYvRwIv}z?o#Ma=$^}JQ=Fre@_Vw?++nc~D*dGeJeD01f~Z?1ol731T(ebKg2>(wM()W<|j z&3p|CO0T2y5+HbY&WJ==y;(~cHZU1!P2l9=LH_m`t;+PBTe#+{%!&V#A1yS{n74n> z9V%`4TqUh&ea(Ffjib~sa*TlHyucRgY;WN_Z#+=vK}t8IuTU+L{c%N@de5P zysx02dmBjGT{7P#ghzOd_t0U}Nu;LIY)A5L48|V1d15#g1t+yrJ-9s?LozTJm;gmu zRP;!i;rTFX?$?GQFG(|!ZCx<>&n*oW2RD0)4aQVuj=JoJFTaLGB(pW9abT)2e>U1W zcIryIKAE%$#VFNZ*{|55SWC(u!d8t3oRr%1oV5^6JXlpalz|shaiR1VAbeFH*845r z930L^{Rj^BS?oz7BqF*zHr8OUWwSSw1WwTuV0VK-oi(R)n~8~OYN7`9V8&koABu1u0FUSertdk#mp?@-1vhYqUPB(q?M*9Q7ZmNXo^^U5;L$W&E(0^ z&e{$0@3^_SnG^F$XAALxg{BJ|Mi*>iNL(wdcOCc>z<`t!*b4R%E8q zMfXI6(wawlW=v&6zd*DQbVxe7xxIgWPwjVe^J`mM+p@+B+EOT^&P9C__IGRMG0S;9 z0qQ;?YwK(86X=RdOKX7W0TJ=+EE=#}T1x@d#fQ)vx+eiYeVrij8o2In-W)64H8%Y$ z^yB?y*uOs0DfRaCzZO+=0rq=ezqSsP&4sy-(d6axnX7?@GwCyKU$~iC8pW>Oew%Dl zfyMrQ)#(rx1s4%rb%vOTf$M299Xlu7(eZ6zr z^ePblT$bW$3%FO{gDnRf#>T~=APA@xhF)wxnp)SdIF}-PrY%TR=o(kHnF=J+&$jkw z1?V35_A%mfY*xzXfZSpf4)pe_G$>#dvMcxEiyMSF%tlqJnw@LW&p&-}IBZ9xErbw> zNq$*XGo7hrQ*DSaJeeu`VfJEl!ZfR5ivnMfM%nYH>K!pYK%2aM`_n^?Yyy28+RJq=m`+8(8m z0%RnwKnz`S{MRi?N=rXMC*Eri73UXdJ09_y1)|$ilEN%Qo1@+w9UNZhFj-IGiTfIx ze$PF(TPM`#Vnc+7K1Gorj_U;fm?*d!pbx7=p_R|EokGEic zDNBw2cB4r@I8pGBCJtzdKUgeNTg^OU(%8dDhYB);R3A+^DJ!<7#0SgPeLo@}m@^Yp z9vfh+j6XO(2nOMPK7OtXKIp;Tae;+>lg>jflj!<}e$rBnduM08uWj;oS}=VIl+PZg zAMG8DHxbiRV@28RC=DXFvp6p{g=FhHVQa77GT(tkWnf_NmWOA_=^VrdvUP{(0&@5t zd~~{Kk%3@x!RZ{zB-yK3ULr5Z^@N>b@8Eu~4zIP8TXAsk2k8`kGE5b|q4+$4C z-q8>liUz+T#rin(`Hwa$(n@w$q4D5-S!M~anspV=E1KND&Y_{-Y&cS?d=)juiL}jt z{@{;&=IxKD{J>*&LE?tU8SwN6`oa;UzoSw7pbYKA(8!P`6 zx(CBKj2Ep>c7d5ih~Rc6cLkCQZ9OVPc}xSe|ONUrWtsd9gij2|C#Xc z2Sw9ZJ0^A2#=Sy=k3EyocM!jJzBd%MajQ<&?Ju8f49VM0t7hwMcc@EaGR$Q3@)sj#>-Hajo_$|HKo99tJNT=y7E12nNjJy$Gl~7TD8LW z*~JVMm9CZ@d^-wLfUWX~Y_z{68aEtTY}wI^2CW{M^nJBuH&PyN*D2j=JkQAA(Ej_) zhL=XuuGt-K3OwfeatUd^+IVzRPE<_gjEXobm|*F)s+$vAn{i@>XoBiKP!XkY55x+&8ao28l5Z-k19?Rf(w#)#W5x!Cn5S) z>>bA}A8Ga?T<_~x_2%Og^@r%e+2-e;9&?yHW|jW(H2A@??HKGD&wea~MgqLlsvOpf zY*{F{01#PO3w0_xJC%W%M_-PQD!JNxZ&pUL!K~AGzSXHJ3M)4^D>^#+`lCl5e^dL0 z6)?f3Vy`>se!Lc;C3UVd3(~(uV-}C58$5qO`tA-i{E%|>tzS77hGU$?S_jIL@<4Q# zEQ*h`JAUi=km-69)iF+0Ci3$ZJ1H=eQ1?fjkLSmnJAI#|Wq4c+Tr&CXE3Uh0AER(Z z-q?C&1i!q%h& z=1_WRbL_R^B1wyhO?>XA~gXeyxe9;!4d*&Gduhi1Ria&^bO6=YWU2nW~}zV~CR zHPVxH-VhEL^xlgeZ)ye2y*M7sp5z~OBMNBnHirC@ zS@HizN@XHHC`xH?YO6K(y>(t!3HCF}h0-jM#+86`g` zFakMcY0o_#SE>l|_8#+kOh{3MKWf;aZ~pNJNn*sp67ZPkj$*Fri>c_%$Iu(gjT_nq zWoY>5tf@yA-#eQ1AB!48Sphd6oz0Ua#%0EB7jCWn$bkEe@S-<)`Xy!cw49~poJ&Vc z47{3uxd8uN0e_9^;xGR_43iuX_Rg-Zph}!QMB5^j-kpn`X42&>-diLrZ0f$8jEPq( zDK8P*yYoSBv`{>%Bh3DnwP2K$kX#VR4Im~M{&hJ?sz}q2Pq(kwX}I0kcC7Ms&NgS_ z=Nd3clg0(v*MH7kf>$_@Q=t5@$+>uchn}(YU)v z(XU*@(z6o0xQg$;Pj#uZwbDL}?bxlhwP#yB}b92802H=Zn zEk1>YYM4{}F)>fkZr*@R!zYZKixu*b#j~>Wg*7_3lta%Ys5AV1L}P=HHVD~+IRC<$ z*u`&O`h7Mt|3CBhzvoRX{6CFdChoocXBJ*O%R&7AB?&C_>Ys`C=SnPB{(p0!ixt5# zy0g?LaNnbTvA9pW4?43)L~c7Mp<|#)y*ErIIyR@Lr*CV+{&z502oY{(8ig|V9zRa> z^)EB^g_vLJ6ctRNu~ezb$TWWqtj@ET8* zJ3f9B5EE{q({hhh3;J~$3n^uHMx{a1TRW-wzlrtVpF;YV5tE>vq1N2NncUs2 z0_Q`s%BIL$S4~s5mFENm+`9xU@;XwKqJnJ()C=27X<5y6b(NPle4oBy1eBUt+T@5X zqz#(=X!a_~%SU8x%BnEQ^%k8!+S=XjNg}8s3~QTP^ZWN5N4zh-rkPY}E@mPdUPnhu z_nB=OgH7*eOY7t3BuuYTj>Fa)%u;3Z7uZ$VpFD9uOuUF+5lQJkDeoR!A1$l8oMzM}D$rVF=- z`Id$=T%X0M1o+!_wn<*>ZGRud1Sl`_*}+j{1w2>zv9ae;-hAeTN_W1hWD-6E_oizj zA0yb!r9?$@#KiVqaC4u#ZL^syM0435{njqf+MW{x-9u5}kDZ*H5b;3|YDTG$-1g?C zsIL4sfcgW23YFeDU)kE(35c?HpiRt=|25m;)AU(N#-jKcq3X=!WXuUjn$ORt78W*W zr9->Djm>Ju()|3oVS5Ml%bKS#4R)X()QlO3b6j8lPPWwIYYxHPyBe1f+uO!??FI4W z<>`H@s~s9*B8JoZF|p;~2*XGhM!ED5HwhCj7NjI&dr^;pr8dvNO+oQG=F=pUoqX$c zMYXiP^Ygn0L^@O&z+`3pNJjBob93Nv)0uH6ZJ|E|0|ne_;2}vChKJm+!vV%JyD1?< zNGlo|CevP88rjFfhkx%D{0s;8Jfm*fur}C&1Btm5XhS}f9!v?CtQHKw^xPyb*F!RK z?)Lfvz-P+3?t-h|NgOP%{Wxz(*J`zZ6?_GHt~~eNnT;K-;<9{ z?O)%0z`<^=+qX7@7kXCK;-w0`wm*Tk{&eX~~C>5P;;;Wu}SQ0d~Am#i?gaeb3 zl8nl8b6C9XzyHhc5yB%*YB^vpj2cSzmDYVcKb1H((gu_nvv0!N)W8G za?s=#KRhg3alH3fFv2e78DShTpQL1<)%hrMK$!om;b?aDb;0w|S@*?<^ClgXVf{Lr zv4^Rd`nFG~n3<8E#+ROT1`igLB??tZoC#ivyHFX8&8j?jtCe!BplJOoc@u}(&X35S z$oi$_F9mkF7W zQ3XV>Ca+>pHggerQ{HJ~T%=JND=M(fZ|^JV_f-M7yg<>8wgN-qBK1W48U}ji}F9 zSH?_wbZ_Ew%sBN~6Y-5&FPc9%AA5R2I`rnNYJ-rj(b@)#L%pX?1PG&Etd=}d!LIsX z#lFPdNQ_eA-EK>9DwFHye0ysqg7v2E227xZNQ?L1E7+d$`vEVy!BfZP9K7X2Ek`MN z4zecg9Ir+#(qtLWXO`Oa6DWW*Y|43cP3dGJcM}rXIBTgvvWrXedk`i}b91ZVLt2x; z_X@PCiQ?c|@$K6;)7d^|?TJTkBHAMuRXiKKqS9U9Ypjo%uLUeF^=G)YXz#5JC2Zxs zX|Ri`L=A7)SsNW6q@rezhvgJz&+*TIIZVI2_Oe*g;%z=KCQnWs@8RE0nD8|OdltO+ zLkTPC4CcY+-4~=*9`DCmD+b6yL2@YyX%mzDMByqCe0+Sg>(@Kmn8#z;*H1iXsfdW) z0@}^I*V5d)1CTlRCxTZhmE?yHo<{ATwK3ilxOSeZnNale3&ADINwcGP@Z zAZCa{>L8e7n;Q*hF#YW+<*)z6xWhRr~A3a71~X%(p?6&CU=FFQ!aY@Buff zgUY|;#dN?PcoDORq$vcS+Ctr-=t;r`em~&Jq&cHk(gZ0M%1|tgkXG>C>n+e;CWHV$p+Bo!v z^2a6*vdY#nPSpbMQ-)_j{lay+gmnnb$F0{lrfzjxMZtU-nQK|Gw=$OExg%jJu%uNr zH!RuQ-rT#8a~JU4#ZFTLKuOVj7L-@)kDAJw*)-StgUfZw+|ke()JKT;y5TyzJ z;To1^rLBDp3DG+Gba*Fe){NJS6}jLfBQ73iK5i-K%D-A=w=$CRE>C^@DQF@S5D?rX zV3iVhfOPbR8Df@fyEt{_NUcp6>}1%BmP&E;#d{`{#KV{~=`T5qjg2h@^@^97>H8Cz z@_qQSpkJ)kVii2_&mu->qC<{U)ZEtIS<{Nz+|eQ?spbrKg7Nbpi>c@8%38M&8wv`F zyN3=2kL~6=)d5;Q*}@fTknhJiuCUsrE1aIjEenCjO9xhO!x_l@OUTJt$2RMWzP;9n zX>Ywxgo^~Vw&vCk24?#5^3(Ks$Wl?MG)eWmckmAcIZf?27P?6{Hd;pj3#JLjXT zHM_aB{e^g_H&0sWVlnx*hooxtP+uHz;<~z|s`4TtZY>uv0l}HMq`&IkYG~a&d}J?U zqlhW5)$kRH+0O(4unlnqk2bM;Zo~V0n!KH1`?a!lV&-~+K zYcH(|jjesr?Xe!{@7JDoDQK`W>wlGyfUj8?R9kD4keK-J*!BpMq0o9?Oa6?Rom||q zgq7EZ>7P+_P<;nmVPE8^*JwYe=d(4KiFS->B%6;vP0h*@7c%2P&l9Ew5*p_5ix)32 zkKy}Y!+b0P*62M4zkfGGD}4Eq`^GT4uu!V0sc8vWwEq2h*}EFSZyKPQ#deT}kmDIf zAtoYXYunz~5D_uV&f$hV{U#n$x0Za*=GRv>kOAmBrury-9C}JASK2vS5?lL?u)U*I zlk4G-1XPb1&sL1_*hWk4JbbvYRotd-d{C68df$W7@S~Cvm_0R!C`g!iu31my++WAN ze?O)bV?Lp>>gWCskYooJT|ZbhR=aCiAoK?TinxDA1gsXci$&p>*raEgVE7XRLhEsMIe&H-2P&m_c)08te_2d0Eatl)X(ZS63Gj)^ZZL=#V6}Q zZU5!gf5(#aKFZ5*23@8wI(o4gf?LT4PDG}w{jLb*yTIJSJa)yz`-0Q6BO~LVE&lT5 zG+oQPckhI@L(MRCg~zxm8_Xb{=n*SWQ)};d&WG~#mA1ZR|J>z+Ymp2n)sWrljpk1N zoM&GBJrM5X^frQf_gTmXFE7RAT=B~y+p%3%PdZhctyuLbmg3!}s zhG2s2r;MCjS}2aSYYoJCrw4UnyKpWpJY=<*k+~QNF0QeLt*X78_Ldvcj2~47$GKmE z-2~icE-pL41{UfvoA`vE=Bp!#P4hzj5Uf(%$J$-#lZN1bYp>A!ZF*MLz@A>1T=~C( z+SQxS5N`fLuk5_1?)uHl6Fm2*uX}NCPfkq9fU(f$UM&Q6#)DXxm{N9jl|8i5)7x8H zy$K!_avysVzT(2Mja-zmeom=}F>`o)?Ku&VM18#%O8p>7%L$XDS+WFESlji;Rb*KD z$q7fWsu$~QW}Q<~Y`+aD@D7%4oyk>bJ4;7&)HH0e zvX(TM0S^%h0-hVn5)uK=p5X-R>j_t_{eCczl2^yRcyD}Ywj5$&V2_cr5J~t2{P>X= zC1q#dyI=G%1M|2Md1L+aok!TJy3qN#m=xIJ34x%qlhY$)Vw_ImV0!I0n|eG#=19KphahU{EmRcGc zdGplU*fKR(@UQKy8y|S`dOl97j#du&pdP_$lmE@}O=v{ek00u~SomLpPEHl5Ns+{~ zd~aO63@tMu>faT-lel@~J7vEPUC0bz2`8#_>@Jd!%1NfKJ?!gaaybQlIbN+6h|Mhx zl^KMM)8{p5_;s?1-e@cDaKro&O0!umrNm6Z@%r=_i*C=u9nEu|Pf(E7dw->GK!!xd zFIH8hk21wIC(10^NLNw6FlQCQ=9)JyxW`5jcRZh{3Vbon4G2_QSJ9*k@tk#QX=w?_ zH84+$`q%SsLZ%Dl)@r73Rm{barnvS>l~t$-Kl=M}uVlnj8Nc5bW31A&UuJpM`}%;n zzj#uOuNcO8tS%VEr2zV^0YtN)F}zwdk25`PF>MOjSdU-)!NKK+&%HOrv?YKmKT1b$ZIQt#ycMnQvuS!F=@C zE$4i0nfh_1xAn}-=SQRKkl-_ZnzEFw(l4;Fv0*goKHS>eSit zSQltD^bP31yEeCTB_EZtL0(5rN5`{yBSKPCG-f^6W_gQkx`Rs^`m+MT`8_JC>hmjRW5?1*mUc}J{NIk*yUrK*i;PUX3L8ms zWu;Ic_H1f8MKB~uC#R^hv#W%BV5Zts{&mND|{zR90Gi z*2b&GpCXF2dPrBdF*)Vg=I5tEsc_;& z62&eEhrrkvSHqWdUe(=H>{8`n;s!gw9-a}dDm;gy@$n^xBtJ=RDsf1)JfF;F)AMQ% zh7fvf15$#=?_c9J zNCeq5Qg6FKdr0TE!)-{Shlmh^C+Ki8_E%PvdF2d!ycQU?T-omP&)t~VQE~TLAE;cd z?4(-KPV?sY-39^h?DRA#wSmDE1BlOKN6lbW6T%y-x8Z-8VKV+ZRd&kDcnw2Plo;lH?5_RPe)xM69#KhvMH6voR<@27ev~qD- z%bx+7V5TN*91AC;ph$1avR&wWdc|V+b6$VJVF5}sE32!}8jqL>!U@^iE5T0D^gS*( zDheRL6Dcn|Zo6`5xX-uPREcX*GBnIi{J=U6z>Ju>dc%#B0#@L&FZGy%Ac=e$WDI7kkGcg*^6_hR}4#6Fi zGBV1!bLY-yrZ6vBIJQE$&%?|zT3UMKU^DL9xUDLwppXEY55OT!pfdbv1dxH@0;*_M zQ0NhH{r&tMPyKU_az`VZo`!;p#8dTO)3FH?s1LHV{ro@zFDC=hm`MvkK`%v1u$e4S zEh<#n-rEy}ovUZl3)ilzvZ6^p`MP00#03#k?Cg)p$tXITu?0pXZvXxK@RLOWiZ()b zxzEdaAcI^Q$_u{0ovW)~UYxk>>~fF-b%OO;>d455Syoy$jS@G7QhKq_4YV6K{j;*7 z0Eqx313DL@cXjMRJzKkM;0i-hWu+n{4}S5f&1iTmzOicK)EA*<82Lqk?(ZWB_mV@k zmdg3ry^2j9_p%m4C~#aLKkI9B4pPS(r_7@Y|3p^^2co8xwSRvB*QxFz{HJhsapCG0 zZipurfBD}>(i1H6|FxMD;)Y&cIL7>3lUz?uPev5l`81UHQ~M1D(`}E%C8gz(EKzU+MZ95`d${Id{0QgFkdF|9ykbwYBnnkh-(~K_dJ(jd`A9 zdF_i38Ttdto^-i2GZv<4caQ6csr>x&m!)GC%cy+a3g#mp{#4fvu>ZH789fTlE~RCc z`NZt(Vz$uHupd8;|GDtqJeZL0sPXPOT_N>PIzGP9(&r2egI@pDoP?zQxBgbGwY+;? zp2ccVo|dLApWaANF+Mt*oWJAS-Azx-w?Af@rXOLO5k~%J{K8vX|Ec#@D}34B8ddn_ zSR1RNdhGf2bVTOH#dn*K0Nn8Jmoya1mdzkzd+dOI^X8ACl~SKquRi_woY&ORAzWF> zB{c8hE|70LuRr_XUW)3604Q^&R#zh$b?)8c_oJiBBjN)^!-gEf(ec32Bddh?ca%u>tZi{JXqEYFj3D=E2d3(mVbIsI1AI*bT_+Iwj#{}>k+T;3mw zcaasxf#udw&j<;7E~xVzE?lABFhy0#UP_4VG|(qQ4iKNOX?@J1G|Dw9VdjbyCOvLMBN${Rf)e}Fjthk4Z+mkw< zKcvfMK_kcRzn`3#C=@ZJ(wnB?$H8%+Dgt*c9RDDK`tRLid2tULd)bp7>Vjjo%kR8! z>1$_;>0Jc4sABkZl1$jITOiB0AK|n6TeX8VVi}o~q-b?UYbyAGWy%zI zCk!UPEHNAP&!%k~_D=UlGQ%_!R9Eabx;QxZW~wBl6enp&N!Y}MPfoLVR++*C<4EO` zbGOh&?Ur{-m%YRA8tjWSLyV%fJHnEsm8`laPxkPdLg`My;JtCZqsuMNCI8^DFxRQy z*y#klg3+Rhg5eoaTjef(5)N);LUQrjqSM1Hp{N0evx?n*osP6Ou7*j=av4&m%L&Xo zS;1q5Y{7%XiXaHX9KmYhTeo@gt-<`bXDch;sE3JjXWt%YvY8<0OgQ2$8=oK0?{*ec zI~G^>xlBvXfZwt+(u0MoDyK6RjJ`9^PGG{urMvLRYKZ`=7-I)d7_ZE4f2r~sevgZw zTts_Y`4Qdeq7O3}2SxAV2;A*H?$&{F>iY|Q17l_ft*9rbJNvHdef3rB<7yQ;1A5)I z_SW*&dx0D97w-a+5HkITNFl_w zYr4zJSP5{Ic%p)qQxoiI7c+#&TDp`p(vt5y0p2%So!cM$p!CdcI$LJ9nv%p3nApCxA#zZC-oM z%f7#(O4pYtq)k1-d~L`tem(en#$+@RECJ2FgGBS=_N*hzh#cDnhe}=>@2g-P+Am3O zAPy_w(#ff3$7{bxi=%fHN5kx;Q>jA@^MSpTqO@H<{NkZgWg%6^K%9>+rH&D7Q1LBS zSX~`tRe~+zdQ_Uv7!;0H*o@jYMMj-3b*|>Tg5_#oGXKf7a};h-0Nh=_ zeEm~(1-n_n=B75CUF(CHysXEy_O{0iW-cdct2}K7b(CamBVThUmj;9VQaz~3+OMBq zIXHf_O>}Xq`#g2@yJFs`VQvpkjdE?TkXy}_NW;91f$`^G3VPmjc3L*Q=9;fODVD^F zG$&e~BG)&(ehxbLA|lDivlHox;~EXB^&)c1toAUogxhBVD|ZY|FcK0pE=JDm(YFhZ zke$x|vQZqw$Bw+@yq3FP#qB)9y8@fmI*mt z-2+EF#%Yyl8Td^ohtbOIb+8{Jp*%dh#@BsCoJ4Cn^quU+?D251`j4^j?Q|k*x5Xw6 zMYgGe+ShLa3e6+zWRAF}2Q>&P^m~m@3+RdX(C<_AUEF4(#agX-?d7BO-O&@D{E3$R z0;~D~9L}W=eBEmF>RRVt8Th(~T+5>Mkd-Y@52U1(vJC98n`O)N{p-%$1Jj84K-0;n zWaNu6PVIN&v(x-SeVNRQukvo(M%Rfj%3_Xqb)Tu)Q5UDX>d(eY_1#d&RN zK5CR#d0>+%bxxyXWQ0e|=fky^UU{G$L$nxk?JSlPDXld|dfv5Fzs>M}vGpEMO?6$j zFkrz3*bwO|AW{So=}kmIdhbm{dM}|vP((T?y(7{Cq4&@P=}l_rp_kBWfI#wZp69#Y z`~G)a#)v=+IXUO-z4lyl&b8Ne6#f~AIojhji4MJRAb;A7c*bK|`64%H*D7tavac96 z6g{VoUF&S8`~Hc{+NbP8P)o8goPnELHtq~3xiAeq?qi!MHA;x(OwEDhKR{O|6>-mO zM&Zv~lNu-84LOv6v+UGiJnrJ5Q@f+;eTZ@m?LPyhGL8?^VpH>Eq0o#H{NBw7tCd*# za<5%s8*NNI4!0u`xgjpC*`QlDHD+*p7@*VOmO6S?{Tg_fQ2e-MT{zkK#Uh@=`XB5t z8(rnP?PH8hmRTT zgN(!e&LmbO>Gg>{u%p}h=(e@E>#>y}1a!X5PoKWX)BM)XTK?e?z zec!99;<(H@W(hqum&_QYLEto>3}0jrZ3F-S7~+_ufkjkFN$DqJXUoTdZBB$zoPn@9 zXqK!gFK>)&UC3KFtP*`el$z$XlPDQR^OP*)UF3aA%5=n5JbccKG?uX*^LvH0DA#<* zm70z&+ZE-Zyqoed%=i-V!GO2x^wUndZ#EMZJB@g3+v8_~hi9F8m@;A#i8o&k0`fVA z@aKo&rl{?<-bu#smY8}^2wym6b4Zm;bcZ60R^%-AO+L7*O?kopL9hHvKnZy`$v5p1 z!D~1EIDdpyno8hf{7e!y^5OxihbK2u!6xboaKrPIixCg*yTS_K3K=@-yaeN8oTf1O zpdW4RVG8M?#%&R_?#H;W?kbLRpR5w^?u`VF zIJvDML;y#!Y2ykXibL7NBxWd{Qd92}d)(A;cnTtHQ`X1zbN31*|Idh$=-qD*Vw-I~ zfE4M)0)pNv8{c!T)Y^Jv5(eN_syF&^Js*ZipKl*yqtb2`AoMi+q3G~&9aO(RIWBEf z6Yni$c#fe>kUtW8YMt*YOVsT1rO?!H%_T zuNcSXv~=qyao(PYWD4?;hc|kGVCI9{8gEf3a)@xF2hZ#ELLtr$sYf>z4q$ zfECoe*>BML>2Aoba}5)=<<7!7qQY1t=3z+v}Gy*wb^`aS=-_xajigrIxK*OA8{PFE=^rzYM9Qh29&s?H<;%-Zx7LofXm1-hb(jBNFhdjTXmI-07z_UY4d zSmjllL))aALA7YLgfzns)~*VHRwWI8I11BpRQ061u_IWI^Ipv1ZjNCtIDd<^ghcEX z^Th)oj$DdV?_ra6DKKhhtG@mxW|%vHhE0Gph-__n0u=+K9N^x2(TO^75;{6ENF-8< z&%iay7R-n&Gn(Ov!=!^DSjFi^qhUTc!UamE63&H|Juc2TOsf)m)eOZ*J%#N&J3H3r^d*PeNZq2wy--%R{Bn~?Qn-GVG;kmn zMW0*fRGTM&x{_>L?j%*5J22w0AfqAWVBk9XOE?I&}{0p3HK7E|`_-Qk^&c3Qj-T41#^7gj? zVr4p{ePytcjQ5ON*}r*%Ng7CeZJ?*;)5qBb)^Ym)sk;bj7}|}15L^M^r^(8qOsOj| z!u<5U2zFQ^5z`3`E$P-QaCFztA94B0?AWkUg&G&C?X5m@t=(K+zmH-WO`jYGe;tla zl!}awHn+|(p;5E9S1Q9_zH)_?e~hbxXQ?hIGLxK5)2efj9vCzf=Z56weTdH9W=`S@pJ>Ll{2~fi!;FU>1lW#Qgr{cS*>Bb^ zL$^T6T(O9yF9(lM(jUyH)3qM~UpSf|v2j?4n%dw8HfA2Hl(ZbM-ScrDu*P?MTb$Vq-1e zvR}=SU2$8eZv8k~oNo3$vO&9gcr6hOeh+NDVsbcG!p=_$i6H|^$n`!?dIv!<`wxc3 zLd<;qb9xe(vgf+4<>(qJHFeFrS^L0&ktl=DJ7}v;u(gZx#YcCI(_eWt18NXju98K6GKAH@YSGo})f}v(*=#7TP^Nse@ohWkWW=F<;&bgMvLjw-qW2Zd=1Thk5ds9sw}&!i|wB`{?%QC zL~MJbopA+5eqozaQ)df>F0L>x^F0p|;+mS!9qs zz!#C3V2;;XF8_n}0qY2w1D1m%2PCcv(no#Xn*G&dMq7VdK9^l3#Q9MDEsAI<+3ypW zG-^zjO+okv_@h5#ag5RvATFDtJc@QVfVjK1ZuejfmQXd`{w-kbNY{=ZwhneCLN_2b z_8Su$-(&EbTqdTb(vdQFOJxy2hX^KeOSi{^hq8yaAj9VWmL}AG? zDbuR}Qsfmp0hvFafoIm8**c$5+SBDpCRlz^+$XYW(bF*}$w0eh9!=n{pqm#O*sc_a zGvw6=KoZb&B0KRj9$1D2ZOo?7PpBv!W{}E_T$%!aOY-4SClsfPKS%MkxmFew=yCSD zPd=PX?7t`<;E$=n7g>Xq^q((ZRC3?-6lc6h)p}5l;qdZvp;s1NOA5vp>?Bu4pCiA^ zP?)CGK;+T|j}^DlGt%v}%qlG0vr6QGbH7&snN$F2sbCM{taMFhXIkZ=c*L&nT8e~vw`!xCBGApUh3WuQ z0F@;=W_pZ#e?m-e;3?$o+plXGnB~=GSyNUvAx%E~uBf!*DP1V7h@R_|Pe#ksy>nar z>tr`aq_*o}VBbwOaq)CITzi?vF@3*an2_t98$R7Ei60Kr&*D4778H^3#%m<6JOZJKWT9 zJM7P%se#X1nCMXQPs;Q)KsvHzu-qv9@#$FxAHa3op^prP9{pA4<``wBuY0Pfs2G5~ z$hgv=2jAMl>1=zV7!~^&FiP=`TjL&1ePwO?F)^AC#p@<*8x)G_4l=naE4o*C;oHax zUVgJd{(4*&w`5gS_FUs*KVtLFsxGMARjI>?4s|VZgz`$aS zk?E%HZb&al&vKhs;$AV0cUrKJZCX|U-X*8GC1w30(-S@a5DpL!KMkf>OUL`XamEv| zh3kIaCS*=kd$Bk^KV3G40J(Dni8z?gJ4NN#<=N3=BgagZ$R&?C0g4vIuad;2jg*Yu zxksDV?*r-mwk-}W30?KJqQ`lRnI6tMW!06fQ_H1V9MqGY9@lGz+4{&cxdb7xc6i+? z)Wn#4*;>CM-lx7|XPu0uR*hHK%FQkQBKf}H9z_2stnyX;!NS{+);s;~=jOu!?)-S4Gm2iuFOX%m7b3pf~#2u$WP_E&Gg1On=x z_a6bEL0pg)Uf$l(!|)J^_G|gX` zg8};uG8X`|o;9HiffxWfbFP0yVLmAV-eq|B*3#l~C#ql3!GY@r*-e|WbxhpkO*!CifjYrwCQzV%&ql_P}% zgpC4_A_lq1V3pY#`hx9%HXX&!z#C>@m-5zt%B6f!suvo{|2c+;Ae<3Yb4T8P;NlGZ z@so%2|E|+h>V^(8c+>4f>W%Ne@BTl>ppGTD zsvuqx<#8M5#9fy24*XP&_}@ylix(xgf$GHMFJBO@_O91&r(H^PzWZyDc9uaJ z#tK(b_DKC7CFh^d;X4Ydj-n)$?Bl@}d`!~*R|LS_v3GjM%vp<1p*g1cn@nexmR^Q? zAswlvYLLapaUPJw=4f*~T$1QBlogq|H~4be;V8@&&RnU>JiXu6(uPA7)hVtaRHwD> zC=h3ur4>~Z0+1P<=CV53F6!*`?%&hD`1h{|sFF}A2EJpyS-F$bQ`yJ@4K`5e5~81m z&+HiiXdkEiSa3ZxWLob|IC8iVFD}ky6qz~Q&1ys)l@MMv*_H#rsCOkjeIDc^Yoj+@) zaW!Kn=NPJYgn*eWYW$NIA7keba-Gjz@jvgzpYq-1^W>GQ-<~x%xzhHG6(uIZTBK}j z;r}RJ|NA-x7oa`s0^J=+i_U^6h?Qh(nE~4BHarEJI`9 zqm%Zpoor1xtu>>y9^^Tn@}D%SLC8n;ZtTP;YWcpYecQcZVc}paZCS|bD66Kg$3Z4$ z=T3aW!pJ3)ihGV4GOfrHM!e6maEBGaRX>gR~Qs&FDhI*rR9wqcV9Z?_6 z{h;{`Cfh~+mrKt`nwBZbTh2s0&sxK?qr9-RZ7zXrPll#&n|6aaL~|eGO1w>A=q|-lEwCQbR2dt&~*)(yS%=JJuVz>u7ZYC06NDH;)cZ z_P_j^;1?_XdLp5(xyE=7)^0Y9tu46`4W0%uP2oCWaw?Sgoc=F$U2S;tuwD!e`}c|& zk40jhg!}i&VZ~qHUwP-B`zu%P9i=<#SlZ@`o_V7mhHgp=PVTQvCq>Td$RCoUUo@~+ zY4IjGb&P%DWn<*kn@hh6jF*Y~720=cawu3=DSEK*;8|NiK4nMZD}8jt#j!onNDubuNo_`^I9 z^0Kb9QoZttCwfD4*zKCHrap)3Z{uWaI_7~F!X#sumiBgz)U5Fwdq)`czO7r}BAD+2 zx4(9}!=2#wp+9;p)p0m$a7X}1|F z$3;ZyM960ZWQ?vW!=7=dip#`y?a4+U8b*uV+@Dn%Qn+KW&x8ad0vv?Ihid_Hjhe}^u?tlMocb|Jyr*#LBaMO2xGr_YF#CaD%i1;=B&mTY9B zDk}Td>RP)cf>ua0FgN=hDQ&UPqb(ufV8_jcV?L2gjLe(u`mcYJoW*bdAqozz$IJ|5 z&>aQ_Ujx4c%KR{pxcT_;_uF@`UH|^|zKXP6=E}Ko=Z38d-}UcGUfcbUl=X=echjTs z@r2z^C!5~P^!(BrwJp(0YEN z7xfPctrT?Zzh$44cJ~SDTZbS#`8S!#nmRh(n<07@u77<#@k=C{Kh4>vwuo#9I)ZSi>4%_`G9-td7ZPx*Rn6wk|FsDioUe(IddrReCz`=$8FFh>6r zo?`=jAved#?lODZmGm+WX09l|5WXn7l*_)Vx~^NeEsJ{W+RMtKzTMNcRJ{3>$An(Q z&hwRVW=2cq85MQ4zk(SWuiQTAH>ywnO^6BoxKrm~e==17&zqYi({*l}es3#EcPmZw zTl$cs(aI;q;~6DC!q-B~o(8%&!mWnXuF{(;ktbXJ_(&+1=5_=9`J(oO%l6NTy3)EY z6{xem&k)ap28D>n_3rcg6eZ=BS?ofk=eIxOH%5eJ1}7pFdD+$avNqZHN_PVq%iFZZ zb#~XX?YMYU&kd8N8|_S{tMVQ84?irIVYska#Qc>)@jvCU(){iU+v|E{3kFGHiee+X z!D2M>db84P^&S*Y<5u)_b-Te;wLjZ_T|bE>UHxNI)YIH0j@5hKpw*OGH2TA3uWod2 z>mKpTjgn3e4A0)0Md+|wYE*n@nj&Xym+NR~k;SLCjR`F~Q2V;Ra|RK?AQ8iY5o!-x z4g-xO{B-_lLB=;*bAdvC5i z{(Aer{s~-u^xU_V#CW_bm^8&hNiAB@GB}msN44dMNz5ln##IvhXVzh7Th(V~ykA!f zWN(VJ1T7&BzTpWhS@WOuvi{XJh)hsijiUxny(YJ0Q9zR1CQP2B>H5Jrx(;@2G2rw# zBn*E(mFYTp`Vn`F@uW!_zC-_d={a3Pv19SvOlv>?Vla!)zsFARQ-dq z!z-swdI}CWC5ruoJz3>53oYdk5$yahd+h@l3_5dSN>}dYcngyuNmD2M!b0Ou=Pun! z5mRQayYykxx_$V{{;Jc8Qhm{gg__;g=`u?_*ral$a;qA0@RA?NHiF;!A%{H{PuZc* zZ7yx03xpj3W6&c4>9^u)DSsA0_G9acymnQL-{3m_GwkJLuG!YlFvAtoB-F?YZa(9` znMQS`2O^^5#owjLX42Kg73oz~Ra5atBo}A4uFz0-vM&`sa`UF^#*jb82QSBbMhpw~ zcAAOrZ=n~>Dl0Tj;}EXefq+*x&9X35@2`0t^ueE1eeYpQudKKCVS-8 zEe=0?0H(00_boeIoi7>g>`Mtop}DJ1XM0_r(`73>)ZORXUEC#gEsqX~dk3j_?`$%o zi7)Pg;C!hyJx#qt)4-srTum+t=-i%a|10%$tsd%jWZohoCYvQqJ zR|dQvVkYzj7j!We{nIG148AkszcyabE&Vh0&R+6C#U8tO# zT#yKDdR1v`wF}3z_b%NaxfL0)j=-dHa;)rN!~2)v?U(F*kPdAA+GE;D zH$_%`w%=RVrLgpKrmw!?4f14&(Wp&SAyQP!eUiXVxaS`P>4&U-ms9?(b&Gjio?yFA6wFrg17GZ1rHn(}=^7&098I`{0CdSp+uuX&yk&cbK3Gf_yAVcte3o(@m z>f|wh=mp=s*|89=txDft71a`&{Ag+0){&E4dgRa4#S?S;Zp&JVk#kz+jVmY9eBZ`I z?i}}0`uT^k`l>7I^np3e<3?LaIqZKhB>ji@-NH12cJr$1B{ldL?36&LZ_y}=F(Py= zgS2U6H1h5pMeEm>NBb(B>4qrcj$j|6@Rt?>Zwlv);D(wfBJU{9gqH*frulH}FjD43 zz2M?*t?;AR46q`;BfB4bO}EU@eP-VUnuVTgt$r05o-#mXs9s3gHsLAAwThdJUJ(dN z__INpQ?PnBMGDha1(ka7^4IjNZ8`N+%)Zpe7|gWmvb_mnB9ZEs>o;WsuOKjD=Ev*9 zPOluQ6$L#h%^?KbKZdD6f6`(8^}|lHySqs* zF88~@l%k>nZsMW>?v+bJlEXs7s<#gVN{Utd69JeSLzohujJqEz(upJJVC&8un+yV_ zB7yN4%rVG>ohG$V`QhJ%QQ~(P-?nq@RQ`5GBjv3W64k}XY^J2}C4L0g!r$y?secdtLri5V@UEMe(7G#c&tBFa5H*LmDBu*hV_(l1MLxv^-tqRteXK5ZdZ zj@T0h;n|5eqj=vw6GJQUf|sYpD=oh38?v0Ol9zbJg>G0)-O17FSxj8l8rL}3zSV_h zCQ7M@V2`uPoR^o&ba7}Xy7+^I0apoOd#A9|=Oc;Q0Us^09`@c6h|`C^$t9PcqilB| z{{J1tFDB%?r8I%k)a|WQ(dufC@2RnG#eMq1Qu`Xi^J1qEDUqb+^Zco$_S&{GnmtwsRP zBMJQF$imc^wD0M{qt=Fc%383?1kX1LRy~l#S20iq{?qC~n>Wyoai+P4v3`NBy-kqnqSeOE9zvnW9pq>I)U1wsb z=AJ~w*nK$U(4z7g2V3o*35qx+{q!5xQpc%(AM`H|)hc=toGpi{6ZwMKo)P2cks6@6 z!RVO5+CfEszjqoX3Yq=_y@=@iKGzsbL$ka&H(f@S;<^MJcH&vTQg}orCMI6Rkk@ht zrp@TyYWfU8oU9fV6+=odefX17#X|VHaaUqzt$6ti za11WHNf;>P9E^<>jp$smpYlaWIl8qfydI$wW{`xCRXCOp+*oM6lFGRCH_sHRh}=s| z#6%R7uOHQZn9gWe`SMN=zzXLP&aMxZQzZt#!z-Z~yOMyV*d1Deap9^ zEM?Rs(FqREdkm}(g5j%qJ?c@O6!c5GU~vI}>9vm~?@8XcV0Y2C0LkOSo`!qF8psb` z0=LaCGtz`>5cw)J*gmABRMyoEk+3o|LBRH86t-^-CAv=Jy{+@8u!4i!f$%b!N`yRFRCJ_A`p{n*)g#3NM#w2lp z#;9fidXLApc@cOa%3Fu0LSex&Q(jYCFEtDsJ@FHHYN>Tr2a>TAxCkzVaj}E?A8m z72(=cdqS}=6cgK$xW7MaUXz;gUBShxcJzG9tHXkcz}(vMi-eUX(?gbjQG0bwOq`~Y zhQ_y&60XWh-mC5E>YA!5dPKfiSxgTeEMIMpjgD1O*B)6FZSCdczzG8t`gc_YMTFQ9 zK{izi>DOv)!2OqgI`E&#mRPu{h!6?Pp=%2?|kk0 za1F)sa%^&ti1@pA<6s4XtcVuSj?Ns((?NI5_sEF}*n+$HaV@;1zxpH?renI%6@~}2 zBT=hjq(n;U8q#M+FXpQPjBL&PSA0p2!`H%$i4{}Mk3%=a2WQ?h^+Zw8$XeR7KV3Gh zK00VMdrKxv3>lrs&Mpm>twGKs8m+@5;7_Afo+s_pAwOt~N>1`pUcW#EE^Uy)5f`u+jZ4$3yqb@vGDf z3~(!^6|dU9hSGa4qX~Zc#o<_k`Gf*IFoheJH!<3}suBt+*>?#F#2N$^4Xbm>1uu8V z_b3th@>1c?2hQa5COr3sW3P~GP0n;{6Z!s|8B9G9J)alSz@0J^m?_e>4XWTH-0|bp zDVj6K*L#Xh5?%6d)EJmw+Bi&u-SC>tM4$jw}EbiNlSBYKowVf8^HXZ&e zS$TWD4eNRS0QfU+5-dMht~)`Ob=A&Cs?d4wk$;g0XXyrw=YL%$u&Z#wX(Vl%8G5xx znxHuZLC;+of)|VL`5WN|vS~BZOa#yVnKo3;=eQW%YfYnlghiv9)oMC&8m6qv4`Oxj z`T35fA1#Ax{FzKmzd?D}Zsq##Y*&3J&!fe0SC#ykXt|?nX9mBaSHUxJ{r6E6@t}L# z2RPSH%b28cJfk@MnfO__eM%f;W46=REa#)CP2L545gEF$OM`XcZf}?_xO|zgYfpxX ze;nf5UJ&b;Zu+!jpO1>!QOA)-|Ze<~o@6EQaSttKHP4H+XL&Uoo=@X7Z}w1&epYyg4QSFhXazf(DV{#fcOM1OgbX zg%C2gS?8&~xpgk|o!mXOpyP6>VvbT|UMlo-piJ+YU|9b(^|7|W0Ue9H8?&Q1DITd; zwFI^Js%ORyP_DXcz!@gY!O6m4T4hV1s%lV=_WEfFcc1K@fUDPgRAlsrK7Nb4SHRsM z+U>EKv@X`@EO0qnK+|`Xw%r-FU;!H_C|B2&b#QrHX$#wj`8>?6iCKJLSrM&pLrB&j zc&lVcEiwN_WsJqw88rP(iEf>)2sch44?R2P$#FJH2KSG zGj?J0h__3W(0YTK>^<#7bp)NnDZyXYgV!Kj8hh1*Ng3G^=6qo|v^D$m=`Gmoekbi! zGOp@m{VPLMKjYnU2m17@6U38vU5;N(Aq{dv6(jQpDtU7|E2d)!*fyu)Fc`SS`n714i|87;2I$EQJLXipN z9>(0NIyGa;9s+;nhR2ioxUa5nl)bZ1m#7oC#0@ZEm$9mo>KmUKNb6kcK)-x@+dJ|u z)=rk@32pKTs=dFLIo|$>ii#iqyIc)9dMa?1yf;;mQ8juxzwsuehA4U5^~=F3V}#4#S6U_5Q`iM>;URV1< zK4Etn8G4GyQd8Hs^T7UVu`fflTMd`jsrferYJb1{d)dpT2lU*5IOD6zI%-|J-szWZ z$7JW%-0HD=n}e}mqtN~1IZnDu4$|UWF>x)QwOP=Wi-6lO`edD{E?;hgA?;cKxUqDo zl%S)(Ys5n&jl)L3n^9)n-T29+7M8B(e?~h=W%D)Upq7=T9L}D%!7f7>J_=4g$!VT& z@p}PttJ&x4%cYUBG}Gig>0zElwKjW)k!i8{$(sLAv^eCLi!kaBK&o6Mh8wqf7FRZrM7%V0z>rlmUo zx5`;gD>heiQ7|YAE2}J3(aE^skpF^pOEfh%Jic~A3!Qr*Yur0CwUU1@_oeW zJ*TIP-u*i!oe+noEkU|E23zmKX=ZG8pi4_I-i*$m6@EuIK4yl9saZ;thg?sEQ++nP zTz5YEvLs)%x5CDiO_+5qtC>3qIu<4@w$)$|%oM)$6lzyM ze|R^adadiG^JE^8o^ZnZ=E4P%zH>`0!Cba*aUn&e+F1!}1@+qxGZq3A_peMY$Zf3*`NATI3hw&_HfBlMp7kl@8O5DWEL5OgRYbi{QM!1b>usa zUN6;T#ngUGYB*}V)J|qPe`%<^8M>=%cCwU_RVTQ{;)Aztm8ZvDdOuXnD|l=Db5v2% z#ng-&t;lqzwP0mq9}&dO)KfKxCboc4`OZRsVqxTSqbT<`R&_E$4~0V{tj%oI+u){? zm8^#xRjx2*4Rt4n7i}21VyTCvEJ0f}BNRRTFx1S3d?5W9+i?0HCb_(zBtxCN6x3`derzSEygdzn^L z##Ez)_D13p&PLza@5a`snz%oi_x;3***S|IF*C=Vc^zT|-o0ymE1B|ibw{~=@)gEw zeYw_s-L|=zfrZub3|j-Xy7>69zr@V$QBu{`vewx3U|HuzP4;@{pyXt|yZ54EOei>) zzeh#MDkv0|%B!{$M#scNfnUWxACXOm$jU(4mX|1Q7ju69*&@ZlKD-tB;k~xDz+8LA zSS5pR{Fsx@elFG!!XQRkn3t#AHu`EOV+HK^3|cl<^f`F1yfyG4Y;RU5w&*U*KkeaJ zQT33<2z``v9)y)=-NsW(g{@nE8`Gx_n{-gaJ;`$3fm$zp*+9ANc6E8u+~T?KXTyXpp(-C$6@-C7IGmfB$`(Vlulb0H@&x2|pY^Hvtc7Xvp4Gn9 z7%c|wKe`KSjA~)Z~F~4=-fhKl#a@%MrRCvDwAAW-qxc-E@&ZE zA_gRgTh`v*i&=V%9+S!*3hEVsyU}a}uJ*(Faw5J7pCim`hb?U2WINF4=jd$~;DVh9;?;1y={B8n6wT8q6G}ipb zEf3(xpfl!px~TK$+Zp&ehjQ9~)P(r>g!#dld;N4a*G?Uhe%Cz6T$vqGRR7%fd(xj6 z>Kzt3_6f$R*&tl)#vK!ALr-5g1StHVO;b=eAwNp(t1fqH&o|TMAdkI! zwqN)lq3GZA=aaxUJXs^HaqAESoM<>|I%7rdNr5uDgra^Fhlc2`IWx zl}Tw<+MU*SE)ekAO}FOTaS%M(-B4y4J~^QXIkq{}S)LM#%1LwkZf4*X((!E5_Jzb5 zaq&g~XGvAnkh>uW)O9;u*vlI?hqW~gJAOZR^Q7K-4f;|kia|%nUO}-Zpcm1w;Rzh| zbC*K~P z;EJK-`FJf~gX1N?%kH3IbpQOH5`ttJbyTAbAhN#Tz2JI^5bFZC+xp>(`-d(4UYA?I zmbgPLNa@=`%zMva{yx3eS_EhCV+G3hp{JxRifv zId_-f<1eC;N|p1~UCY8U3)emd0j3x`T$L~B=EUAsKpNZ13?7Fi1YIZ?n3&WPkZlmQ zHB=Sobbct(Sa7O4uIMNObL=6ATu?*#JrrD72PyADuPd%)_Z~B3`Rwl{*ZpRvh`EhS zY&|Mwswi=R3V!dNXE?ZtS}UiQ-M~lpI^JT_!8lYOts@$0*X2~F1&Go8xm=o#`qsy0 zLUxUKN`f3knm=uAI#x-bfzS_o1M=dj3P_kj>jZ^?PsB7KG36pM0%8@*C&>3Nw(|z6 zQXn)zqpz}@78&Fj|V?ZfwdOgy73S(u(njoM3A1}Z-ep>Qry*K@`2FxAddiYzv|HSnD zqS$Zev=;=%s`m)2^)}a5VWQh#Vr?{ueBWuG&=@rM-BFZp9sBd}0u0Gp)saAKS=3V;x@&R)qiNY(f(NM043$w{WoV+vTSj&fN#pSutPItHt zC{xutZ z&CZb)mvRcpP!&`64EYZKd@BKlNIQKQIap2lIUjK7j&plejSTZmTrjHY?dgrK z8?plBpV*8I>h9fBy~n;;u*$8Er4I)eL*V$_l$A4vdh8~Rp=;ozL1Lb;tL=K>l%`|U z%Onv3x2z)f$1gvt>Po~kl>yYKQ6ZtEPDP?qSwFsV{kse69cl{CC0rJZsb=-y7LD5H zrgN0dC$!Xlad{cwG2<07JccaPwjU%U{SOm#ik_4@clBN!SkM77TS3U5KdF~K40k*p zo6KvWV}6pcOPz~Lnm0ebzO-BX7#+OeesZNJ0TX)nV_8Y%FHa1|A7;iMQBmFB!X{bR z*-gjE3_n;-lo#zr(1`R+JJD&TPJ&D)T|)OshJvb|N>>%C=;yCe&<)5_!EEv%lzrx8 z)@ig5^{cFqX<1iWyE9s7nKhjputigPDM3LZQV!BAY2G#0oSeAn+}*-QU4AI%)T}qO zN3W#P*}8dp-t}}x^f#W;f!Oai_xlv=SV2uc+{EwgPu`yzV%AreBds8P<)`BI)}MA} z6+IQ1_vZX$Vz|2?D5($`5`Z1ir|>&vGCw=oCW0$%yamW<^DFEO>FqW)tRc9oZ~)AJTV zEdBtY@xG92bK(?G5A*;rpIB|0f_xD`W}HD4r7xwcoJya+RefJL&GnU5%^5rAaHOL! zI&FXVx^z#SXM+l5f7`?jK0XSj_eb5Z#_J*ve%JDJmsF_Z$BuQjG(AwN_lgFpkN10O zSMI=1JUl#}wR?@AA&X1oJJZdIFL<~H#!(}BD9x6F>zDzydJf537|k|1@GfIqEio%W z(kxwOS7E`GiG)pET{29^24X!N|M0xFq=Q6SfzWh1C&?iPSenARdV6?ksGhx8_JePY zj~us=gp;EjFxD@J50f4adAPY=trxyz%)Ke*Lo4I~I1SzF`XeiYy#c@Nru-`qetor- zRfk3gIs5io6FL@Ru)|u@>}rgS;`-b)NgvjdGAZ%J#Prl|;y1LGPVOX8^V*tT$~L8txbNQ~6A&Ce6k5_@aopo>$VpY5q|Pzf7A6l}!04Es5r zZmRv78NCYl6h>O1?gVdU(8y(mvhDM`q})QKfG!XU#`l+WINEY76l#AX8x6qbPeCFs z!9ek))G}-d#x$&K>^_7q*grjcWhlD)qmROmqK|2RAepax;uf;AF}|Iw=se;u#2HGP z>c|^Zl!p8I#TxQ%petC$<*YQQ33`O?8UJ1^f;JS_1Vl~ke({V0v)>c`O6J8_Qv8TO z+4kjiL)?$#eM-Ug(!Q(#p02spCYIZ!%xV|k{9 zu-TgXFcM*nJ=h8d;OXZLf!-uM&C2}U;*!ew2t(+s+8@GExVC~@hXM|RA|p`u&jpj+ zFlyzj_X*@(Hc#VuQ|AKlSm_)efD2&3CG%wx!@<5%tm`6tZi0B?b$Ei^7^_Q6(bcFL z^J-yGV4Z7Jq^N7%Wk8HoKuFpnHnLUQj|k4Tld^Q+whQ+ntG5Z&-xVv+PTs4=(7*Ak zESoDzyCzf`BE=bSMGWhBN4GMMm7?Kz%9yd;f499z>={Fhd?Tz>v@$L99T^H8h1t(-M!O)FK`pmD%6IJ_6AKFoGzivH!WiBL+<>RskXt-t@ zdT?bO&o#xfXgT7KH}GC#;Vsmaem|?BQ*~r%pX6z#NIa|N%)Yx@i-JnNO;sWKcn;3v`OX&1_2Ja6FtJaeP3C(a{vuYVhiO# zzN1EsmfPi=V!oW>;V>&JLo;ORC7u2Z1sFm&j1Dla7YHmc>4zG@eZH8Ve$Q10R`AsK zoK$O3e8CDs#HzqtXCh5`v^iB$ta^^N9*pRJI8`}Bi*v4RNeiBT$zejFWS}G?4IqJd$ zmtJwR(w0=Oi!=L?h$gL$brZb$?aNIgas?08fAtV=UKA!%;pH!(FaHIQ;U8sp9EseSiz=H0xzhTO^zn`c@-ALlx$ z#pc6aif*|YMlH{j6rI*a+yFAIxIyOF=6ai*xo&N?DKvj1-vL} zd73)iGjiBgK(?eCs(}n%)Y8>&2gOW7)Gmdg8rh#y%ZwQ{2y<2q6W_dHoajFV1@aFf z*uHd+lWuy82CBrj$5bTy5b5bId-d5X2jvRAZ(ZweR~RalejA^rr&m7WaeM1!d2tpd zHtxdX6zwl2K))ti-Ek|*BqAaLXkwn*Jsjk_zi`*zs6LKm(kHtY=`D1&?YhNp>Y3Yd^*B7|AMia8k2%Jl_?(rTk>`t{;A9m!-HU{n`|vutM$N+jQMF6aw%->4WjBpwP- zOZGT`47I-(vP0M9kt#LdUR5nd@+$8;vx~wgT>XX!DCzF%3IaXCqE~0$y?PZ~YO^IX z;XmV5P*{*O>kpUGecnj~$@UmCmZ^DDG|0oN-nqleaoxdcc~9)tbwts`#-1{2CC;fF z`yHr%>95bAmSj(SBdydG*p&+0#(4YAg$vmYRi(}dJdRFH4GRksuJYem$IUJ+eKbz~ zP4@kqyTA$w+Bqv(TGCXUCE(yUA~fBYa}}h}8wzE?r|I6tgWLAwOu--n1!^a7Gl42B zuvwX43lvU=^1|6?(#m7Y5qN(aCqQ|$l$p0aaV>LetbyU{s5>%KRflB`HjuBeZ5bh zY;JQS?;CfR?iYmG>}WaH!InHDDW1Jnr=G1zWZllGyeBv%+1R1Y)k(2jz~KE_bu|uG zcYL=BySFZ3{{CESkLixO7T~%7mg5Uazj$+>6BLx3qWoQi|MQHrc9zA;o80FR@Lb{z zCk@ucTD2^{pSdTIjaur8Ab0T|P};L=Kc*KO&D8HBw=spb0)=m*a%zyK0nMR)NroWm z;4TSUeG9Dvo?QkHHBN~Mc=W67c|FOK6miz=3qni^=IE$CyY?5l;j#IEb$003=ggP- zG`K(IEVv(juC&2Zqb{Hf%ztgq*a>ekaih>8pGFL`RepX<|hC8T;O zg35IxBaUq3L^{H80QpuQbV)87@i*-j<-b41iA_XBNwaiT<3s1X#Rg3r%x<~8PS@Q* zMS^N5m9vQExvj<$FEWaaBafm~a+9E^CpFp8>i3!oDO^pT^G&ZcEv*sz1B;y>3}edxo70ar{+I*J7OGk-BPe2OzSvk!`Tai-WLjR4`hbjenX$TN_x)mzLd!`aS&mPfLF?q%fN!jG07 zwzShPn4bJ_fqch+RNV%5CHZ>jn-s|lhP_)s1ASK@)U>3?)cuU z-~&#)I$WMh;~lFvF-9}KDoRQgs~MCdttNTg<1#ReyGK__`v}O_qkmlZ`ArBsTFrEO zD)VAH+zYqa*1j`W)$P5tZ?ypMqxXBFmW50Pb-d8(R)1N!N`z4Exfq_x$KV74QSlsP?tch47h)<+l_St?xPrlARE-W4lXSn``e|Zu4NUD z?YG*KJ;#!aLYVDi<65>76B8Gp@-923{)W5s0QGkwep*;|CEO*s+aJBxg=8n9B`d?5(I>*mLW!+Q{fz7#(->nyL4DwDM+0GeN|9-sXcA~Po6p&l5wIk zV?fU8^U9L24#Y7dsoh4Cm{Q%_|NIFx&b{L2WM)lGaC^scf=Gw(Bl-6~TKEy~JY^c* ziTzt{|2kjVH$efAwaI`L7p!+v%4@m)bWAX{7&KWkrA_Dd;U`e&*XDc3&r=B}-oHGti$l_Oe=KQR)u*p<`d3nQYwe=>f=^5yl9lXLt9a@Y`d@lnh_o zRC7M|rrk_HfFASGQszj@B|W_-Xkh-UiCsVQgH-e@pNgzBY+azSP9PA15Ndsb2WhK! z(QwIxg*kE&>A%1p!Shh9%ek>eGif6tO#Rx8A|x^t7#c{`4SdD9Mt0+VI2|bEGj%+# zgTX8fmGfv+mamNG*Sa*yopBG$n92%3VoFm}?MoYZeot-hEk20gH?iDbcjZ5wrJt5- z2s=cFDh0E9yxW8ij%HUD|1~+kP?k`p^=99R^* zO$3iEmaf(K?osRUM^f@?%-iRt3pN?+%|570Q)cFXzF>}OjoM00c&F$rCr=OB ziD76D2$gxQ7kkx_DOMoM!ngB?%@*rOH`TlAT5N++X2&mQ%ST;QPn)YKzPL${Tr>|~ zuZoC5UNCg!dTD#bb%R-Meoy`y z%EHmHwTaFT_`F}^Eb{bC*w$obZ^PmW`!hg}6h!B3zJFCVEIlniSa4@_vAi=` z*2oI9a$D+8bB(on_4C&5PYZ9;kBYy|Wo z?2K*U%4p@M^&65ZXZO(7 z&%%NqSepD^vZ%o}2WTmpiGVE!z;tw29qY(%*6S!%y$P~bs&oBRe-%Ja6DO!2OMD4_ zlI1P%=aa#pl;R{v4gm*Yxi|1e25VwtBQxobl4+Ea8=Lpo-M20>a}opm$+P(r3ZSO8 z_~{HY|8qD9kKBs-X>(gvyOPur&4aL@Hk*PX4fdZ3x2-zq85+!S1TyfZC!McBswzmB za^tL0tH%}#>ytFZF&YVRNWb;i)=yFKaJv6m>bh^cIe8k(v20kx06BYBU~iK^L!uMD zM6KI8K?5x#%IvPA2`3AnjX|s;RE@X@&MQ^?lW~7L-UnC|ch%p?fq#IMb68&fww|%( z@uqKUSxk|I`Ej~uH+!Wk)YG}c>&I-?##tyGs79(92yZfMBC1zwEkM}96@W|g|ER>9 z{^H=CVANUPnzx|0pG9{%g(&N9u;r0Oy8N*kXKQZ$ZOljK4(i^WOwk=QHYNrcX%B}p zg~b?UbvcsgZW31>0i<%$k`?h zI@=xxYmnP_io4K)CT>68rDL_!%2UUj+dX@eMP3c$8CY3afr!PaGu&-*M1?$K$8;(V zT6n#!3(i=i2+f}?93`GOb&k0SD*0(K-1ZIWu8PmnbT#0mkkP~+GZM546kvlPF)?u^ zQwp$B*Ggpl(!CAB_b*>K|C#?N`CIfLR{^2rmItY&5rKhs0daiONBjk-%zk)NAPt26 zBRdri&po6Efa}g6P3Ab8J+zVIxo(~@=&H^lEd#fk9CN()dr4ornDFf)%=nOQCHYKad3|~=v}W{D4KZHT6ENdaFOqt z@v&!WsaMl@8c0i_tx})p=Oz?&;8HxIJEt^)9^${ilW1kffXxWbv+k!D;NG-yn|d?> zMo^&Cb3yrx1T=3eaa`Vu6L1vIxi0>-z>itv|rD~+RV3GZ|08s}`CGNiS(5t#Q)$P zZG!Oy+0|7yiY+mkmSbBd7T68iy)>zY+#o|PA%|j~HR&KP8WueP$s3As`77&E?hC;8 z#hZ|BuT-_pp=UAiX*PQ=s_2SlYalwG$zfD-#w{Kxm)C>dK0dP9-uz85-k4MWJPz_u z7;^j{F#Pu_KC(%`K=Y+OOx_+}eVqDYD^PCh<#V`Ud5QUKNzj-iiP^#cy7PT__zfsm zh=w8dn8B@GKZ+ln1k6dIj742Hg$CFwBJ$bf-A+K}EG@l>PoLTCq%#07`#6%hz^F73 zJZO-`Y1Gx!Lw2=X1M_z!Um9Cs?>n?gL<0kk63u6zmOJ7)*7;#;bNT2+zb-`v>Q{iX z`ap1Pkyu?#D1L62l9xzH_T8$xa=<7u$a|*phsoozh_IPy zFQOo8hdMd*9UdS6s*onQXJ{TyB{No=I6C{+Cm&x z+r!j_W6w&-t*>&PL68=7Dn;Dk&QG{mxPCs2B0w1#DZpm8h40Gns#qbqLo z129$aLFn?8s=+gzNnpT!QEryT;8;5ARX&|do*T-q?iLjlJ(n6{aIm?z2H!b0X1wBk z4|glKdl)=(B?;0Q76#+xc4qe9WgQ!uN_ZLuYT{5^{_t|FVD89O>IP9=hIQpOJbcod z>_uypp9^WLHblIq*=41f$LG>*Ta| zm5!(p4!L8!`$*vqht1Rfkc$=xNm68ny||u+h=UNI8i1YMl7VZI@3l!!7FLO)tX|jJ z&ocS>@qVL9JZQ;D7?qj)?bv~y%Cl%KO(9X?96woDy}btNK3GZsdxC!cGvJ9O=^TM1zkxmQzbhuTfEz%>gkvVP{<*DXD!O`jG&rep6dp*RGAKlfcMJ(-H^}z|K3n zea0HXbf8@zBP<|#>lDcCd{F1C`x)v3LIsd;&e9Q40oDjRwKiU%qEG1jw-(^y?Yv*^ zGFLT@J-4)k^2zfa6L?4uOj?dkzAcGE7+`=69t3*;EDn)X)@ZM4V|Zj?Au&MMcW!xk z_~UZXFSap8!=Ey?*1Nkw0L+8l{I3Ql(mcJquAR%VTOjG&15y-9N=jKD%T9Yp>y7Mq zOILrH>zcDcG4Q^6u9TRFBt^e}uT{EIo11%-qtwvG7MbKXdH3kkN0v`!6pmNFbLgT9 zi2Q3Ve_PRghM|#>Yx?9R<;0|fo@ytT%)hPeD> z&IACku<(j{d&{dE;8Ngf30?K}U%w5&!zR8%MBOD#lh~UCqtR^z^kNBRSbCdQ8qPZcS~y)4_G_uC*ihzn%EL z&)ArP^QnKSk-txSCw{RPifNF%w9N_X>fHuG4=<-1zt}R4cR;OoRxI7twHY5qDMD6v zE)pjrYDogwDV5_CG*jjK>!?f*13HT(~r{8p%L2m!mIdK#d%#k3RNpX61sW}V8;Zm}cD|{!WG+4Y zIoX^TBNyCt3FqNn+PqL(T<`4itd-CC4acFgG9O;vb~|yDkB?Vl<)XDef^p+Hx7w3C zeYtfoY;4#k#0q=F@_9eENjOu|6~EARTxVaz#s<7U(Ce$F%H!?(ezS?_4$D$dJ>k}q zj@VsirG23i-LSgz^(DoZ)@z3?>W_wFhcq-b0~@w65{GLTXJ@-LObFq;K9ss@uOw+{ z#~*1dv>j&NN%b72z4`Aefb#zkuMzxq)D(i{myv%!U0pwCM&06}JW!NnIsEy;e|LjG zOnrgq&{U0nfo`^{s^s>)i(d}tGyS>2W&g_u{*?X&Z3dsbW)5gN%9Vnw^zMBsr zwPA0fo;>p|DV`keeOj=9#AMg3hjK!h`^i9cb1m;pi@%E5`y`Ge(tg9gT@Zg?$;@H8 z+orFS5)*PHs2!7n0v@5Q)m$qMgFOD5)PcSsuGh81HuO9}LN22s?s_3&7QMHGl^0O5 zakTGm^!F-HGaMh-UE+iN7( zI}?H$cV9#<%Rj48a8zn&So@;DMpA%op=3(P8K_EzKj(w3l8ufr{Jf-Nd%r^c9@UG9 zs?^uTA_~HlWvcKk;V(1BkDkBg_T7F*Ab-{%&!8HuUQzk1=o_+GCKp`EX#eFaKo#7@ zokSYtp}s7!{IyA(^}JEHoUw=+JV#x{TzuX-JUYB$k3mp~Jo)*hTG6Ep=@PCEi73e+fvpf8vTjJll4K-(&>?&`deU*} zEYHnCBFtNBrExPyevjUdx`J_&r z?=q@r8k#KkuYDr@=cqv>A3zRX{3e!ekW-ezXhyX{5bvcbxa&r{Ic=Cg#R~_l()_fe z%l2J8@Z|VOO)bBy1$Nnq@eg0@>D{(hg}SOO8u%98E7)nYt+{%y=0^$o^&R@o_ie9W zTGKgi(4R~ysT|!}!*gs(E9^zCrGOC}w51Xo2f)ox8lt|iG_4i=G2z>d@!g&J7RhaY z{R}eC@_Kd4wt{1yoVvVV+c4CrTWkY9^OeUClF8^N?Z2tk}zEJ$v5PTsKt1XdJ~xMud;=NtPWnKMVA|6k?@<;I(Jbp&v%;d zEPnRzyj8knmuF4YbWXHZkmona{-omVBUC>^*}l|Obww{a2C?BA^iUC;8MbcJ;abt~ z?nE5kg#OPz%hmz99)_QA7CJ_*k-yYS6r7yU7d?Y&P3A~aC5c7Mk$()$)1ej!O#-zT z;}u_bjYppys{Ar7B@**L|8P>$45`28Ln$%S7^Ep({O8poECcT2`)ac~{2wnVM}w;! zD29fRO%N3QwG8YDRx9S6EyjJRfdQ6wnQix4cgLZk+4NeY=(72=WF16#_YH*SD4i5W zin-nJKgR@bn)DSRC)jv}C1PxqDQ-%d_u#3Noj~fzrhB{s9wm`yPM;$UO9~`*V@-;- zt6HU=4Sl!78=3XmJ33xH5FiPjxE!eN6ym*rDfaWy6te5NX$(!l{5K@`TlDP<&kp$6!nCkx6n_{CkD)BFuZEUSK zs#<$zdtysElsnqq@{Moza3x)}s!>MA01pv)-5-xb`9K{VKSE$r4?+FtfLL-+YkV3fdZyzo z#tEz=<@QIteGds&gQ$k*lDDSwS4ee^UmYi|EUN=k9!98E3|pyJ+^w9L+GvnN3@@A% z9@~|lLHy}A0vdp83_p(x?Vd--)hPpWP!Q=}+v*kaHPcnms%*M)#j~2US5NHY7}*SI zOpsaCiG>c*90r(vQXOiFT)6k$g92@J=Xs)IojqbCCwtht9~guWsUhKH27&IprOxj! z8vnddh$&~W>W`$Eqi!eJe7UvKG0;3M_$;dwR+?$#T>l(; zz{7v5uDEe-Z3Vg1sTiafY`dOfjjYknM3!{CtT0j6O;%Ib*@%jLn_kgFdwN8=XF0__$-+dM|;kBkthdlb{W^AdzQ_ZAgbzCXH z!`ihlG<>PFEpq zyCk9D{oitbe; zBeg`=^zkEKc6PQ>w2Z7Qe1B){DU|1r^MbIUk3yae0WUuLt8>*y&DJPPJT{FZC-lHd zW(ap5jEn(tk71HrK+Ujc5rd}BMNW*vu~6^Dyifc$Wlt0t?`kyJya`j+&^9mQbjd9k zU{4BHf23`GKV|^{cDCKVzN@iG@^|v`{z@S&B(_wCu4@93Sf%LWEQIYUkMD9KItB)F zTb%znqsxOQAm2Wh8rUb@lESV?!Qq&hOOP7~imx1T40{0DlIuY|$RZ-^Q-Va9^dk0u zPVy_U_;0%=UFKEMD>5EL`Bz_WVm;D5U@Zy9g_0u3llxc+OkW>oQz($biHVEL+xKEf z9d&r25QPVcI-ptwPAJM%gaC>WHdQa4|L^JzhaZBR)ZoWGMwXWL&v@DzsX&m&!i^m3 zyM`)8m%Z_Yl|Xq{TnR{%Z2GKF$Ry0zk}oPLxz#a4L{RV%P+y4t7#&?2{qgPF6WK5Z zmY5U;j?W_x0^h#X;OFCGC!Go755R!-+t!4A#UxqBC+R4ZpaiCc$uTLi`U`?}HrtK* zpFYk_RlqXQ!72Mf!=s}Ipbu_m=j5=BDk>^^@6N{W`L4V;Nbfe)^deKxRyz@l!}a71 zm=!-Rj9)47FIV$&Lw+S3I%0*kJ})MURAKe%gQ(tVzYpF7y06$qe=I^?Y$={HQ2&v1 zOF)C4W{#TRypW@ZZYwK?_6CWGi%;B`n3yO6(zRxdg@tP1$*LS5@VsP%X>u*-%K@!+ z`HoJ?bCL4TN1^moRKlK_nZds@N#~ZAgCcD%Ehsb!7 zsY-V)Q39l5SC?U2R%+P%=PG4QQIox;VP{vi-dSJV8AmBEnZnLlBI1|&>jfUsF7sLz)IXSY&?Tm9&#!*n9}20?W?M4Nre9vzHYPyZZDjo{=X~ZdufD?{sE` zhKFC}LZMLovW}?!plDZaqAyVBWAzbRs3S#Fv+yZGfuVXYgBCz^U4%-!S>;F=6s4GLm^_$S>Ul@a$Gz1H4LT-(5#l z5^0+-(89Em6bU4!7g3FCP&4YXGy?UuM`OJFC*5Hf!o z!PzE`pm>KBKbZO0#l28PRh8h}X~XGy7|kbi<%$8!chMk<;3*FDp_8t{YaT*YbAqJt zMYSvO=4({~moDk1Q-A7}QOK2U^HUQq>O>m>SmpNKagLgr?ldTcXZ}jrULLWWhYxq3HvszD-2OW!XBvu%#0z267w68MgRj&Rg(Xn6u4(zQ zQ%*O1=00AyaDkPBTS=rKd?d)+X1~d4aN`aOb+8cg0E&lMq%)D6Njg(4U7-%!gdD8Hb z_u4g8=e0L`zp}QJm6dy!_Prjo)>m(wNjMPD8pWk+VNuN|bn_-=)7yPzM7*}1R9~e% zw|f(Bz0GN5T2@weAN2ki7#_}yiMckbngp_t^HU}lA#7*QqK+jR2#eI4rliNpwhoC) zNB}8xi$)U#h^bwIEaF}3(BzkUwd5oFdmI#3IRx;&>1OSm2m#D1!wVN&`2 zc5Q6hJ0W1zq$#Via&kXwS6OM@td<_l z_x-y-LXn6}pIpubX~!ZVi2i3Y*T%1JfG69VB1^+}-tH#DiZZhKQbpto_i7Bk8{<0@ zqj!BXy6i!@(3NUMdGWS#HC=>nUSbNDZP5Cn z`lR&UO8CkZpnYV36l|QD5vt+_SmMD@VNuaz;M$3kS%7$)!iLn#sI$(fO6x8h%Q#ZY*4?MsvA&vOF<12Mf% ziSDCtS^uTa4|mj~+a=)i!eCa8vn=-)s;tEPTG}D@wh#v}nCt~f*9eE8)YMcNL+u-U z@B@$s6=~B7j^kuw-eyWLl`rqZ2WN}|3 zh;t^_Hc~b-3YV965j(STK$hg{gaE>r%K6s_jl?(-2{|8}`n7lVB*m56V}5Dj0zY4l z;PvZw7TAXmK|+4yX?;>96&8-eSdzPJ>;(AvIYvPaKL^jZFjoCD;0Wa9%X=|T!}sJw zl#U-e_QbnpS6}_u8>JR^_*SgE``1!IdEVY3*9a_J&%og6A;>t2OBC3n8t?MYYoEKo8A3p?vnLz$5{S=ctO1^p1Z?Wp+;2}sjk1Ni{ z|KcRpbK=D-sxdRq$jlX>nYypYediu+sIrnP-(pI>CmK=`HdYvHO@^{8RJf1dw`Myi zBeLBVSJ5<6)p%u~=jK2a&|+}k@2dl?*jBx(bo zmY2F(uboJmUGl&8?t# zd|;pwd*aL)n{aCE$3a~*#3Bc*%!g>=`!x4D_YW1d)XP(=>A#i^=zBh| z%o{aDm(vh)xEkT92rM(J>##+)f=BG$(y95H9GoNyXAHw`Z>2O8)Oy8lND-xOmjka@ zW%XI+()RW_AD^f_pK+)4vlP6w>kG-ZxT@6%-XbLR%Uycn!d_RZSXHPQ~y9t=+Wx%qf*XO6#S*nfmaMzVLi@F`tS?!wnRefsn`1H*=QLEb}+ z;)bHZp~%R^QQPPC_BuX3$#?JGR%K|k41)K%nMpfF9y6eA$d1ZO)WxL-lu(X84}=Jq%hscN-S8CI`P}RM@wqVEi%uSJm|ixhb}S$ zw};uGqvHpSUOt{)YNwPFC+78|jF1BtQNxNOmc*hyn>nTq)Eyok z{NaV(n%^~sp?bGWM2(`Y!}GSbQgC_^Dd!U^pHvhPJK;q*?6a+raknzO0M_RbJx%%~ zV}&*l$5=dqbCZ%o8f!T_i%jaD*?r2+7P)ZYZdcbhlmOJ@WtOC*q@@=gP17m$Z6-4Ep z$n1`ltKF)8K@wJ@v2AHlhSSN!6iY= zCKt=cQ(MNr+D#nrBp5%Hbi7jtZYBAH&*fSfYXenYR=Vd+7P-oOMRdfOC$;2x`xG_e zw#sXvh!tq5dsHveXRG)Jjw>iq=>tvABC9IL;b_&UJy8P%sb!Qw?L*+L`{n|#7J4=B zbIVc1aJX;qG1k4Mn-kum14 z(Z>9Kv7x=Pk}JiusyI`=2{ScT?b_o0=n+Wttlj}W8Xx_!uI|?C+#IuyniNKFiy(^t z(vF|k=Q?A-GpX+Pc__2cpjWR19lLMginBttfGMw&pSi14Tx?%H;zpEXSp=}%@mvHa z$5~XKmeq4=1GJ?$I{Mi~$PL#)yXBz?AwpQE#BV+_>`mj z`UQRrAMVL~10vp1I5mIh*%c3ZPDUmGM*SEr(kxL=HxUOsWQTzWm-Kln?-g3c+VJQNB8;R9>+j=dnD3e* zWbz#n$|Zjz*OptR3VRe%qa72Ux9E}`B@2?;%`IDw zHs9;V>FNO;1nRlH-RPE7c2KK54pF9)W4mFh&?EeLt0%y-EFfzwy2#$-isQB$HP)Eh zsu~!FcC+4c399yv+=2(att-S8stn&A-2RSDFh)Sv#}0<)?0LYkD}`wmVUlEbktH>> zj2_DHBe<2|A>^WZJ;K%&XFk4RGX3`GcNM0CVx*d?C`or`_%>cl6l;XNPb7BZrE<_Y zRv~vB)05No&h2k1#9@2!uT_9q(Jx6~oS0_kC0{K?9z|`_;OM&oTyo9O4d#FO*|V`YRi@ z#FV-TZXNNH;!2?GufM{6)D7@ndp_UZwsj}^+IM6!@Z(flIU@;X4Zi!+BxN-fy}Ng# z`Gmyf??{i$Q#q6YIvlB*<{GCqeJvTb3w`~1K#jriI<&v{DK?m80+2k(3p+2!wNj20 zwHANSAqA8M=@@Ahwg;;`uxifi85+vC7(_2+MPQ0fF$;k{y{}|rZ_l*}nZo4j)Ob$U zU9y~IYh{LUj59*m8ij?Gb)J~myxJ6QSD`;m$rqH^I!D0|KkYGkbOOv))6f)mmCM?h zIv19DFTd`es)fDfk9{3p2ouHO(bbaUIdB&C)L~<;rLo$B-bOwE47LdBIr_q7jcSHA zNWp~WyGs7)_@YXuRLT8>1!=drFqDHI;i&@FXSN~I=WKl%l<8p-PETxeR0xH0N59RM zXqea_^rTWZqBrWfeqal6cxN7oF-gvOThW!RR%#u`4?GPxw2079x|Ed8afT=jC#Tne zX7~8MbKsJa7UAnVygIOY&Z+}XOZ>_7CHfyxe#>|O4Bzo#uvmQ1*+F3uk&dGf8P0oK zSl<=Eq&#ixh-J00wk9|i7#9|b`LECjn2yH1H*w?sm2;DyHSXML&e@1%ot1GJlKiae z_A8^vIB(z+kEb^9XgRL4v)SG&XoRLttW|t%==xRrvDHX|v2$Z@_2-6$$BvD=HF1+( zQO@HU^-&yyjfJ71S7*D@KIP7{f$)JH&KL`n=Q-$_042yJwrI~t4>7$pR5h(;riy9| zfT3Moak7Z#CC=nz`Fk%3bwP)Iqb4quvsRlz#i3T1 zac5boM#=SD)`FR2HCjatoQOq<2VFEkM+VnB2jTYpn4o69(r075mK)}|FKk|C9x^(Q zLU|ui;>TIJ5C2rfxt_JM={U84-`XobH^K9}qGUA?tdH@wnGmjg%1aa> z?B1@tCuwAdqi~$Z`~b}sO@ll%-L%t}h!Rxs9!{i5fz6)YP(sBiv40P%>!G+uhWSCl4>*;>j0Dh2!?^+!{TKAoFw3Z25VdA!1QT%35f(-G8|%#Ui1K)i^nCqWG->3vHt8chfwtOQk(j(pJxQ306G z2h!!Y{BDSh#%!TeZ5hjb&MG)w46KhB;mV5>Yug+>R;plDM*3=W0}JBF(I$noa`GDl;whal-3SPx`p9E6%om`B=k5bQWL?HacU|rQw%#o57yByS ztD&+SN_AbSsjyR;3%ILO^fm=wUSLq$nw6YfdHW{~<#RFlOyKMp?O|1fjX^pzmV~!o zT7I-lskCc5B!(!k`i#=M+i55JNf_;@Tq#^EYt%q>|?u=Y!4{3v7PUt z8S^Y>=!=Wk*H2*3^}W$pw4SN;d0V1YeHt&)LglJo5jjCUezIHRZb;z5+)InTO>VWse7q6EmdzLy9e!V+) zh!*!h5dM9Z#eVqKk%q0A+wpV|Hbvivr9!}t0{E|~C6EvpP}Bqi?}a-$j*@9tHq!~P zS&_*3>u-Iy&NfVMjFs^JwV%c_KSDlsczbDZFuv!5}r10^VE^ajixWzlzZ|t=b4@@0jpM}XrNvlY*BCBp99ha zJ8ddoOVT9rdbb0LSWJD3^!rt~sy80F=O+a4K@3w6U?b@cW7VVclMT>ux16U9AONFU#_dPHO7(0N!zecxo*F0LYoPGw625Q&JCeff0(^q zjw&f~spHw2Nxbwc3dD3Nub?1?4@{iJYf}Wo?{EM7)e;!T)AO`w9b&5b`AE&byZ!TT590sG1pMK{H4w&#i&PvbhfMFk zdN)9rcK<$T=o<{a9S=;IOC-oz|9%}gjA*5Ycz`0Y-yfTXa8n__oed=X*gh8zMD^ct z1Jh2|)vvUp004A|63GIw{C8w7GvAn};WcotBs5KeAdHLd_V167a0cdwdKoHze*iWC zc$dH5&je=WOZM>p^Fvd{zx4_M&MzS6|Nb_hIQZYUEr%akJ^cSTOxV901r&q&j=y(p z2`YN*^Z&a2%dgFBrhjh)F+2XB)8v4rF24|``{#!vOn>~q_3u?e!vFL3vV+_3F<_B@ zzu08|GeVrsxg8T{<}dtn98--$U>YDcTF`0)3ByEQT+=1j~? zZtVYT?=%hw`HT-=?!x;Al#=4oa+LDg7U!3=z0?Y~({6quTcPtirjNS4aoYH`ZdCSs z#2kfdAh+XXyz-tUh@4Ax(TpxLZ_zfRnmWIE921*dR4u8X-d5Zj{jp22RmVgNx0Yg> ztj3V@xbN41xtg+?uKDxac3T_x=Ci~KZaEtp^Hv?EYF$-ikPj z_*63&$LkHUd5lFvzfN1=y5r25_qR^Rry#3-X@j%(PU(Po*Me(`2sjUc$lv5#v~zqX z#&@eH_Mh{nCC^_6B%~x2@c2%jR16MAZrYT~i{3)^&&HM*6ecCaWXNu89DrV^+c8CC zZl~T9Xk)+aW8S7lSCqT*^TNfLcP9jt7MB)}J4so(x?B>L5`Pd|zU5crZ|IGr?5@Rz z9^a5F5|+QJnc3VNO}kwlG%StXe6WL(u*nyOdv*xqm=&$U>~;9ZsSt=?pM@j;zc$Zw z00=7wcrL{$hB7i?dc!RCCU_>FXxSz^6MCu{yggQU4G!q@)X8cXKeJOuKjP4#YkJpt z0rz84uky_1!rrI2$!Eu@ta`fEt#A5~1%=p{GIOznt4e>pKNXy72-xrVKgtW5;)^0d zBspSHewe=I^glzxc9|CJEUXn9UiAy*jP~E32+3JZmu+2*lUmIF)*>h(^hD{(6L6bq zLS0LhkwuFx&=u%x^oOjN_t6Ef<{v?kMZG~H7$nb^-eTP_MfPKB?Mh0TkKU@CMQP)I z#@dvREc?|ch+n;H(DtTXRaL{*r&ibo?^aUqC94$XqFN?;#wzC8t&b#nnLF3>HJ_QO zVh5$9^SdUTQ&DzPgdb>(?WlX(^eVM2JvK3OKjlpe<;Bla=Q8xy(s>p`OVJ z1orJ91EguoC1QVzmE!8YE)va$(SdI7assKK0DSN8ps4MAyNr&1t~r1X4Ej?KQi`#G z=ov0S@h4tt_8A@QTc@(JHkU#z3~!ksu|;pd4DXTjz(br8FB-yM-S8tx5^W4?a4ZuF zGQQdpepNbZ_7ew_4#H=Cagvu0dI-s1?Q^TE&$`z*s+mzq5an>AmUsy@|-MeMay=aA1TjQu=mY_~Gs(@6HJx6{REV8Ml(zE*qOJC^O?DW_L8 zYu5Ne!GrPzQQRiv=g$l=-Cr!JZ0}_k3X5=j_m2r=OWh${3WnOGY)Iq7#A8fG0bTjt z^)$!HA_g5jc)@10O>)vf1JE7Cu5 zYJd^i9sX;pE8c{w?8MYX6^Fj}9gf@H;(UUS&|}W|>z6F&VU*3H*4<-o*7mRx{*SMm zoHkjBiV7cy&~j0wYwDeH^UA*ZbLQF=p*tR3U3e)-!aFucyYw3E%)We#JZgFP?);lBCMZ7Zj)^O39&*4}GY6!Y^SPD6~%m4^;Lyl;Q?P9I&sxd3MoE z8V=_(W>snk2;F#&>Bgj-OMbpPRga;_o}UX^n|X;^tYr9FUv#iYN*w$9ct5!Gug8vt~L5y z_V!@KtdFp+Mg;mDFB#@jl2%LoD1@EJ-vxPN}IKC zp-^TPt$Ql@=#KYhA0n3f@}<5$;e|k63d?##f|PQ!nWFzee=-xbIxW3%)BP^M>n89K zBa7wN|BJo%jB0Z0+J$2SJKF*%)dC`2X-WqXF!bI7D!q4*8Wa_krXV0)IwU0YPC!9G zYG?teQF;gvTIl6lal4;qf9L!-=l^*#215)f_r1!T*SxMd=Xx*veV70HpJnjn5ruB# z<7~bPsTFpvc1lXhK((mZ;p5j%pDHE{j9yJh6x4)o{***G+u{yNW{;UHevgg$XyY&_ zEKJDNP;{VYgxLSx>*u3O%^b!8X7+bAvuGv$PG-S<(L7B1V_ zb5v%7Zt{Q1@f6?KI+sOmqK^%1J2@#_S~^cM^BKz}N8fBA?{l!|1$I4z_D)vtiJXAU zs<#c)LJgY_6hk8CIY@8|2HL$uRdFHj-iLh&M6ZRr<&!sVhCv>~+(S*rj9g#^)^{Aa z#LygZ_^g6ktH=WyIf>Z z!gZ$F?(E0mY%B2nYLx2(uGOCka`S;4P(HnCiUODU_hwNw zK;QlWVtk4v)pOL%;yixeo4`E0lY^(3KmvJ99>%=*x1+5EaQ<)8`uI3-v`_T$y@(&* zPYRcp6Vy-msm=ny_@LCifKEL%J%8$9);9%Yak-RC%=z$L=OlZNbYdvYnaG{95SH6g z1z>P)YTS2!P;I65Xz(7hH(@>Nw4o>12 zRUZwyE-S0##t7T}sk%l6Kl^5^%vp$?*Y-qj?7-7sy z*ZJu^x&UpE%_>Q*RBZX0IhPxVy2LuP8S!eI?V&uw*oocRY~#+iJ!2zF=FTlq01YxS zGm{b$XUPm9nTQ<)bNoKBcBfM5ey`$X|_U^w8Cxh|QiRROk40KkJ+qjv`G856@cLHcoVJ zpW!OVBd(FH+qm~rq`j+@;QL5Cm-obR-UKPbk`e)7VM*M{QA>7?dF6JefiomWp`|>8 zvyj+oj1COd>ZebR=OoW6dXE#8jIyn=Lch-&=xzGTqa{C9NsNZnT-PM(l`^ z)>G-m&n=AwfN#f$q7NRk6u%@;KzPwAdo5xHRO>=|9zIUvfceW+QstE}Si1p`kkT z>>1tVvI{wJ#O8r5Gbm+W1Rtn`WMIF`-3#^!Zh6%TB?5gQ zlXf1nw=xh|FjR8MEG)Iq%1&)b8Oo+s}GI+j$usFzRr{Zpyq)OcMm|raj1;P3J><)EU+2q!OUOYhmBoiZ=Dd4*{1jh zJ4eBd!u6EGj-g?H0CzfuR=$A>suhk6#yD91gD@=E2?gGKVW-)UC~81j{B#7bc~t8~`H zJFYTsuiKJRYSCIzALC;3fY;sMiFRbM_xAG4Ti%n;X#a_->Jx^$m7k}J%bhf;z?kJ9 z8UVY=Mz{x>uJx>Qo<4V8>w!+@!DJOj8R7dW7$Q&e4ez6?r(6>NWCcS#9Jp6HKIZq` zfcT8S?kF8-RMC-e3u<)Vu{dxehJPM}a|t6OG091}dkb&HG)&TIHt2l=3fjgRGU=ew zhx7EF3lr?Zrf2#vHJhIYHCq}N8|4&Z?zz6euBkdY`g-H9@8ftw*`QCpe%+aEVFfrn z6fGiT^Hl5UX4B1*p6j4`gnM+gXoe5d_#;wTO&5fJiu7OVULGn%(E1$TEq0%McKn!f z1ns$1idCnMP^($!^gJE$=9~xTAH4jN{)o)+Z=tMC1M@9XNcGMnL~6FbYzWp&=aI|% z8TB?jaQ8-wUi*WP=H3WJI?KKty;c61-4Vo8#)Nce0q^jiW*0YDohn-u&9n z9=*ZZ4=n!3`0>W2j~E$#Qs3cWC84^_NK6mVCb89sc2IUI^uTvq0kX-yr*EuF5Z)Us z$@pCH{u&6_aF))xibz%2CpQa%CH{;_<&URNwe_j1PoAxtjpY|!JPaH`Lv$x#p61bB zsaym39cL}s+3k!J5^m+(;+9~0sK_5{OC~z!)n@Z`TShz+LF(GB6uk=%TNVr4)bd1` z?zx1PGmB5VF4@Uth|tk-iU^nhr*2u2!0|$yEg68}dL|x$@UvdtRcKj1b$V{jTSl^a zi8tirR5I-GKg!gB&u>16Usa+_lE}!PVqS)Ce?RR&$e`ozXj22lt*++SHAFA##4$q`nwm>lP5(+|e$ne>W_) z@4wHnGuefaI{?w>TtQou`#V)NO?&rfJVk&4uJtnA)x79kFXDqpbRdO#FzN#JUceeA z4_DM+J#jB{OdtJ|3*cS4xfXL4y;XS!s%39aEX z@Zp~NKXe)aX7H#Gggr`bxta3_2BX)rAt~l>o1SVa_$L8E;4(8ycJqJ;%+W?i-Z7ae zV*Kzzg#nLJczDmtm(N6}G*rz?KvH`6N~PTOA6D8550bPdpW=p{^g#^BWlvOnE(<4T zH#Kny-ZkZ2Tm*5uzHUI{dz@IW{L9xiZV16U&wjP(;_g)(uLNAv9+C9J432eWZ)p!R{5a&lD>^ciRhgZg9mh@G^1qa6`N<4Y2i2WE9U99kbmN~gEiN5BF^&R2 z#qJ$0jQIqqda|~xU@;{HukY?!F*iT%xW;LCBkf~1Ur+jF+w1JMn(A3mQFL6&i8dd! zbRN8AD-J6vF!yTau`*j)Yx$ITH?&HyvC;?R@g=zj)~`u!rnon+trK>UYgK}Rg40hM z4+~EI+*4{RMUpNezFqv1>s_^d;+>RRXYgH12e zZ!oKgq8m9|cv7gX~QSWZHMvXmYKH5I$Mph#MO_V5>= z%!6Npd^O{K)i>Vl5o0RBpp^lp2x}PSiGLSrNt`mpXZ?9`5Zm9h^1SS$M6a^*hgn%{ z(2L4I-RMH5?=gW_Tg;Bi2wWl7{8KqYFZ$;V@|MaQ**TfFCE4ZA)z-EhKcajLPT=HJ zQik4Gr-tO-YkIZaCLPaZ%;A02aq(a82e_W{-CZ?^SfV8-C|wY~Lrb4`jrh`m*~DUU z&ImvK=h7-46{%6!fAG+dd*x%ubw8dCen{ir>f{aamuz3 zzgB}zh@6N31=)6Zxycpf#I{|TF_AwQWRT8 zc=FkDFZRRIqUf(S+F07(*U6^VQk3W8W{QhBu4CQq)j-M<9;@Px|RGON=u&SLne8(0)UvnQK z1EP{YgUfgO7WfWJF0OpigWsQB_$kD^RXVgpo9OREpD=SwMzne7f2}|?ps1k#zlYxc zRuuSu_00G3x-(y@E{Iy%1psy7-;ett|B`Qh{~?I>AF}_S*Zt2k|BM9X-~Snn|I=s` zqey=nE_Rh$+W%f~+z+T_{{3bMB>#UaY5l)?=DlOU-||>tSWQihe?S1}uFXSFPY>17 z(~B)GDT(>?DK{)E%oqJf&H`ULd+cw~sPLjfhNfzQkfw&l`?FMX@c}F>EUU}Q?^9D# zDOGmMKV{=pvV9T%(Chzt<5507zSA@`aiC9ZOv}}?R41sZk(wC_!&UA%#l^*4+OPg| zYxnVCWEcd2eS9a^eKx}GM|Vb@@?Cdt@3_>|0tpF*es9i7$TJZ;Hfd>m$$>KAjNxQ+ zN?G;m?ru7}fqZE4fQ1ml^z1CRw6xjKk01Sn(HPs&AKJ-c3IjIzC={w{Tu}Vd5lB$N z+R94N9O*V1jb2?@5e=dJ6MBJkUQh;7dV?m?PlgqnilUVcys4+#N%JHYo&J60%i7t*>%c!MKqwx4I-x9qcf4LxUs`Gn{@K*Sq%$|mkIamjeZ5frSYc^9UK`%*6)Ob9aF=2 z^Borv5dnpAl$Ypw#{(#E%Rj*Wz&kW3C`c^-k1YllK!0%rSXlzTJou`(p92+`TC#g_Xh^i6B z3bn*4i5@-3!tZ~69nOF#{H(zpXk3`dmET$AC0$QM^ zaD(-+MJg&oZNqCo4^Xp^f7CVb;s+0?zxY}>I~R;NVKf&+vg`r3>hKXKxOT{n3!S3BqS_V&(P zciK&(vYmSYb<4`M^z`}$p$UZn<_y=6Mp`Mh~x zT>ieMCee#Dj+|q@YgG3%Yh!W5j8J(?^??VGSC01T)$6Rz{FYW$^FO~f?)bKP8)0_5 z!4`Kjza=SZdThW7qsq~hX21hWwm zo$LDA%=DF`e980Z>%j$s&-bZ?1DZ$X@gy$tJPyX3A!f5CZ7lq2rL}q{A&~MkJNqr$ z`OrSDeFudx@dsck`d*)7B(HFs;g(!dNl6Ls&o{gT3S4a0W>7c=cdIeb`A!>Ohrxm2 z(9%}7At#jW{A}Fj;^FzoMxG0-a;oylH7d11_g~^DwQLvRJ#d3ok%otc4Es#u!Mtr$ z9TI*NO-^?$F3n_vggZlMZ=ZJd{I|EIT=vZ3Gl6AxI4zWM*+;fA`w<0aERPQrsK{F% z-(^*bs;y-p#&fDGMctB+G87dRoe?!n+(>6iW)fao+$^=mO2O{A1fd!4%cv&4o||gr zktehCvtn?v*pDqBFv4iZbHPn_|{eA`H9L86u zCM_5C3JS18`?4`ZiWqPt^xEzQmQ5B90a+YS8W5fWU-(B8%6 z{cF5ysMy2OxQdFn2xf6KY9t*DdMfeDbGev^HS$W2>b-M%&z^lUD!0l0_RV5(yhLBQ zepmKzPa9+Xy9(;h?ltk}tA>0o2~Di6-J4pN$o@EWoLTv8!Nv-xRo3*lPLlX$Puf(Dh3U%C)}5(a$7ZSGuIZ)?XA6OQP|4UHFDy2Av2+DVEW zaLSiDBc(8Y^WABUbgNHz6jCZlj zQ?BvQv#~h?$_)Logkb|^p$Q`AdcZ6hS^0&$@v1J?rvb~^j3%5JMXi9>wt|D<+}R`{ zLz-1@U*ek|tH}v#h9`QI+w_?58VSX*IS%hd`uG8c3iQFv>paIeU;X@8$FF-(G5<<7 zooCBGudhk2{u+&>WlhyU2a1b}kNIIARaI5Z8=sL&NfwLcIb;L|27m#i@XUI3!2(XM zWIPZ?6)dX-eS?q-*{I$t=Bsv}+V@?3+v3quXxw2Q{Nm{4o;nm|&3ccDB2-RxcXbW; zqx!OSYc0w#!I zn7!&5{;iI5(SkXzcwmOOYw3-E{K!w&6&KoG-+pRmdncEe6=&1^`FVmEnKrb`Q{)_@ z?nEX9I*bCr=Z@-q_@v zShH&X`U}seJU(t}*Oy&Jg?C9_V)98XcNo%hGKu3$7TPDrO%3IK$c)O$+~3~^eI(No zotW~y@w+n4Sl{|K(B9&|50fOY;2%GV)>uo$)GCW1b?J^eEKEB~DF6ep=TRAPH0aQ8 zw%-7ah@^I7whRcad2R7wkA(AJ-dntrux0!-T08QJ6 z%Xy7}y#q%4-h8>Svkq`MJ>6-+rE_8DVdgEP1@=@XsELWEyjxrDD8mxHT^c5xSvAe- zrE2^2-ouoe^pUeV^NvoZ&I}M*K3v@PiU7wZS(v zOZtIxP2G(TIp6h zdsJrW=?BpiGrB!{ix?M!EL$DK4cBPU7wKk>%B zd-|Y5i9K)!bTH%Dt`AX};f%ay2lv?69`V=jC5`(NVZ3H5pnBWHB%D5fzISQN@3-q+9>lM%k$YnFH@aarN!{OCST!9Sk^*66%@g+0 z(E#s{#|y*w_`1Yge!iF5_x})hxJcvkOh{vMX-o(JGu33Vs)1S2v5h(A`4Q*$5)760 zJ@jYTpysR$1!I02&?t~J&W7s@7{~bCD|5nWwFercu?B8IN6HnEz$`F4Q#9GPO-Fl!qgV;=3vV!lFM z5?wt#vLuY4oSK^2ju$}yv(n7Nev6%xjm=t6&L;Zbd2$ne+aB>Sthp_>SfTaxxmrd|@lx|FMa(ePj_kf>@m zEc9)nYI5?@`j_BH#OKd4Q6Ce0A7Ir33=eXuC(qTE!{Z^36Gc#+%mk}ia)cE&#eTeE zA%xbbZi2ouki-iM+|HuI{aRei8Z-;g1kq6+{!`wN`%L_1Q&W@uSoJxh^(KE%k1%(z zyEI@dh(`_72G&XWdJgMc4OgJxJIT#G<(UAAJEZ)ub_5!aReR!+8=d(tLHzw@h<4py zV8-PReRI^Tci{?9XzLEKKvfAUn$3~=OeHcBZjg9zpg2-aDx6EeHskT?n~^Lz_(8Ow z^RDHz9T+%byF4rRojWqjVx@zx&%u?We4syj#nh7?aaX7;69D+{4q@f(MiyWUe;u%c zuI;BLTk_26kz8jL$Td4$P&*s$SW2MX-#>>G@-2oRIu#dB*tlv=WoVgTDbA&KHBQi|0CHMThNcC=Dq-{)B z@AL7Q!ku>%4Gj$$0La1|42RASUICHgM(krOsLx!I+~vG?59{C2QDGWwouOc~Ho{7Q?rZy>K7Py>u1DdLHm&E2 z+pFiM<5Kzx#Sa#b4lk~v-Q3)IS0?ik*859lTtjGBd;Cc7+tk#4^7399z_I@)0h6+n z0gY9{x{8mA(yEJ2j;lyz@Y_y=qi=)Sb5wgk zN7R336{}0|;z|-<#9f_P#uKbCf{LK=PaJ3wG+cTLDL>85Ct9|?RH~2X>1##zt4pK$ zz43aA#&)U8qwJx?tyq4m;uJ9im`?Q%t)pxB_%woXk92L%0)*4J1u|E)JZKG-2reO96~L;C9+&vHcgVh^o1O8L>Fk2)7$io4&$Ea*XfivF#2yb%uV~Tn?Ld$D0SWX8%Hqxygs^i>`LC!<$B_)~MXk6` zA2Z{f>vJlsJ4IOg(2lL1Eb6MLJEb~y#PY?Qd1q~uFHaHX9rnicx~W}T|K?5ew_`P% zdP8HpqN4J|LFe~u6t@^35N9?ZzvSd3_H4PZDVauGLB8$r9UJU;K->3H|F;XE-ZDN; zQVM3J&}y>1y*(2&MNq0)g+>JjW141B{D*rbsMP>tr4111`A<5 zL-3ZiX^BV{PT1U9dDqCXy*+(QFY59@b*4QIzz0N<_aIu*E|AMchdJv=wQMjNCp>5Z z`*k;KY#TI4r)6Tw1cXLXz_|AFCd%;E#P$(~YP{hwEip?4jv9y?c`?U>**NPzPk`-` z!>?!rLY#e5;0JgsBOLZUcOYK9Obe6^NDK0Uedv4 zgWx*=gDb4-&|rT$;#o2%majLf{p0&j9fgOQPEA<;U?3_gre|+z&A|cHQgcGflPjyMm9(;wF-kFB-R|!0 zB{qTfMQ+nv$rACFrYyozQnKac<<-UBH1R68cwyBY6QbhYQnZl08ml8;LRIy=^l-Z+ z#Z%Kb12i9>b#i;-B)%&R=hFp(VT75@2@{x7O2+7@1Yi$zeNA+eZ(~D-M`x{(7?1i; zVm&@Gi&WFlP@Fmz#g4b1Z0=<6*cYY{5}>`3il*j;ckkYHSB5Cq_e>O!_xkmDOyB*k zeEL01K;ztml^&5HEL{KMPJ6%|6YrxHN*92V53P&M$OulqAwD;gNR3n{af9zp+r$TG z-@}VdBqf`HG-PuR`HJ@bnbK(NQtWogc>GNe@XZgPkgvzQO2j;D3XGjt5Mg1_2?xy`44uDg zDE|!OK@FE$i^;=?tZ&@xqG_WW?#u_`+D=X>z(;&`rBUw(+>BDxjT^&xuI5;G-|@u} zb2ezQm^^1~6d?34mbu_~A>M?0V$~Mo!+fH?*}cBXaeQddsZ8_v^CQ3uybo7xNS zSeQHxs!vk$ypaFMrk&0*f?s!76a}d4n4~@hz)0X~-z9LuE>@Js@^Bg+l)~%lqU zn4m1tmo8rP1dx?V?dmXy9Irv34`p?NzcPK3h?|(0h;f}aw80_dvs%jREDdEUZkA#1L}_=T4+8LI4nwtS4OzCf1PT>bJzf4`#upqZZAkR_5A6+9LO52Q z74os|H3a0ld2V&5xPy9SUjn=D<8{euLiShMC16)?LD^v#2gfc){VHG=Z(GeefvG1Z zSLDQ<8UO%+Fl@hT+Z%leVX{;n)}#(3<$ zv%!})6z%W8*cllU?O?%Kr`28!B?#MVajXF=B41SGYKP}DxqkgCU`0Xz`~s!2^+po< zvuZi9hhvp_YIevofNmYGKm5$bnI2GcIMrtbPUFOBaJAQS|8M6H4t6W=GS1jln1o$)i zSLWas^4v{x;U|0d0SWx6f`(b(5lvW~Vw_o^?W;)hVg^zSc#4o2C>}0oq%leT#sQ!gO2*XpNdo@{VEg zfBccnc6?7AENq@UHWg9wD}A8+ddx152<=4}PtVWa$jdZ;9CCh9JsHeUJ{6Y7; zaDAL8DdJPqdkUpyBXd}1xj~`sqEnvb4-Y=h%TQEq$Q|P&A-cQUYS6lIfUT%dj)O+& z?QMmRj*XGm_>mvM>1`_}$>OP}AqV^FC?Z1n?p=1}$?yKyHW2H}aW5#eXc zp1{A)_1uTDGavUe8!GAj0@DR_z3^J6J}p3aVL7q4HyrvOU1Ehl)c2?XdUaERh@(Q; zY~n$)3h**nrkHBtkabE_oWA**l(n_BE8`XE@t*}m`Nzfee#PRnMjDVq2rbjnNO(O`Xglwe@A7lMGTSve zKn!zANT{TQGjIx%UuI)Jd792cm6QfBo8h>=XbuEW8-U`}3SbkEcoHQ2(BnSN5vI=q z-!-kNr3mPnnug<0#`>L!yD4B+%K*6zFk)Lv3uqkfN%X=9I9AKA)$O%;Z0|fnI^)L^ zwg>FNwxGl(xN2Qx_bV<<>h*KTf_h%TrID=mDG+M6urMQ`>Jft!cB7*UcKX!$C=eNC zM*W;%r)B%WWo$wh1B+g1?cr*aRR+#;2 zfNv-)h_Bu18ZKpWXx6mXJTd}De`b~&jP1qfC?I+DGaXMkXdc;F+>}O0;wj9|M%qe( zpkKBVlh~ts=b1B)QJ?3mzh^51qJtI!htI~=x$Q>U! zgtzlr%G_t2fV1bib4No&L;*Ov?jNp~I=)&!jcT_TDXPXFUREE_Qss`3u@(B}lraTE z+q5u>0%U+mbmWB>=DJsO$W%fua77!oPtnaMH)4_t->kb2}Oam>eK}T^*f%vJ(NnU#T z*%F%k2jH_s9LI0uu|albQyFi%>gO5~b4EDaSx;6r zjiOuujbeIg%5HB`-FCVFX)i?j@FRmkaN{mztkctP0Os#Kpfcz>KO`lkkGvksN`)I{ zQ3x{-Ih>^mR!e%+N9?nn2aKk%$>5IkVecF@OV5B~Pn1$@i{luV4nWj90gGZ|z9T1j zcb~j!TGN{WTU2Ozh`y6q39wdtU{q1Y6|xne-$%r^=7FKAuJw6)!F7Ul=*JHqu4nY* zf-x8x)=RQ1XbmtmG0D7Z&e{j~sP|tVYwUXca&sxvmz8}^2d{c~i3N^O2_kurYImQT z`fhtRwQziIZdPy{Dc5}TsE{IYFNg9ATg)vES2)At?{cVR+J5gI5%wPEP*PK)sNm?U zE@figOS$GP5%x=?>K^T=n}9@h_{H%%ck0iAf2W?d=)9 zN4oPwera961CoDiL4{9W1moU@#VVd-5Yq7Xe*v_^ekcrx=U{?kz(%8pvZJG;cHx3o z&f0h?{L10~5YbUNJV}T0v2D=K8^5X zXViH(xMk4)B?|P#dul$(<6HmCM>saJq9TG>8l9Orr6d<@4Q!$QK44@Zmhp^6=Q3?rsfeZ&-y?F0Qt0deUp@0R49s444=V`Y3_L z`I?tpMaP#ANdy{8pW6BBbx_73h{{R>`$Ge> zjJ3;jbX+1LY5)|L@m7U_CC@Brx19tsFgZC}K1R9aE6hrI%(;X&()%>PC_1l5u?zp0c3K;eE(e~u&84qBP%GI=TmYG1sgby)MeDQKjgK{w6-G-EGmJl z4iF|%bPiz8Q9UMrZfAuTYXJ9#oa8#Jp$lBeVq#*toT{;ZX9V5~h&>7Z**ro(oiCa6 zE>sza*CSnW|IOO~m*d&^*I%PuI(U#u0^*;he8V>(Y@EWvWexklm*nI2kopCDYwn;K zD4T7wF>Alw`0%PLckbZYe{Lm7RVy175U0Uz{wJsEzxT-VuY8ifpXL5fBI-Y{`k!b1 z841e2{|}9Zg)#ob&xQ-MIL-4B5$}dBpw`zt);8#Pjkxkv8TX4eyg?790cA&KanD!` z29sXltZikLEpKjIepc6ypnvU@;;j zdVB4}&8oP#3Zqhoys$8j#WxXBinQr`1|uYlGXEl%{=Iwq=c@mGy}}Qvzqsdn5(~u=?U#Rk^<8QDWQ4uM#B_t7pWkwJYHqH_z|zV>$HyPc zi6!ah=dks&(^D4u&%$zYa*hVSh>43sZdKm5OtMtVvoMr_A3}zPMu;{G7nr33YeD!8 z_<%28t_eGh8eF}4704Lx-Q3-gk_RdP7oI+U>Vx%7b$~u^OG&Ba<>gs3TLWb&=!=Z7 z-H%6ap>LIxRCGXZ*l^-|HaHyaYiw+s{74n|t1(1J zM`tC$?i|Cj?>()W9D;%|F)_No?n>3wMP+`RvY_P1RgVE&1X5E0=uW(N=~B$cj|MZ( zpmzP=wY@gH+(3>J8vsQKv#pQR_0`n6@)n)kTs<|_yvhNv2dc>wiS;wMw8fDcebCg~ zZef}oDi#~1MIgs?MW@E)T;fpEA+B*xPfVo${N0?5n@>s&w2b5)ESd*_Ivg=UAaF__ zLPW*x-zM|mX9)oA1J<7hByfUGmE3$wHm^1<2(!+2uCPJF8H5F#kqaff$u+XURBdft zS`R1)k~`38agn*dP*aYUmJVden9sNiIS!b#L}r0(Ksns*HN;~f23%!P9H8f86625= zMMYvhs}`WE<0H?4eFv=GWOKNsxjnLfvPD-zLu1Lewid$6blUi-o~p zw3nG~0A_-ngPn_y4?QXfqer;Y`1<&?+nDpLrQ8QcZDANdZf(2@Xag@+hT7Yo1=<&w zVxZiB2JoOYD(=jKfpx?DupXO_pqby^-k#^gw^L0mExN=_eb}I8;-;Qwpn6OoKS)05 z9P#(}w~T@|$v0V6OYUrKJ)#PZU=`ORkh(!uUK?Io2IRCVsjKTdEL^a(*7v8;U*8uO z6-D~2%?Pw+etUU5^q}is^dvnv4Q$qcu!_mDs@spCy%B-g^+rHj1}z0a~MD2 zq?ZSrS_5n(ploBT&xI#*0?NE`sZ#s-b6LxBu;U1!uTt%a1H7~mXU?DRDHMOreeGId z$3{okSs++EBo6FrI(3{24gq=5%B3EJiztHw^QwISg0!b`F2z~rQj2cV09@_y*uOgQ_3B-a~iM~ zTgw+tJCEo|^X!_o#|G&Cx@%3@blzhDk$@f3v+@H5jgIG24ouuz?>_q0CWZbpQN!W8 zn8HA6PN@*DX=!1vy~vfb3_>=A)thsietv#y8vv*~;>ⅇSzWz0kQpEUQgg5W~8MB zr#anivOSg+Xhbe0fx$ERa>1h|90e>U=JeNeR zV?2>^coHi-9~T!|e|vLxW1V!^M4!@^tC@kjB~jb470!6ro6av)AoTEGxoQJ1*n_Yo z^PrbKpa{9=7izn@x~fSB)R+IdlH1VmU~%+n1`erDF%lSG@&Gss!)V4VOkYu_MU6qw zD@j5^0;CGu0z}zUl*x7|I3%XO)K*Y(dumGHx?~>PcY(l$hkzC2ynbC4Eb}xn@jwH_ zw_v3R&DZtJ`$OZDuvh5@6uj|*N?u+Y!&`$?``fc(mKGM@TU!k)M%@w{M#{_P7#bQ! z<|BUHqzLw)6cJ>$8G$~}lu`g@v4?h3Fz>islQ4yhX7x|G00JROOD`D}O(=q#lc$bD ztC19{*J3W5L10QDbbcAYA8J!gcMM1_-c+YYEP%{r!8OyR?ea(o*%}hWKS%QM7!S&R`724~f+c03{Mf_E*=` zDR)47`SR`iY!5S7uV~+rDfJwo1JR2CY~R+G*&aUG%jP_9H#v+YQCyoumJI{-zkE-UF^?`5Dd;IwG z#6$#0rmUxBrPp7?X5KhPWr7q}90jhEgIU5w2C0YYFLyKsV1xtUD@l>SbYSf5JtMTh zzE$Y}O&Hr_)23%mpL4VfX~sA_Q4M5U{f&t1r+2mMA%v}-`U^9 zgV>Tz*lsG1nuUoQei$Ss8mY7I=hFCEnjQM#!-p6tH6n8&==Iz*!~n;AL@K_?v$}=2$~%A%{1u zq&B4u3=K0fGq1Eu9jatM1*qeW6=pfA?Z}twat&!|Y0s0zD<;3KnD=6Zg@l&pM+bjR zPltnL@tBk{*6RqCA>~kou2ks|RYv%SK)%0D-f4iybc`W>b_PNUBrDw=)c zXAF$h+q-b`__OsQ+ba_HnXpp35>jS6c`Ej@@(YX1ch;&7W##0KCEnZT(&ohW_g{9# zU?8Bg@TdE>#VW5J^7A``7%8o`mMN8Q+h90$_1oLYWiq+3-QBb)=y|Zq^3T95t}_H8 zb5_Il8Q$?HsCwoYBTaN#c9 zO~tSVa?J~#`EhB-_=BzJ<<(UMQ&YaW9k+Ou_P#fF&F=>8J*-`BaPY75c&mc!`WoDL z_vzH_ldm55Z;lNEg!4+i%oC>hDwS96RPNJ}(M!$-0_KR-j8&_z+U?-Hhxj)6n zx0Wi99rGrJyImNir0V`Ud0YUS&n9$*m7Zf?C3!PnthTmx#YOr4;<&l3z5OIk-z<*t zfnHqk=3}5YB9O?(c6Llo^#9!^ca0b;(HMt zeF;F_5AXki;|J1~{FIaNd3$>j4%?2GKpfDW!7hXGY`2O*Oe!H-=;-Oqhh|gTN^xFZ zu3s6QYhQuQqG_b{VzMQ&oWa@2>3MdxmH+y$-Cn#JWNxH_HO1GL%6DVoRWS9&O=)R$ zg7Ae47X;I(>i)?E0RR2xvENsC^d~&%)vFW!0sGf3pDuD*oYzB%IfLbKQ_-m6xnn5U zaHC^Qx*-=YSsG`Ye)V9laMh2;wDx4q&6}3xj>GF`==e=v;zgW4Zkw=O{H3C7(9zVS z`$V`1oTIQ;?vtSsB*S*`Ny~<`3%B5SzJd389=fPBR>gqJ`1D|Z&#L;)}PVZGZ zor8RaA3hftk&uu)0*Q~mD)8hi1RTuJ;ulKyxHT%$=tSS;74lkeS=l*2nHE0TSMSw$ zH8pxeJ^35J5E`1A5nnz(CWx@Ini&`wrd8&iWQ31(bLqJ5c(A4OE66G5fz)^s7|4>I(L}qmK)YF>u>(#@&;|Di10jdn%lz!7lq162omYW*kDp{1B`l z@Vv#+G02sRd`>yFeuL-Z!J&CN`ugU5&1RZfT4&Yyoo(#wxXM`Gehq#Nfs{MrZ(RyH z7BoC;ln*O84SFz~Jb6;b;O)|E>VT&bsM=3RNGJplzP7^V3G$sY`1=---__XIhjvRR ztE(#X;SILZ($G5ZbAf?JZgX;eCG>r`BP8?^l=^ujf%>MgGr+$9q%OOOO!x}Q-q6f-OM+5lUY?FV`rD@zoeG;_oz5FR5q1D0JrZRjY z{f3Ut$98|94uyf=?RBX{B^@ob4YRZ0zp-Yi5S77t6k=yuY{CQ=)%GNXUXUqqtb$GCeIPGvs6b z&0Dt=o-}=79YlTIC1FC{;mI+9{~vqr9Zz-t|Bt_-yYo-~WF9ecW!{E_HFvc|FJDalhXm zYvz`!r&&Xb)sLi|3 zz;NG=MGMkf$AweAe;3El|EVzUx#Daod8lkNJvCLdQ|L+!y2&R3tEojd_Ws@=LGrQY zCp1pU==+^0mrcBHX`7xph&|vDzT{YX9Y1sZfwHo)kt+hFsvrpX}eZJ|K z&cuvX-`;j^_}va8>cJEnGogXP3ZEe-uJU{( zfkZZBLg$f%MRt{YfZ8F`!NEbvHk9k8Z1d-JYJh>cQ(ej8a&nI(CAq23P{05DIq^qJ z0^E>Gm*~f5{u~u>C8MFC5!Kda1ap;DWw+V*`vc=4Wbth=^XvLT*tV*ko|6dIE4#xx zYq;x2ol8B){fpxGgf}P;hVVhJ2A;uC-f{dEEP>sg~D#?1RSC~ zQO_4xU$9<2Q=oB1z}2+`XCsi9`phH7P$E2iqoS$sg_6?G5+VMbtJh>aiWTX`064xh zF&S^1mdZ*uESR41pFDQrgl}>(%S@a0JFv3M*IBOe@f`;Ul9jD4w#fK|`PU=k3l{`8 z_imN!Ztd(8HalK7o0(dmcrEG`5U?Vf(>^n0XS`TAsEVDLsTvqK(#pY6?6Lp3xiCHb zRk)hRO(`(Vp!9$jKI7-Pw*ECGhl-IABO8ro!p6TpMfE|PS%Ksk^+sTD;1e~qn}7cN z8N<$pg0CTck2$#Tj3AV8f}Nece{fKuP3%ML@TIlKDt@6UFl1I8B40kB7D?0T0DOVe z%R*XNGq|o{_tah!KT2;eWr(coJCozJX}h-yLCroYM#=cFCMuUk$c4g}l0GCU>2cEc zq|1;aU_n0EswE~is{ZFd*8c6(-cafF`T2QyC8ZPa%J&6OKhr;{Dk-INNqb<6Bn#40 z|Ko_jw}d+s$N`yn`p}K^%ZJ~w$tZq`tnO@-oO7Pk(_ijUZsIa%c=p!Ux2n4O3_ zyLU8!VPVvlglvu(w;izZ)B(8REaRfP#~xm=C|tq)I;*htYvxZ1M90E{^0jEY5!cM3 zLn!{&ZmIwho-Dw-o1riWj>BFu0=Lb9|;RSCwF zWH{|uztUYUXP9=o+!L9gFTTaKHrGYw;Nb8hKff9PX=+ABwGTP=hbflQWW6k8SR_D2 z9pij$G0Uv~m2i{5s;Zj!qIZb$Yg6}2zlY5+G1KfrS+~MHJ?$O?M30ZYt#I*0*vpJp zN$LDHi;Cgl4Xv$!V0eOLq@O9O9v9Ij`o1fCtfwD-J>~Cz{21jT2`MRQcW-Z1lhm*; z|CI;#kknRJB}F46qt4!T^9s2^C&H+uygc@{^GfwG+K32iCO-EIgwz-A9X1@G7vUS-rbQnNt?xz+9FMO# zaD%l)UMMQvEMqWd<>ai79}&oPY~$z`xL?`SMee?{;hmpP4p)p4J`53jh}Pp7otber zzHvU)?fR}AuH`5zCH2SkQ9;}lPB{(drbfwS)T1)ZOWnU)6g1K@^6l`8-m08shrz^r z6AQh3ZH8YmK)S?SN zSm%XG}~>J01}cAz5^_r7WCPm{+V8d#x=?dilP9VYY-r zL^I!=!nf}!C{9j?@XYthEMf`Fw|TR_WoIi59=(6#2927U+Pexn`LxQotH7%G1_s^* z3Hr1}dIYqv|B4wKW8eal)Lya~`gkUbV%cqD1J~;4n2Z7r1~>cx_{5o+bU&w|u#X?T zXJ(9OE?%sHk=o-P8M{q%c~=MgV;8lHH*Yp3n}2R;X%U#d zPcP&s!KMvyB-jH{@G{o9j&Bs;NSyM2ytKONm!HpLXK#O+5##VfG8)*~+lOE8h!6JS z-%e>Tz6}VlVZL^)vb&pNagm{O0}a}ldEq;li~c4!II9X5=4ha_5r;WxpYTMHI0on1 z%+W%Nfgm69(FYb596t*R!0aaM7KVhB6?N~&{duR(UT-!Ze}|jfR=4Il{Fk=G1QHYLRT)ef=5oql0zW>z!Z z6!|qHgIt8*C4lqfOzk~Th6G#P^4-gsj*PRjvxS2m%X**gXy_Z*VFeU759FEWBewVo ziX6T20|STMAwS}_Rl80!J|!(pV#hs%f&Pl42DpWaeG3-hovkjVE9$y*7zus-Z+A4# zF$ha94nvUbM?rxppWiMc^3%lm>0)^b%c1GAkKG*|wrFP_`t|j75Ep!54l4pDX#D9i(D2K)-s~BAI<+0b~wfFEme3SX+=zVIVn(7ez!}`gQaBnYiVm2 zE)FUT9`N3jv|bnS2LYE*0V>O#hta|{Zbs%C*PF#@nruVZ3dGtBMn3yK|ZCt!ru zRx4`4BlFS7W<)7k0l9p3G_4^+QgpL7OZwg8tDsI*Ly&1vILw$wM1=9=$)fQ1n7`fq zSEFww~Qw<%*=10Vm(@lV$IsHj9UaAVrzx{IQRJ1vu z(9W@e^?Bvw1kfl+5J92xG2Dozk+fClDZ#ylZ#ag&h6b885fSohjz`V_b>z~o%l`p` zl1)tfJ4t>tG$^EIXHzroj;FPEbbPSr>gf2@EtWE#mXh$`ag9oMZ?|~S_STMWT~Kt? zYGX!wAMg9SLjxlvY*`c_(c@xzDfh9RtJpCHXJuu^nj%y4s2 zn1iufW1od_)`t%ty~4{&HXwOalm!M=bGg_ZHfoOYzn!SULx82ZV+ zK6@wsjj5fO=ZAa+;9}Ie$9VV<38)8;?d|PRSm&Zq_Z_|N)Q%I?LM!50vRA1BpKjkrMt{Ltd z_4@eHHp5)V)z`mmc`y#Y^4~|>tGM>(V->uxq%vJLfWO~o>aT!Y3faR32P43JNkIsF z0N5H1$9*fEgy*)@|CWUQ`tLrSNdcPN{u&r**b~+QeAK&+IEP_#w53m6me8<};L^t4 zksEAmj~;jk!{5F@<|9bA`VH@`N)&NZX{k5FrqVvr2c_=YSi2?f>yw5iRAG z`RX-6?sa*$odIsBC-_=YLJRx^?%vCnFDnP{W`N$8+|37V6ZCqh*luqY@N(JpTTxsT zJPiC6p3ln4%B!M+!~#wn@ z)Q2)Yads|wJ`VzTU1>qaa$St&uV24TGrE@@hU|;ftSmqdbTGsmru)6iQuq9rX4U-{ z%vT};9bZ5d!ut!hbN6|99f2+;0)Wp@&N4eE2!ZSBf(+$$Cg!u8W%ub+Rg0c!X;Df^ zvGorO=;B95qV8MgJ)c*8VkS+bJCx8B^47K;tBtLV)mWu)a&_1yyuc%Q`74>3nIx%N z`*M1O19zv50c?A|F((m$fsReY+yeu&aB+xhGb)5Ks7rMv{4}f&5z&D)h1t2eI^$PA zMMhq^ES)Hrv##`}Rsk8V?@|dJL5vmlN8j_%7>Caps!zLl>8eX6Cr| zEEbwiVX;9xDNO40Jm6e`$ecb!^R_M0-KVTfBU82f#PqZw;suCUe+aM6WxjJ}Vw=&O zg14(n$JCfJZud_QTYrUn%&QCZl}QpGbwLHi6j{i-G*35m9Ao6CxOVN@mf0M)!El-X z&d|D*t*v)qA?3!xK#$3$g;<-AurTGXUqT?q27n#RDy*-qy{gx&0)o#KcJ^~{gSm%# zoZHeNYDYESM|gWdJ2n{dB))kPNMLWh{ry=X!TQe6%a3!$lGQS|Eq#g|3 z<;B#_x@kj0@o{Bk-ZCLi5{Ow51c+ ze0+S|e|hryRY5lzi;>0}DmLYxs8J}@t?X{5D0lH0$8D3tnFuKxzEoUV@(A!2vQ%G~ z1?V;4Iacm(EOyPZ1{rfd&&Wt6f)+48qaDqIdSsiH0qD@QFRQLQE%XXA^I50|eN<#I z0wm2J`YO<45BLMGu=gZ=f{c5I;j-uuzdAWDP*iu+R7p-LUkVB+^%5!E4=F8Gn>zq# zgYiIJ3WfVC$T^rja6wg2mSw%s#uIfv4L2tHKv%e8dxuTheeE`o7zvTKmX=?w z^h3$vxKH69tj}b4Y%xq;mwt;vkwG|@>QgfSztWb(Auwme@wXy>82jpXP4vdutNi@w`y@6RD3>EmC&-s) z^}9eL3}6s?h`d8bf*!G#YtFW^vZ5BOfITn?6lbo2(9=^@Ro0z#I)o?RqVvmh35nYw z3_@>+%Ak7IYL$=eDgU?cXn4-|_TKAs$bxc#Vw-914crL3d zO3v$a{6NUN;F8zco~og6GTuT|00JbnJ<>UvwITGL4P~|hAGtTbJnr^cg*)T5)h6F~ z#Dj{F|J|QIuY%}!836VnHE1#A9F00g&pi&_FGC-UDLZ+JUZT-5h1TT_K$82D0 z*4C#(7)1iA{U{4dBl%tFy>|Z6h!LIYorL8ECWY~NES0{#e*aLDrHCiz2l2PS%0-=3 zX?NBc5ipBU(f$}ZSUQM19y{1u4eG?o{^M>iTUk-QU@v%Za~Z;RiBAIg4IvEcr~@_q z^zmZg)Xtxe07>MLs%l!}FM4O72fBua!Rdc)0!Id#EqWPl#a$p^@@i^{y%*QkPwJSM zyavn%Ic2H&X0*P(zFhOYCyOjGPfaBJJ71qrP~ZVB^aXl>%t>0Bcl7r9miQdGOie^K zbEZtRFci`!uk(3#?@h)NVK3U*SXmd>knpR(#oBv%o&;0ltcSQEl14nnkmm4XWf#w1 z#_?JdA@chtS3jM-zy=8i<(_9dAXpZy%1c8t3o+Ekb9jZzrz#<)2rZ3oaB#@8UiuCo zA1FBJmiMstc;)N5!3tvDmCLeXC1L?wMb9H&WmMy2u z7t%P~wtl%H%veK8cXxM?K*u-Cr(2~)jC0v{c8+otafwM-=T_P73;Y%38o{t4T+mqr zxIz_P_B0T6;@kQ9K1~J0U}$KVvbRg#A>xk;yg%mRIKP1M@ypl{nIC53eqKoZqo{}% z8H>StEVP&X=Weg*V(!S}*~!|GDD zdQ|JHqDrmQf&x5^GTwkY#G`n-s z(a|A!iYqTz(n_}-|9g?)=d8CLKR}*T{r-I%?5jqW{sN#{NW9Auw!|}B5?H)~RL(Vs zhm#sitUh0U{bmP*bGTw3K4uN#`~C{3WQFXFrqXGgJ>dh9o(B@fTFBqHYoaH~QG{?b zY%D%BG)G!M$FQcpULV^UCocXBz0cW!4o(g~XO?MB)H$P~qAm*w$yh|aJ1EIiKjaml zhUpYZh_4Wacu~(q)0YNGYZVY)ByMC|yB0*G9)ksyjTg-Bwf?&(^6tQ#2HA_TQ(70k zdPvJ<&JYw}666FqdG2!GNh+r&NjE{oBI4ug*M(-2-+#6+G}4H!{``67S_Q=R zYrp(@guG)roUKhzNKqPM{@Wv6{nJQ;Feh?gJCk36wY$Q}OT}xUp@2$e7P@bpds|#q z5I-E+K!3^lXeI4-KVOTr# zw}1MtzlhsYAb*F|f4!&uga7;Izc2pj)Bm?7|6Gy(AJ=4)hVbw|asmDyYwvIc=#Z|i zP)AnGfVWn_ClL1+7R+>wjCQ_6J|rOLXJ#P2-~(zrYS&@SW3jh|!oi`C>-Ie*Q^9{e zkGyg{qH|$oaCo49t4Zw=-%oNE7Z)lQKEz9Trp!y>I_21ik0n@!b`g-@>8$?LkQ_d` zQ-HD*!(*u~aMq-qA>%Ub&Hr;N{GS&swW-Uco&54NlpK>F6eoj$CAdj_C$^B6Vf(U^LgTH&V-5tG;|p+Pe|D^uG#$a3ErL6Lw=C|ZsM%OYP;=!iG0AU ztdjE#5nW4elEk&`M*s8YQ}zEcIJ1~5naXm+A7i6(V)^HXeoQ!-iEJTrv$JE%a|)-= zo<%%G7`uCWuJG}lgJSUdihVyd90sk;D0r~-4N@X&jiu0G9*eWHUXC+p62!@VQ5}@} znk4_p_6+443ufl;KUkBeTy4{7>cyQp;bYU62%u(pvR4fFKIj zLd9Obq(UmQHFvEh444s}+4f&fPK}R~QbuZ4EGz1x-hH6qx8rj0-KY%D=v(d`3goiT zI9&HQ=G6W-bu=x6Y#+aPap#`JV7e9BRaGUbdSv7r=vV;$OP}kX9ciNm zwCVIxt2 zz0hb*gc!~Q*>P!oF2w&#oo;vPxXKT!+vypmN&3+2k4w+#KD073nBl&Cuj<|Sc&9V( zK^{;grA{0)L8ZC>gYjt)O#n9DvqbUOv&*N(R+AZZhxJH(+fmdp$`h6F zs|^heFXjXjJYMmi=ZLz#8Vwi!;lno&aC8#9hok)z9-eXMIwH6}b*Buq#2(!SX6-bC z@G)qzKym)o9^yyIXnL1}nVDwZQ|*Y5kmj86y?eb&YipGaAF7w&O#MFjZ5?;!sHLUc zmW3fLnm9-Rp-z#Q3^W#!*Ft)*25#Yc9XG&g}b}Edd*St#A^j7U%Ru- zkBZ9Aw=V8#92gLIVFb~ruue5UL#hlPe z*G@1*(M=0HV9WRL+s3+PW^aXV`U<+PpDiK;%ZbA^%=)kM1XWiY4DsCZGx>`nFFux`Dvg^<^-vi{?(_FZ8Fpc zq+Ux)54gCwYa+5dbrv%?b^F_|a8H(%3*A2W3WUFoyx65+eHeTM=9YE<)O-GRTb!Em zI@sUUfgg<89UMC0UGY!Dw1!_vAV*4zU8D$RhA>d)`;EgdO$<3l$dJs;h4%vzB$aZJ zw|wEOKz;D?!GzrVs84S!jErW7cqt$W@EDUA#S=3#!QRY$)nw;B!p{>Dzge9K-Ymt| zOy|#^pNSGSzsZmwd~SbdqmC(5x~kAzz_6~28~Y@PPT(SF8fc5*H(e=hSK0TkRk`@+ zRlT*|TIi~^A=Ssx!ZjX^CLDcy_4GZn{-BR3vP`_3jJmpCqxdFSom^e@rURygL27-~*aOm~g`n%p&0V2P=r0I#PJ6!XHpF9Lb{Lv7FU=Wi zPwe>wg2XBY$H~P0*Cr+=)OwQf7j9_6^z?0q6Nt{pXFP}zLG~gRm5f7x9!pAI{CqJ6L6(>OA<*g_8A*2aX=r8JJa6GekuRQ%G<0;3}1xTQX*X(So31N5YOjpu4Ity)CzkFt5b&kIGjKX*6$}qW6u?G)yQ!YtO;I{D( zfJNJC#ruFMnV6_;Qdz6GFRiMqe0{{SFMgkB5{bunH!u>CKGS+MPJa_aysBPBTbA7; z8y$^T*_=EYE9`#0#Ce;h9ZmIJXye%4zI*P(5a-fT_jUES$ueH;TDWSEA@8r4;aN3+ zZY4eCCxLht$hJPDSRR(QvW zbwNFSGT8HFkTlW`rTc0h7J+_N4i?NO4-tR2S}a5#_Xp3VBdQ(V3o&`0oC=jgz-ez0 zT#oc+4_zLCx}QK>Y~l~xruM0e7lSTnJ5ge?RFb>P918Dk=?&Dkx3^bDWDPBkizP@D z;YJ)!xo*rW)KHQ6+i%}UUBK17=w?CQ z7aoqt%+Jg$Q;Zoy+0PsKCU_j2({|g=8pfeE7wXklXRcn=OBzOWYGywmH5gR7xdF?j z?OJjO83NT{KgQ^-rRH7PxEF^!kBNoESI)?YT;-}nSJ#)S>*}6HzNDvLM4qWDU*B{Q zdwSpxnh7w>FP>;&Zbdp0>)IACMC1-H`E=pR(HccY5m;i6p%uTie33$Y-SU|a{UwvU z{R4wKzw7an+p4xnLw+ae-(Zb|gCUQgY_Cx;`d$|+tBJU*Y;9=)8`tVUiq%ZBcJZlm zSqHV3|KXPsIUao5*F4Y+2vAeb%g-zHP7W^z(*yI3pS?(RIVb2WEiL^ejkRJetT)k7 zz-8@lyz|D9vV5J~Mq5Iub>Q$)@2^KbQXH_DS?-n2E1HDQ&W9Pf;+2Y!V|oEP`F5DHDClt z%RVVO+^R^O8oRl1wWM!0QrojSoUISSGk~;GJ58S}*+>RRZ^>N+?_QLbM}lx{x{0I{ zV-Zvty{y9(mV_&?gs0EWQn|Vg>_WjKUA1rEP)GXUL0@F}5Mgps&5%ix*oyG(MS{0bZDlG9Ur+VoqljhBDl}ge>)ytb&U4L7={5Ri1lX z#6K_3#%*gn1*u{8$6JuFA0I!+buWUCMKnwIZPsAagEHrI0_#7P{pz36e_g_XnnH;Nxnj{0nE636i(p{2g!e6+fPM^v6A*t!{fJDg+eG!wR z!8UT8OVll%B{>;#ljQFc*6D7u&u=Qc5=wt(GO0E-9e`$Ra;;!gWM)Z*TpgwHjjF1v zu_BB|#$*H4{7LqAD{J~`crA_6HMV~kzl3)o2~&73uiCSGexO2lgapa8J`NiI*@#){ zsyA5KaZ9<~EG9SsfGat_`?rbHj@&K zFCk%S@vJaDqcGy{GCp`m0yUxJd}U>v1A6o5{?rkISL;cFMA=rSsS08Bri!}ycs14e z3GZ5R$W#om#eVzYhb{4C#tFWDsF=?A_iw|A zND>M>BT%79{0Sg|L9e>^(astB&gzE(B_voSbEX&9lai7ON)ilQy*#mGsggs-GVk7L zBzU~|i@dly;08iplkOJ0BE4loK&jXM@kCDbK4-tpUpk5NB(c7H_9Y=+T2}T6x}scQ zIx4-?L+B_iZ8W3}et^8uF`ZDj>MxZ0#%g|x`%HfPcrHQx$rBdnf&nn`I0QD5QjA3* z?Mis0oCHZ=-$oeSFQX47PDQVvsWv(PNgnrC_pXzAc}<)eD_<0YRA_4Ik6dsBgJ^k9 zoT&?aV)YDxoQbjN>DR{b9+#A}HR>1ma=w+7C3c0n7eUu%@ZMF8jd?Bm5aWCCxv#nT z#g4H=vWT-rY}|WiHu4=87s(dWFF905YDSK-iO|!hPZ6&{wc2wlh&bCUEgfCP9ZzNJ zi5gaT9PuFpautdB2=9mfc?78al(g%I>qui#iOb2685bB03W-jit+T^6}?z4aXAjr*(^s~N(I5TsQ z6a!q&B~bmZ%k}vnpG5S_{;9G369ft1LHa|5as7qn*P$1{>5HADp+fhLF!@qFdij#8 zH*@EFs7!)2CWH#f&0VIs^Fw6M&He1+H@NzqBDF))5Fme(Bj=cj`EfjfbGP(c)2D#o zKtI4;rLL}NcVwT-cXV}qYuPU=8#dfPNBa6sDAf)Q687rTDh}=uS(F$<{9DLB(cj;Z zfpnY;iHRQ~wZC+_J$>rCWM1OPVgDTAV!eF?ZqNAK+~|zQsFt~B#bdZ$Zcgu2Z^jKWqbEo%tWsB zgmnnzM!RL&)f=Hjktxjw)aSyXF$hGnkJNX+g)a4B#$Op;i&}3zI~Qg(81+sb;qN`* zO%fv(-@K3TIFp=g7?)Q8t=SRL&BcI6@gPxH+1bs0nq=)9U2kn_66>y&;<|nN0l~w4 z3@%S4;t5uJY$e>(Jj9%>^3V9=1`Xgjydcc{v=Oe|X&noMYQ=WJ)aPO)fGb~Fu zKbhj)dv{5Y;So&%!-^*5>?>?+WDi~+06eZ+8h`XmS=kTJb-EzPArTwsjz|GRbL12w zCna+9=$8IegRaeH^kyAfdwa1+PR_O8>kg&_7pbaGr%y9+xpZ40mGR|dSHgy!P6W~O zNLq|30bgA2gOt2ZOQVLLE5ZJ!F}okH2_Ggu@}OJykstB#mX|*HFE%{ zgj?#eL3bw>?lC7?|MtQ%SNvhQkevZv#2nSP(*x`!+8x z0D!Vu*kXm01L6*;NFhs|J(M|86L4nl1D-<0@>v*l#wtD9JE_TZA+EBtkS{mkf1N?W zw7e0VGzoH_k56aohn2}W3Fi<70sqoce(7jI66i*F5fRTZSBHWPCAZxpZ@dpBJ$OoP zYuoI(Yfo{ppAjAos>YdkW;V?Q-hcXZ2y8>9>OQ;R@JP}SIPUM#@m@KRoV6f9)!}@H zZYJ>l)0@}}Z5EYX`fU%G`Vzkz1(0364wU8i^Z=oHnyn9VSx$O-YO6%WeEa#6q6w|K zU6h&f<;y98>-agSy%7f5ST#6!0z`?_9CR>D@|yJPnP2)XhR+bhCvJ-PhKIAj+$F!0 z^UB`}3(x=loko;MgM;rPV>|0KZWU%FlB*p1ZhU6unYUkcTV-x7O2G=5%z66=Xm?&9c@Pi7qoY)BV`2gu`_hDnFWzwak*>aea5>5o*xVJR zY&AdgA%}D!EcEKTjh$BQL}zpzD8o^H{rUjmFFN!EeB9oVK*)y<0wG~(au6@Csp%a< zOS`nX4uxmepugM+Q#Q7sS81hv(Xt7`fzFn#KH1rnN*;uBpzRSwvr)}8`3!ecQ&a1y z+2himw@x8re|qLYY|9wYcUu}aCO+cQZm;$;H8tP8HxIXVoTRENo6rXg#!w$@Bn{TY zsC?@tq;q-!q`1_NrhoFJwxOlTFD4^@jbU_e=-vXxv-n%&>;H9c5hcV;RLgUc{+0_~ z-@s_}4P-|UX(>?e%U+0BXnbW7YnQ;?7d`P)Q!fP9*9cq&vowO+-K&sXZoP&Rfd$=W zfL2pi+E0;ve353;2VwXU*mRkgqQufts8&2W+re}Ulp%=1)hahB>(n(zK2!Ln#=;9> zr=l6oDqz})d3n_EgU3#+`9(yWf8N!(TpNkeTQps@-gS7Ckvs1(>=i1qeMwc74@w~) z>v)O4wR)zl9f}ihnDn`TO@wJ>J;jg@S0;%4>$FZ!p98-k3IcId^yhIuMUjb&X|@+& zNnsIaq(rns%F5gzld->F1+tQ>Qx`AF9Xlry^`CI*Z z*~AjnV{B|vhslmq*3=w^3*t1{a%9WkH+PS0)c@MTTd%!s$M)ycB_+GMx_mMM$t9Z_ z`Gv%LR2?iZ6p*4>#%Fm2xOn1<6S3%IU;q+?&z6)p-(Y8-|733h#X7C6=dWF>15H}g z-M#$zBp8TW?Cd(G`reJ{H>akj0S?*gJUgwdY@Li=SRiIOrxiHZLsBecMIf-&^cH-3 ztDzv45QK@MMZuvUTP+U~qVPd4u-T9m(x(~}L@_=!`|i)@SJ3WAVu+tW4=)0lC2txV z)0Gsjuz>2AYq;80?2aPwJ{tPaFnr?tL?lQ2Yp}*f!n}0YRx!xEd2VNG{{S4kjm_#= z2CNnl9Q-Ky=*xvymNEbkxZ_%kiXuUv@^RXNii!%~z6V9;+@6~o8%Ghh)say8&yoMR zatyZ$p}v7=o@$b&$ZX8$=u8)eD`+7B6Oycy`%!qE4ELiHv*gff5q3Owf4)qu9@gri zk`g7bK4@o63(|B$tCG7cq+TQ@>OpEYnxJ+{oJXT7$23DxyS|uYs!Bz zfy59!X+yzj76e1D9iGvsKw9L>&ou&W#3U+W+MV|R zf2)$K@)kukx7mp|dGFMRzfELIj9mVlENs%ukblpl>$^;sa2s?l>a+_Th>3cfU&8E8 z{qg(lx~IVx!(~L}MK|1!9(_w<6t#_}F*4Bc(v>eGcnH^zTi@?s;V<>F)?*@b*+=vW4SoaT$62vHbS2u@k(E1yaNjT zBD!Qnn9Q@XoELJ%LhbqLyJ>R-cp#^_bvOlU&=kR5UmB~wSn%_nR#t+$Ic_W#qH^~v zEt<wJDVuv6NmvhSqtdn_76$LXUhYaDqzE*<#aktXIRnht8(@Cog^VpOAR4 zB*Sj2L#w?-BW{^ed^6wW(6@Opdm9w#Swg+ZWjD(rdh0UQ^BH-Jq%A78aU~N086ozp z|9Tful6I1%bKJUBHPSKn*rD5wV3PAHwyiC{P57hhVhPqTJ%|))2P7W3Kk^N|(FRGQ zA@+Pi+!lLVu{Moq13x_68Qhk5;dx>m59Sq=l_QO3+S&69JbF%grV>| z9c&KT|2}L^$;Xh2L*L~R;^Ag7_6|eW1qa`wK1gVAo96+Z+ivzprb_OfN@OP!6VPDp zf9C>-1vS=Q(EjX0p5Uo?7?Bfpmi#Ww#{&9c&P&9q(u<^IYeMQH^X9O-G88jt<+}d6 zrDY}Cuk)3h`Ao+NIFrGjbJ1Mm?WJTkc7QU@LPhw0e<&QRgP}vG#F>!6g6}dh5$OG) zZ85hvn1f*a%-r0;3=Bt6ec0*x%b#(A12B%zp#h$(cKM%hxg?GAxch*zf#lu71yQG&V6Y zvAgGF+tO*KyrpeySNk)}G(SvvqrK~5_v&bGQd$}-^qG-{nzGPWkYg`}8@pm+YTlA( zD3uTE?%q0=YApKXNm!C&&L}On-ODfoR|N&=AF=7W9~Kq{XGbOsn4mE9{QI*}7UH@v zoXbSVYayu9LQ2+~q>R^^gE-Y<$-cn+z;J&QWT9Ei)4&@arOcF&l9IZYshtqcrhI8h z*mZsc<(N)JDJ|3TrBxpev5fj)XKBW|mpUIzXf~c|kWWj`ZtY~@wA+nG+1@vGm2=;X zNJ-4oL*omeXO??Y)9OS7`#`Dvyzr#=(UX!ACUYKWl-P4^w8uWTUQGi94cBET*ip@! z@?l#1uA-puQP;j&p*KYi;6$F?T-bhgNr-)Sv55jSFo=itzn2{MmTB8PMI$)13)>u1 zzZ*S+nC%C80Y`(mFqV<*{KYlM1&8h+&Cnt!4;r`K(kx99L*L!sS#N6i@a;LV)plLo zE%n08CVb7o8XhCUBo-_SO_O@FG(W-U`Mx7&y?WpG4fvwC7)uXV-%y&4>8+LNCY#-& zis-whN{#~f2`P@20w82ChvxazI{_QB?2Lp7C1xAR^YyiT~XW*ofj4JwhnXTn>*s8S%0T_Ozc zf!z??=>HanjkkxU*t&x;&vON0VQQzjd9;wL64aCx<=GlY7F6TvIVz^Yh=z@yzyK#ncr}_3$Gp8i89F_LIq3CB$j!=P_uR{sGk{ZD zaZr$B(3=@O62G}ogl779O|G>KzpJ{4!l&$(YlRV?hudhOzZK0{X7!2#{)A112vmF& z^V}4VT!nT!u^Nv1KOr5`fv@6KPr4hv6+h#1;XLD#2Yp=-Z48y?l)h#N3~oEPCXr`7 zS?9LHNhlj~zMx^HYZ0~ay|q#=EK?iJpg|mno)(d%52=DJ~g72~2EWua4 zCSC0ab-xPN(Zp={lWM+^5lmR7gFi%fU6D=0B zE1I~avE_EpOeKLi`i_as==$R3ci2W~)7%(DD`z<0dqF`}HT*Qw(wlhKQf98gY z1TEc%7{3=6-*+5d#(6tlpd_gOX&9|0_9T4p8$iDhK@)_*of^JEMyI=Zs4T2CD2yBme-`9)O#?R?E#xJ9dIuC_GB7xoNGNjqza0PaSF10cX^Bi3*>l;)#?^jmS#eM`5=y9530@1gSVDrkXe+1bQj`Ys(EMk^;YFuCZ0OOP@Vwwm`N0;Pri zTqb}>O}1@9k$J-I+%SWeh=rUNOOEW?i3;M&RuwdbxPoJNv442WZo^ZxWUA&vkF;2* z`kCIEtWPpjmf}Dy1jIT`NJNWxYR$C9#q{=SLMFm*=vWAo=R2ou<+OGdcrAvbVn+9R ze-;)RZe&KQR=BC&ym^zj^3w5cHW3`^Ve9i7xQos>`#$UnTQ-d4l81iFQGEHvDPStW zO&jcOoyoVYZ?$+7rjVi)JD-id0+roqIhgk;@h;pk_spBYrP<6x8yi9-j+V#441DHF z|2Opf^6rr@ONz<`WW$@An7+vnfyH;(XoKHj9G(!vWtPY;-5F#m<@m2lUmro~l|ur! z#+g87A)}~h4?ri}bFT_pdN@cHj=kH`BSs1MDq0obFEQ``aV3E;Y>ayQ<7qHMT&U-s zoNdPwg|27X7#1%$z7bTzJL6Esu+a4yDn;%WjqZGf8b?;VCn0M)#dF866~_s^(Lb)X zdAf&9B@njBRSWG*uw`)e_iD90_?g5)nkBBwH1M>onMqAKR?G{fWzom(?3~=*!ya&O zR&42E`#-U!OqJtzMI%ED{Pa4feml=ZZ*TAPRpiMjSCy8IJ7ZC!9|0!}JJ&m|poB_C zp`FEyoXB>XbhM3RHtN8aL-W|~278;I@ZJZC)YJwrH>=^CnBHv<2p-yWbO+i_23xig zZDc*8>m8UF@jI3;pU1d$LBr;^A)iNc6wz~F2&42u9wGG%u6H6eY*eo$2(mzrNlA#- zL@vX@hD~Bo{rOTC5`C=N=SK(`8wE=ho0!k9NljPQx@=2v0S?2~_1FmY(Qv?k!|t1* zD=}mqBYaBGSIDtqb%bv}sBhYvap$Elp`^`Wd!aPnsO66v!PU`Vs^J6QdUsdY)ED}( z@3Q60gk?tUwoIWnp~QQ$D(B7*P?m4fKBp-MPf*16k7widP0Y<(-WVtRPD_c4x1OxW z`eQ^!`5ZtgPfki=7I0h?2Y2zum#VGt9H)7pTUD{OL>LeV`hp#hgI0Zc_a0Ob_61OO zl|&qPur=u!20#~Ejz`_q-tt4sNl7)4BxF^qV;pP&4<`^k3L|=Hn`7KJBirLqcF9a> z8Q#5U#@3TiG-46#KJIg2S{<|ZG=7ljmg{u5GInr2yN!r!U?#^5Ibo@UV~9@9vn#k{ zDy+$7aL#y&u#Zl#Q}3h0ILX92O>Ay&;4ljsOhgYi*JAnG=Ynhtdr_G{!tQRH!vOzI ztZi#kxUyCpw7Z;2I9O)nuP%___So~^Zub-UJZ~8lao4oZV6n@Vzn=JE=PXNEC2a8J zj*hAduzihU!YlP93oDVO75~P6m!y|-IlLk<@2@=KdDT4&aVu>s&6bV5`@YeO94 z=nZ3&X5NZ}9_HW9*z$^|{Tz&F3YbEg}-VYx3B>7@io9t?Xeq|tn~PcPE(PEWC> zTynsyC>mbSFZVb;U7s;`(pHNbPv$lGPBr9X#A`+cx%w zHjkYI0Pc+?*w`V%g;?7*DQjzMqn6kXmc7WImMI6pmTv1`NRJ|c52FNUDBoN2C>q=+u58<0kM@jXsGwVa0Uk$0 zYhke!0tPnUE%r5z|54GGTQokoI9$Rc*Jk4BDReTHKD{<@VT}C_!6k{CqcK72J{(*vD(KZmhAY(5)B>_Kcuj zPO~sZ=;AsKFCee2jd9NTfI_R2@w|Gm>ztvKy-gxjMUIa6c z^;YPq52$5i+DU8-2#4Zs916C`Y`FhD*mQ0%4T30v%FfezsD(VX(zin!cebZkB?i5@ zLvfS|<|Czd(R(@CQ|TF)_fXZw5B*O~h~N{15Mf)aa2%Y6&8b`g7&5=|rR@i(5U}Ja z$~jtob~xrZlB9Cz96wb&86p>^VLh$L=bB@oL*Llg81|Da;o`+VAIr`T4r|Y@Oat&m zw}IG%F{T@1RrpTqWc?T3Tr?L;1g(TeqsS#^(cJaV*22?J{>9W0S2?(=^BYcG8ym*# ztaCdG&c&v?qA>J63XHgM{}0_X@QyPrF+2th@1cxys&A8U6LfoLi(hYI@8~{+Q}_|g ztU>o|#~gSDFhwIQvyONEsF$oD3H6QP(f6&NV;$#p_&vmkNWrmuw|pd?N4M(jhV8}~ zaku4KcCs=t$14?ZvPmuWW0~2M7YPD|Hk+R><%+di!%dGH@*#}3SmGVD@FQp@2pG)) zfiAQd`3y)5Qi*T*hd)n3|F~hTuo!Ei4OA_^$C3k^Qz?+PQ)`B7}85ld76nx0O%C zKf_$+E)lm>!x%BHj^{bt4!rsno+)%OcnxY}bCcZFyX$0P2Ioa2Hz*WB=v}KGv|(09 z@80zeV~)8;zg5m?4)tKIJgZn^z$rv}VAS$CdMddMzsxlIsXq=-&!>n&0tNlcVDsVr zg8}-MHe)$+J}YrEOR>B{DrjHqObg6{=&Fc#?~H@x=1_-;#b{XykIBl^U+9y^c!Obx z&?=I?ewUY*k;|%Y*_q=1Ywuj6n!2($&J4D8YL!}FrHHgs)B+-o5l{n(EjpB?B7-Q8L_oqz0zOD2kOYEB2qDSrgW5G; z=F@zc4|OfFSdrX&bM86&?EU-iyEkhD7hJ`uKbi5SiurBEcwJ_?xnXT|^dUkvbZJ9Q zCPX>wkHrfIV>*m(P#hk7K7T0n*H>0Eu?0F-fBtSL?~CV{5zKQOgYs-GtBYa~BnR}G&y+`DI&X!Q-LBX4>nLBWRQ?oXtB2w^(m5b>pBk&=M z$|ZYMQ2_u+Y?F0zFz(IsED6FQ+yM3wgys5!uTwde)M_`))YaS#DMx+qhBK{s&KOvRZC;C3MYc%Vz!w+q ztPSw+pe8AvoriUQjhz&~M}A{om|P)@Rm%*?KIE0wBYol`V4N+*j8KuKSpiH_v~_Mf z-N)g}_s#=zHTId=SPyRMP**oZaZpfG>3Sis2K$7Qq=o4$Dm{!>f(ymODyDq0B)nZ8 zT3FIo)^I$;#Aq!y2)bfRVTrl--aG7PoW{^no{TE{DjmGYPwu?b4sD5|3h&syAK&`L zHlu$&rh`KIwqA&Y2^_!CCW!*231r^aZhHfuL+7X#_!RWm1s6_U-ZoxdTq9jj0+DOW zpG+ekJx(CP0#2D8*`%x2Dq9H@nGkT~ZwP-83#pnDHWbd1nyAfBFrQd%-q6_SsU3Y{ z#O18?f=&lXPm=Et&EiKCS{&tH<5&0j`9d6?l$Xa&j5T+QXtuL+bZlGXYpnA=>*)c$ zL5^b-&2#QFMJDSTZ0K0&ohdU|bhq#8CkIuH>yS_M&!1j)!dSsW+Boow`m1Y|aFX(* zw!G~H8)u0rCNdgIKQiW9xhz*tZ)Qg-lA^W5#LF>_+ItCsdZ`ObF{B==zBu8q|Jc9@ zW(766QK9@v&v){L*cK>sM@fM4B+lD29?Jeyl7fcKOV#GQAe|iOf&?F95Ot9?31l z{`BG+&-jmd7{FYD@FpAlDk3v6DHEUCij%rJ$F#5lF?3t=4|k7Y#D$rkh64IWp&UmV zoHR1*&J|seeRQA@+>(LVyTRbglLVWb%J@SMKIwT$8u=&&n9ayQ(i{h9thUulW+3-1%UZ1A$K1A7Ck*bt`}M)&&$s#2 z%-;_+N{8Qc`uM6k@?@t(BF5%^Yeh{@5!!q^0W3_=xOrfMn+;yq-PdxEj%W>L$#|)6PA;l?v_CW+YUoTnfe(G ziB@k-tu9Cr1%}j-t*0S^>XjDc+XmLXD3(S;8KAMPDS~Qg61fc?&ycE@1z(yJ(5Q^$ zo`tr&L$b!g{y!;imBt=hwf)kuDU0`HpC$)A#a)WHGek)NoAM&}UVF;Q%zTn3*<$Y&>ku;W=FOwCUcoCpfsELa-Sd5MoG2 z2dvYl_C+Y5?ZxDS7mc@WSzgfAnnb{wFOygR>!eI_D53$X91hR1t<5RX0JE$aE1nQg z-h|r-ADs{3IF`aYmc)Ww+g$gk$SfueP*KXO^BKF~zT%HJVQbtx!1-LupJ|3M>GiCw z38A}94aKQmoDP}|2d3Xxb=D*+1$TkjN+0Hn=_a)X-|Qby`&BLaXZU*^WpC}{o75#ll;eEwbv(&{iS;3ItNa`BC)`9D^rDJ%;jJI>cqRV zaZ-XCnAE%Q?hUJQ!C36Zx~)+3DNcb|^rfR6k3LrMK|&Mul8a%7yfR^tncElYvsQQ< z6vVd!5p2ZG1$+XY-d(u^hCm{qaxuZ=b+D7P#jTi1gr)_g(c3nHpBILBWHe=2W?Q7b zZb%soGOhFP>T>5w+B?8^=jjKO^3TpF2KhAL=RpX;Ks=&clv=B-D=G&10j-Pdh|H8d zj7ooCgIb=}FnfsAg~xU=9CK)s`EwB)Lwk#>qEZB#xzt@rrE%)FytfJlJ9p6sJP|;< zo>^`$4W)Kn^pw}3h#n$_14v0j;rw#oVw)6IFA>F@c_GyfOYx>aoMD8oNK$0cD87(1 ztKxPS=K30YZ4rNnCJL< zJ?)XKtE98)aCmxGS21u}k^&rIth9~k?%)l;53mfbXr{t9qVbnughA}>9WW59+Cit! zNgz|b6-4cnj`jxVS>mT^39O0S@$igwKAKr#vQn^Z*$(+<_po1x$_NZ6 z+6a4g4mUD_^X9GPeFH7Sy}%^RUSLgM;UJ66hld*CT+}-z8p9`NCJzFwmEl4 z$ewzaNB4G6M%Xm`7;z-NDyn9+L|Byn>N-HE2xw*l8*n&d0(}I64B(dlGrXDP*!rDi zWe^?=8U*s{;XEzO84fTaCWwIVNs)0D1IAsSH)+QrEGvm605py71vBODJBE&9!N=&_g!qin&l1t z7I-7MWmI)b3OKzXl2)cO21!28j&%m9G64a(@`qy(On&2_WN@E1_<=+W5rMR{CbcI* zj6$c|5T%Pv#vl^V1PO0aAVgQZb7$^X9_iQMF#wY;n~aH>K3n$c_m*HEUosnNi8jvY zayL#CJ6hvst^{Sh-sgD$T0!U@EWSl_aBzaL~Etmcl zjsbJ$)#s7w>#p0X(CdWA`=Cl<2J758)QLe-!~9N!lMsaWDu*Z%p#67>x>3)8q%bnv z6!W)e*U-c-@3M-1B7?Ix&YfnxE2{AKUuRQ`zgo?x%t7 ziyxEr^gn0GnR~%$1S0R}=U3sY<-=#4_Krs*Y5eq3$5ufhmXI^eq^M5a8|%9W_J;^e z7@H-`$GRpDs2c=>XPHM}#5r-MNSD~?N7Yg$+%K8n%L7zH`iz!lT8{>eQM^ccf)&D9 zWl{-Em#pHBlcZd4x_`+YiI}Vqs0`7hnIYIUAhGzUZb<;tf3sU7|qMmtSy`s2BRX;B3bMF&ghyg-`+mHbG6oOTjN& zb`3-~#&0qiLjCjAYWD?LP>&qUqmIzoY!D$zo1B*|S%L&MU{x8*S==#|!%>(c7@Cpy zOw&liUaQulbqKI!ESb8}3-nsH4ekykCw1l zz#+_c5eQK3JH|8E7rqv(9lubqD+t`ZZ22Rw6Nut`d-4cUra{rs9P$DC0HOda=W4R} z`U+tQC>Mh&6^p=0E%ITS@nDM^FyebaXGy@~5@qKNLVF9`R2YK~Rpg3nbqt#R;lhw* zv*Vu@?mhQDqZcD=71nCS*(f)oJu%aE2K9y#QY5q+<-ghUr*u@^uoLaBa1(>@Qv_JW z3XlcN(<@+>`@w}nW}rtYs^yZwvp&*McX70NiKo+-_h7SQ1y{eg8KV3#dVs4=Qzp|O zQ4>Jbv2`#HG7|Zq7X=?58TO*0m1U3GH zggIIt@N^jRH1Yv3aMfBd*&@oJeF5Y-G<#T>T%dE6dv`E71Z{YYPHTLi0OG?e{NIqm zJXG&7t2>U5609}UZzv~^L}3n&p97Q9h*$?$t@5z?iYD%w_tW{Z)t}SK&M~4!#USDu z_&h$?(5UhR|VfUsJYA-b!NQvQ=nBj@xTroOW7~T|IkrGah#~ z6_wZgJ|p#sHL^Bo0o8z#Z&X&Q&q*ucK~~s;ojhh6Tbr5jzW4}bukxA!>_$AMugq|Z zgICBBKW=IN_EbY%TTq7VWwSMeIyZ>gMkaJ9c5A-qKzR7hq;3?==EHux1p=H%K|yXr zOAf@2@-!(l9$y2Rt=mw_+Y4M=*AX6qesxFcS>x$tL`d>Md3q8S;;pL^zaoa6BQZ!iiJoPAPA2A zy@Z6as?~cV2%?Yii58OYP{t3Yl+Oyq4$KIW5XF5`#ZpDN{0E2Ob2a)Hi-N?X8KOU- zw&Ub&lEVnQJs=04mvGd$9nC3?0o#ml;rC3{>v?b92aNn zZ}UmY!A3d=iHFn^FsoG`?fY&X*5?9et#9t%T&81Bun8>J*>)zv)zCI$U9`LT9Qw4* zi{&u-;+MI|)C#pHY$M(A94fZB*>*W`*$9LvoF-T%@tgOt3R!c%ckDyUrI(LE*ZtBH zOy=qXm@d@=C8C6}4rY3Ef*pDy-17ypqZ>I_rhw$_YN+X1$ju!)U}SkBnu zCByhKkE;R<^ZPeOBh5uG{X3MexBdmB1>tRHUmHmL_AJXog1Um~iwd|_{orJM zy3Rrn6(lDqrskfyGiUBhYM%c53WW;I>@gHp#~>9Yo&#`JqoYsU9#x}7Ttt*{e2qWWM6&ziXiI`_f(c9hKkc( z#2%Bxc~dl|9xKm@0|Si`FQx-|KB;Gcl`du|DVu9g?ij^AhBhoq&|TK^qns@!G-1Y)9|gG`qWWi{LO*@_AX?szA^jiYfO6Z}G)SLE5^i)WeErJaVe2Fsn_gSo-_|Ti zqk~rTmy8G#!T+D5e;SYKAVfT8qM`jLtEAv>5g$K5_wOOmOdKTAs63U-mhJ5N#9o;0 zKWzF@$4aZ3QENy3X?FY%lEHwi|6J`GgQnG!f)Xy}9iRWbTrF&H!)RjClOgC~6xJ0i zmkXu_G>=LMnH;cFvHoKSG?;Ov*bU!0iCicDBaxI)gFDAQHi2HBAG16=d-izP^2h9Y z>l8aA`_I6c+O2=UL*Vh58lV2hgTK(+^A&OvS$Jdoa2xJ^kNh4K2wq$%Pf@>ezPzO_Eg>%Nua zylJKP=!i@WWdAt`xBq$3{ioobCD9)~n09vlDmgL69ey~ThKBnwM}-4BF&zg-mTqiI z$8pE*ySg*d|9Ao5Oa1Y`9{DGHY^*BvV<`kEA`bcMfb^s_H&nEE2+^R6`}g$7O3HN8 zaI;c?i{VO3ik7LeZ5h;!4B~9YGDEE!p^hIDO$(S|z7qd2M)1Y$Ir2jSPS6$?=akI0 znA~-Z*nU|)Rm{{RD~V4?XU)w7etw(LK8|}s^;n9Qn%ZNSvHtMJUO?ySHu&Ff_~G}S zUVFSg1lE**oavVyu41|lAxW#m0kf`JeFP{pEKgCc|4gNLOzo-7;_uLfG zL(bQc<`}Mk^g28_XC;1CPg!da(P2TkQM(@(FP8?(C;t!UsL*Iu(N#{>w#$o4hPU}J zH~jAtD!%?7PI&Yv27*!ss{g;9@M!Siv2^g|9hi@A?5|hcUjNtW3lDlm_g`n>U*8GE zDjRWVb%Yo(j;ILeN=}w>hspi_d!75|xD7oCE-3Q{6%H-`96B4;qd5jGxaj}q^ac8Xx^&b;(P^@{#7VkPf&k zdm~s3Nu=3pq6k?9IWS+HjcZ0#)0tzDw0sP3G%BNwYfJXLS;Je8$XUe2y?0VYL}n^} zl8lX3XYNUpy6zXZCnylW<#8ncwy;ge@>52tl8!3=?JRiHN&)#R+O<}!EKt*khjv8m zWlXs0GFW*`*_m7Yz2Yo>v+^fi8fvA**_C?z)8b>Ih41*)X^Cd(!=R%R6PNhd=E5|t zU28{Xrhgu_zuzzZqTC{;(Jo#S-?7v>Z1Mzx1Zp&Ccx37)!(}CZ=E`-+MSm*tzVj)~ zA}%x)`nDY3g#5dEaS_$o6JdG9BswFp?oYUcq*!q>l*#)H>*L42xOv|OHl1_^h&;Un zGRGoVhGYK~>BBlFiT8VD%KG}vnI7IQH}Yg6zSc1bp&B}GeMnDMke|}g&BpLNBTcEd zugXPxCdCK0upf`JWT}8hLrZ&bk#h|Pk-zn+otg~z5!thr2^z%lEUO| z+l*B-TB|dHn5A6%9N}?z?24a^A$IImW;vC>Dy#Q(_^`?!^**K zv&xmDF=@S8cf2bH1W1$~pGt%c4@aaNMe5^}5sQ*jI3}HvLC4SmQL5sE)%*9oyzYhq z)i&BF0ix{Nf?xVnyj_ks>+4YrYi8ge2M3PHN-J9IorS;+_8_53a`~djUemT=lXauY zDUN)yu3v?3B&DyA+36ymH{ShPCn6#{Y|I@Y6@-hE*CZL5TqUWdmq`9}jcskvOrVun z)wokrS>@<6Y)L0L5g~EDt5pftTIK6=ebgyMe-%9ZY+L4Uy*U1=dC3V)N$6NJ`QAx2 zcS*7Rv;Y&ss9p5mYNDCGC40~DyjuDc&<19+lTE691PepBt@ZC4ze;jNH}h9SjD1Hj z(YWiE=U;WAvX(f$U6xkzKs=C6kwot;esXTurD+NuNapUgDkbc4%SL^!gKw# zXL>@lE z5GE+@V^)zr#{Zl89;IlY*%_m<$I}x9WUXkB2r=Jpy$zJ2s1yHn`|vQ@wBf zx5K8vJ!?9AOtZ&q7Ko8@Ai~c%g^7R>PFlST2?Lj-S6RHVl_zXOx86$R^JYf ziBCdKn}?+C*%dSDu$$)n7j9?rE{1U^r98A38AbN*51-=ubl{>Qf><)!nNf}G?BqSc ziC7F@c``In)}BbmN+XpTilzPxZvAlXdrJC&fs}_Zg~tJ_>@x;ss}o+IJ^n4bpE(6m z!E7z{q1}`-l=c*#nyI}n4r}cB)1tqHA9k9!<>a%IO2-kqoZ4KRy~g_W%h`RU#N^^Q zLxj{Zf5rau_c3WI=x#X?metTe`R;pw9rMX)gLv|GAI8D*G0sI(i;EM|pOJ@LT~TP; zlRTiISL=)iMaR*i)mj(1fa+4TOCnpOE0YKRvWi7kULKnS^1cc~m{isdEG|9~@FcRc zMM2l(o#>uX;N2y6)Q+6lQk*ppv#@#d{*-8VQ}90FDV;=YDw*R|LP2JRWaDYzK9)i2^+UHhc$g-O{0+)u96P}RENwH|S5DhvzbIrs(ri6EYNzYW&niG-{ zEc>+mAo}s?=}ToS93y9EL=Y{}vRu(=X(4l7XIYjKFTW8dUF`IP3|S_!N{UKK;>(V= zZITv)K%~xX6lzj?6QRIRN(sMrkBkA=toJ4`@l$x70X-av<#vMg)ZLxm4U6LsA9=Ix zt`h6+X15F2byd<*Ge~Z$>rXrtR<1B50L)-gn&&}mm%blc%4fA8{QXX9z|b+^+JvS)fa*C$*WZDB;{VOWM`aDKXBL$}eQbzDS?54Y8EOg0wVMi0nxqE6=YPpm<3l zqJ9)FE~3}k?9y_W#g@$aXt^KFX3IpAefd7-JPWjYZyYwVW>fz95DjmsXh%P>_l(!T zDd6or_5^+7I!UsF;m99soYdsl582{p*CkTiDdZ))O++M)r&D2FVLkov%NnW&@N~g) zc*)5PSrZM6NNa1d02O#rz~dwiTS#lVi9ngfPoGG1SRzB31t1BHTK>`)V{dkfkB$9A zm*GnR9{`=6PB@&M@RZNwsn*2B#YLZ=iO$aiRgXUxyjwkwj)@8DP!bGxoA>lVN=yaa z{fns(ZzlGqgbQ~{oxgvPAEXe&pJ3dxRG6m=MnW-?cQ-}tV6zmNhj%vvq?-S9N{@%%Y$k0@ z_723*F!r@D8S;-ll{E5ASh#jx-`G?KC~w)g+-p79f8^Wu=O#`re5`tnaNiyA%_@UE0@yT zHrl<1*YfbKh2>UouXWoLhKu{&W)Ro7Ij&Gs>Fs?C${BL;*Pr0L(eaur-SMcAbxR3k z$Xp;{oF-)eJEY^3$X#z|+M_SypN8F{Ep8kQ> zp>ogWA~E@$vyFmOvDDb$0o^nALIl=stUen7R|(LRI7@z1rE5XwE0NCmb!d{Y9G`JR z{Nu+D6=f|%4?9>a8||YsM#iuJ8v2zZV9?uSY@Ygz6Y zaINt_J^CqN_fH7xf-A9j5Vf?__AW6Ye8PmXO%%7##yRU9QQZ(SA)z3Ur|ElO;tnd< zptnClBPkg3^gfy*h7JTdrpBqety)CTAz3-O_Ve^+ww+B#v#VsG#RC(vKbYU8XBd=n zgF%CSnmB)lh+aR(c%vGp+?0jywp%LwI>N5jveZ-v0rFp_8oQm{UpIvbjeZ;6aQL2! z2GX!a6&|=VZaAKbMsi3~12+u|%Y`z%zm@FR^p(b}#YXE_9h`=N&#BgEj!xevwbTO} zXCpE*s&s5>?GKUhZ##&Rr){;hH+y;$44quGdtkv;w$l!y0HoxZLqQTbJ<+*YW{`H~OWOd=WHR*7Itg0Wh$zI<~X>S>2!? z9vSv4ck4&ycBPj&LH)a1<)TxNCxfs_xsJ7t=I?OGra!g^F2YS$u5S-bjfH$$b#FY_ zxfR~mX4U{t`kEYtpLYj@V;IP)ADS9?Xc#!=?R>dlv~_%M^crXVZKt4BABlV&gB{|* z^NWc@4)#p(_j0UzDd?u-a~2W+-H;7#au_xXIgx9YzJ!B5p;tQGx1~Y;M)4#WlnoH% zem5l{tEhOOOOZDc2HK}lJ-c7guOfTp@HoFQ^bEvg|9px=8iaX_`TJJO)-q=4C|-K9 zkpf(=6nnx-7Y>S#mzu0GSDozNv*#V2W$ZYeCd4cnCCd0JDeleuG!}nnvYG;Pn2#PU ziM((&XhElIuET`fH@iZX?D-u|r&)SDQHCc(B0gO3nwoxFUWA)CuOupcYbPyXLf5%0 zDR}-{3_uPQw;Y1Bx3}y`zk3D~7KfSy1h2C@mO87p2l88{u;X7vUR-FcuA3XmyC5<4 zA>b_RHu*kbTlkReN5nse_;}eQCMhO(u7TUoN9s`{&hE$b@Ky9@wlAEs^V}f*Cb-Kw zVz4?o_ui5|qI`mP;&gnwH_J@ORH|pyKJW`WB65@J(`RurX_B+ush{8C$FES-@=NSG zS~Jl>et$~WMaxBtwatiL?z4Rrosrgm&iUk+565F<>$&~kX_lW==i)i!GC%3j!3$em zldbUC_G~fPFF9`xoH7lt9DT|ES>NtphYdP7!l5|)=?6x&=xKuiI_ra=Clu%x=j$^R ze4aakYK&OpWo+$tO({du^WkfR#Gp6kFk%;HloONEhQpq1B8Z83WMl`kpS9c)w`w4} zMPST-=?OYG5ak_bHrpy>nVjzf=)21oDIFCh;*y4w;kis9`v)PaQAKkh7?fq% z*AX4(8D6c&SHHKtK!zzDe~}|U9+f^XhWZiSRQ64U&y1(_l-eE_tWJ-z!$u}m&8? zyz6sYX;+P_)U_wC%5DBOF-I!Q)q3s{2FtuCpV^6irCL!?kMHGbi^<-7iRPAZYHMEW zCxUVe`d|y2Z7FeaW_|BFG3d^w`YX|+(uu0<>ShAQcx3o2DAt+7b$`}>VCGMwUNpwp;B$~&QX;&C&!KsT&N-GZDOl%xpbR5ee9}j7y87v=ft>Be& zj)~6bSPdLxY@7plq#iCGT`x9FWV}DmjPY0B85`Oof&(mGtl**})p{)uX1uGI+96W= zY-pi{l{1W)GWYqb#l+F-+N&V!oLP~~_JeW~4vx}S4J&wY%8W8u!=F3Y--}yYzle=n zR(bO!d}AY@&u#@gIk!f<`?T1+!n)zW2EGFgw_5zgDND%Ajs~L)2X}6eGQH^E`s`?* zkKymy4cj|EprN60$cEy~Q{rw_7BHaUhS~P>>dDspC3!+vPqG1e5NpLLt};eCr}(6$ zEj24UJ2b1S;o(QlZf@D-(@mSfLTFtQ>LE1tC9vVx2 zp30{gp50C+c)vr9`tdG}9kiUEd?yZ?yFT*4)r2$@YM1*PvP*QBTnt#r7;&BkMY&}Ce)TvO)vDWL69#zceZEf~p4gFMgSMUI;ZjP?GN^8;i%IIIEm z!DS=sHnD%PIiy)S*B%ZN^2e&2oy7XZ{=VJHj_fq4MK9}vUY4YS4TkUGNM2Adv~Bxy z3AEvtjb>HT>_+U_Wqw2eg1{)nAWewL!lrDEbsT`%YRQ-D68% z&CXukCB5GlrIvBo=d8=4vrBrV&K&0wY1{F~(}(qC(86f=PNZhAAWI}RcKMM=PN9C8 zH!5}r0%V3|w6^vti)7e6(8ZQ8e5}&oH+NK{9z*Fkgom7C;0_a7h=>@C4hU&X-E5)W zCPpQKFrAsd=ROz9A?=?0id}FjCx+mU9fJ3Sb?!r(VP`-?%~i>^oxVVz*x!8E_TEZ< zbt!@0UHHD3Ag$nv7ezs*4B%7>JnBof<}|r@c>`IsMIJw17Az}x>Dl7bEp)@RxW(=U zKu!9477g82mz$Ggr&`yhsr9O6UxKSE^@qkopjv%-lWq@iD*NZ`87A6Ar02S4pw4zM zPN;4??scA|Nqr~cc*0ydae21+-UV-H>-j^;S0MFz0Kr#Cs+e)ou*OJfuKD{Fo(DE) zo+pW!h?wJ$Hu5xdXV=rEOLLqo zPYDKnuN8XFzpr4|0FZ-pFl)WhiKFk%ZgKJb&P+h~=0Z1PVs_?RiNxn1lw_`LZn~?|byv zXnp@>cXx^!@w{^VWn3?OS~JQ(iBPTcDWSgap;3m@HxQT7D<>x!MFZxPNAtpa$Li&{ z%i`0trN^V}e@412thd^|D1EW^ZQbgOQ2`Jq$(=UA@S#Vr-}TDy^Jv>oof64B!j$m? z#MHrJ*4t*B?;j?y!z(BXA7R~{?+c$zeKxTq|24`#YnkvcVaCp{1zfNn!#tWEiru?r zQ0(q@`Sy>qdhu_Xd%ym25mrhXCQP{$SUP5F>G)d|DLk@qitOxqE=qqA{ckToR>|AX z`yxEI%58e3QA^dde?~faUDo&^%>zc3m-Yu)fIBJO^988%X7M9RP^la5+BAhL#_0T^ z!9<;nsvW>b2W^x}SB<%3BtecAm^`-CE9)XYB)141APitvxN1}~pVOrjO7>scIKK`b z=3oKza(70vv-|jgZ*8CrQw^JvUOT9iSB-0TENZ$FpE8<{RglHkCmGKoc_@%9eQ8FtZt9Q3Hk@fm31g>T`w{;6Y1nOolT>i6vh^K=As zOL{r;`z`<=_mY&{@ffi$gZ9L_dXu|xZqI*^6E4jb9zrS#biMDwgU=$Tpb^Ar-+ke0MJpP;o$*Be?HV-ac3;l;jP4dCCWIl zj#~ZJ+ENBD_lS;$P9`wF=YUrKvMxzhK_S`A0tSeVrje==(D~k8-6wqNTAnt;!z;y9 zsihWmyTGwOy=RBqQ@(nrI+m&{u65iZsFa%YgQj+ifjJ0b|UOP@3d|&|JaW8ID z3|dWpPyu>!Af-=5KLIC8)c`h1yeJJFdrk=5;J`VY=3ot;0KkFnEHn^bUM9(gMs@XsBAX9R zWP!rA?|ty{ZW)#?p;-NN=M-K~o&0VWCxcd;zH=pNPe#Rvn+zL;zv0S$YsZBs(ya09 z*ZM`v-PW@fLo=_CcGc5oB5Vi%?WpL)Vt|D~{uW)6pcLetgENPlop`z%M%H>e*I(V; z%ZD=OIe;L-MWxy%ZUqZhyp*UN#qWl&ONtMSC+*nxd^d?isb~9WOxJy9slj``#cKb# zUb81goHX7;2KT>%bt6a$6rH-DGl<}(`R+! zSOBIdQFd7$A2d4%=aZeHk<@iCGgLZf)6vlZVWoA``3lK!HjrE%0O<~((+!Q%bc`sG zp=xnRj&nglZ5v7R155VHO;OElnU44z!!$dyDj$#j2!=|kZ0zhkG$BLVSpTAX{}#az zu}stXG(&)*^AHVSzCbFhbamdF)CdEoXfbm)-i5&6Ae{LY((hfR$D-E$2P*7&gL>zP z%%GK*9J?}J{cDz~St@Czi!&`iP^&)ypELX+(eEI1-RW2;p@`=T4V%m-v>-IQCNDC` zexsQ@pWbQCTH!V7+k)RSJb9%a@TTAeD68oE-!x*L;N*kMB5D%HM3(*qKdK{Y2ZKMu zP2`3IG`#MsZB6v7eGdu<$bX9I^~gEB5g?C>|E;Hi2{$Xp#Yx{RrLn2#eT^ia8K-4Y zh-khuO6B!H0tr(lDosW;9MkdRW4Ha8Ko7r4BzD^ zrQ4h2C#l_^!X3-sn-BxCl;g#V;9L!2z#BST>9K&xnXDeG5`mqQ@D`3Q;p}^dWw%>f z7qH6c>m&c7dk%0fR+UQ$5Ng^UuBoXnymLPF(bp}*$6+4tZbn%DzO1ZnlKlL6x_FYb&3m)qn*keK z_d@Fyhe-ew+~RkPL8M>?I9HSYT=e2HdjF24hqqw+(oLc$rM2bmj{a`P9Of?WE^;}% zV$Vy)>(xxbVj~2|gI1g-afvL(zn;1lUY$Vgm9+6;;E9!d#P*B&GhK*W6s?D`n#!8+!Sw`(VxmE4=c9 zvsvRhz#@H-FyXa7*Z4xXPQ%9s2P)OWiv|FZhh)0qy$J(j-dWtGKBYtzEw>t>#M4iK zUB*%?C9HsauJ%8+ufbyKJAUHrF_Ww4-Nu?>|}ib7=}l=&ThKT z^6t4}D_tEs$~x<)m-su~8a2bW9@I}ajZb>s26W%S5j?=$hb(GVBH66$!ZR(n)B>8> zLY^;KKc7CyG2#E|aojFPXS0_uPBCeH=8tn;TjT;?x=YlPCj%27 z=kjMs>8mKshLZlga6ZRe)NtYfRKNpr-(f~O+dC_Bu1#*HqtPKAI1PcsYu+~3W7 z)d>N7P%GNg=f9`{#Zgco_cir}iL)BQSUw?W{w7L!R!W6Za5>bq?Ymty|DOEHwf(9< z2xmDFiI>>{jdrNqMdUWSN6|TE zzwzy#22c4mFL?Vf z8>)+jy+BYBJ|%ne<_(Y~IXF2ZMrS-nWc@4IQsf0R{GgQx-Q7tzW||#B;*c@ zSqs%Z_dDjjl(h7+-_7|wCZtS%b=Y$E7cj_fYqV?&ZnX*hPhcUpQ-D79--H%_dki1_ zvHZ0*DveEWX97jrq96p(KIB7T_1bT-_-bFCEN1xK3ainQ{H*F1f@=i~IsWUp9p?p8 zS=rFj#x=q{XRazYdS(5DD9Za@Bc(hgz@vf|P*f+GC=aGDW1{+mRsa0~S{oP<6$=Y7 zfV_zCqKsIxo1M7L>_g-4?H-EpI}&6m>eh{%6c!zlgY?OmeX()TbJyq*fc+7+^@ce@voc8 zE7vun0^;v5q^1P`=1#hdw9^9i>=6a`cKQXcE#VB(s4>!45B1}I-z}rnkUhJ!nc#e9 zfq(s$RW&)dv|!7J815|TqL%2ULBx+jMpz^qthbwyG7(X2IaW@tk<1Cw%nj0D0EoiE z9Nf1Kgy5K%NuIwYw}pqJA`J0O=6m*zf0pO{3y*e{xVT*Z5yaRng1zIr)G^CrL7#N~ zenA?V53-7%LNs`mwC|E03Ou*w;>^gzgNdTX8hZEL!#Bfa0UtIHbA^cCa(9NVGvf)2 zM2COEajw0q%c(FxAw5X(6AA>?oQ%(NoGW7Lb>X9z>0Vb<)pi&{&iOnJj_{qmXu@MF z-!_-EVcG%XyQ`a4!1yHWrTMzI?{!D|TT=U*ZF%1NIjk2oee9ftr)r;*_bXDr5Ji3K zbl=D=?1%F=rRetsUWGhZeId#2OeI>B2se3c-vet|vK`~eiDnL)SOP>w47Ebn;BElr z=&;4fMHejnunrDzV`8ov{Jz&$dF5Kg>4o~?ZGgTK^Ci^3YokqfGSM(2d5|YzExweX zawrVUxo;gJ2&=0({dfj6iNiI4ZlfB3A(2e+0!;$)5?gq?rgMTFSAo7)M+YmEoGzyL88M0Y{c$t0~g>Sa7Z^ z|4m8HQk)~;di+>#DXpg`l#j9_e3-(46!1fDy$T<+c`yCAS8pB`>x8c#{@WkEdUb2) zgKW-|MY;;5w~M7hW4!MB*syI75A-a(AKMHimC7CiZhwsoO5OMLc3#CFC22Ajp=U`F zW_w_;?e?GFtX0v1-Y@0&iuLau>2L8;1q>S)OD^D^9ssTnzyChI3h-Csu8nf$S6 z|7%qvX!GlzLMxd~uVzOtWz)0`7cDwbA(zuT(mdPz&IoSs@@L4pap?@ceHFuk=Q%GB zUjQj|7@i@#s~T1b>f}sKY4`o*9G!5ya>p28!SU$cc8tvXEhx_V*02#^E`fb!g zqbp)x7DwaZS>i?1{oQx%5S3ImQ1JnRMq1=Q^E(_d_ddH;`kl zfb1Uo(t}v|SW966?@>tv@D$t}wi75pL*#eI*odsZ7PMZOg^!i}n0x&|&Wl8>IM@58 zBt@7>%E%a9kDm(Te3kp78vT_h3h?>J@i`AN3}1~RiGoG#7*bwG*oO~VJChold~VO5 z{Q@Eb0d39$m*YQW{n60^AIJ%klBm>*uBXSfemLQhD(Mq}97L}lw6fd!c7K~IK;Vp8 zYD&M8c*pTg|CR@&kRDjSsErTl&uIrB6110+tHTv->XdMIc6AxfB%o(3R2VzZ01M9$ z3#q?8a4FfL>b&#$4)`zn_#A&otEH6Q;`G;dU_zyN`3%ld!JWD_X{klP<-%Z*8ykYx z8pq8P9}c&fam&iiehkW-)Ie2#IOoDZN{vzfI61H19zMXq-r_EQ3APUxC8DUA1W;g2 z2b}XB+o%2nH?QRT4_8%TVpO<`(zh-z=IX<;sGp@O(ixkWs32Y6a{sW`&fy%qRlKSgMfIV;;NFcC!>#Z5?H;57&EMxbfrux)oQ;&;4Ylq@5&^d^b##*TOFK2SlxN&n|fyA3VZjf`91 z&!46()Vy$-A;WuVqz`NuJ3B9Y9v)l>rk?df5&loEss z`CjF8JLFX0Ng-*Ag{;KZg`Bfs-h4AVSIcK$;u6}x4Zk}kJHYHeY0BF>uAACR0G6nI zzkT1EnG^#<;DVCLYj>g@Fs^uzC!lgGnRulOm;yciVx2j*qPl^Du`=KC=F{091!TJ1 zml;K~U1em04m>;762+(Ht?qY36Da= zBr0ZNYXvmw^3Emy1M7_!a_$xUnUsv=6m#Oq2E*Kk54<-Eez!-d6J0YMIC~G785joO zH6jr8$YaYIZ+M0Ik63__=o-r*9^`+6yPK)Z_{#`s%{*OWWA9e#(?$=?{bTHX1(GIs z|4KFJq;!7$mT&(u%seT?OZ#U%8c`4;6hto1z#vD@_&Wep#Yly>zHp);9h+#k?wa?N zQ#-ZZr-aZ%v}ZtI5J=MQt65DKfTp$Bjz$q;Q~yHno8hMBE9+Z_NJO9quHj`Loh@d~ zDMwm>dKg%2-ir4_>$3?T{`ncKH({|tW)GcrK;nE~T4|pOkg0lgu1prt!JdyUyzs4o z+Skb65ic;YqKr({8r(5(CJqHF@q~ee60=}?zpJYYk<7I=n;C4e5!Zyu7kD5ofa8E9 z)!7+(5UWWKo8eNL4KFPfhOswbU~LJWx-a%6dAZp<=$Yj+yUN&+m$USscuf46Mrb7v z=D+E=^Uv_xOA6YcRA#Xx5IrASD-bK4LfM~N!b5e^E!=;XwN9+QAyn)v#|{p>>|8hhYu~Hmo8USmf1njrTeEh5XNnAWv`H!z>O+Mb#%K2a~Ck_UM{2iSXPhK9=`>yo+}&Zs*cU4Q_k`)=n@?h(E2h zq~P5&Ax)?bsD9UbQ+wz2%Ji*(49C4cC^`pT?BQ|h^Y>oGx%*+E8j9)xMQQko7iHS> zC~}UDLq-AWI!)_B=QjyD1`F(0SHTjBammT}M}k`ld88qV>*x-4#f)f^Wna_cKLbiO zIAjcP^;fC7@qH?jc@(ea)!q`a^Rmc2$;qU`(Am8xUh0~Xl$J)sx(7xC%|$Fxef{8v zWeQv*BfsA0)&D_F8TbtMH$TsE_jT#Q+}*@*<1D7qjF;n|pNtPm27=9Qsh4*h-yZ_) zU-lCInD>`DFRfS=J|=~!fgt~{okhTT3F}HoaUDB+V9`?u+fW;l%#CzZJ}zR zv5^%Nyzgn*hts>+BP)H|w0iC<E|`JbHLI?e{$Amf3(eZD=Z=?_yP9WJ52a@j(>;yx-++Vf7$IzO;NZd za~ser;^g{%(cj`u03D2lsq(rF-h2Adt=v^zm|?&nd%|w{g6}t6V@1>*p5vY?Jdc}# zFVWb?Q`BMX`Zy(KM}&?D4~Py)rG3LzBRRas%jJIixlo34#SHmK$2B1m#e7Yk8~f^Y zK&?Okz;BFwL7E;cEWHw@rih?9ndV00|FIg*+(8e#ezC*wW?xTuWxO z7?p}jOeJ#Hv;h9aR*JkbcHOuVaEA*iVBXfkfj$=4#qTD{L|TDe;b7>t;kI<*tRMsr zVU9hO;ZG6QD2K@;0qliXFt!UG`bS*!k07Cltv`C%FW8vaMX|WlH}(1ZuI{+lIM-r9 z?HYMs>}h@QePk%Eai!*DiTpTDc-NRP1H&1PZY{xTT`(zk60>rV3!Ggr3c3|D3Lwb9 zb_1xqG@EL}je?jsK*VRW!s9mbBSnAP*VlwS1f}oT*!pp%_nb4s zyETV@l4w?S_2!vq{wtT1qW+3He)mbYX2NNT!-O~%G@UUT7KNQlzev~F^=a!0Ed=4$ z`wCA#9nG5JhhLIHU@foLZhSUWXkQ@Rj^^!}-0agqG^7@PEL;nt_A;>VLu;077rei7f z^zN%DmA@?h-^=qiH6iPj3fIVLklyY_Hg3m)`j;nQ_rS$Z8FLeET|pevkNi0D&lo}@ zBZG%6ezh)!DwSK8u4gIFPIMRlK8c?3kx+LSf)>T6c`B!>zr+7X4*>T%KWzxUCjbuN z$BS@WHHD{LVo`}75H(%$&ajb?QSx9?;fF$xhIg|Hso07SGF}zQR5ntIieRg0UVen0 zaox=^?{_=7?Q5U>eQUWl)F?_X>KMA^wY-W5_C92t7hY`LUVivc8;zs-1;t(Yz3`hi zkAw7a#z>mhNmvgpd0QKOec{EEzW6KQYOFLkBQWXqEeP+u}b- z%&x7)2O12z2M#jw)zCs->!RU(v53ap8`Y7aso`LzL^i}UY1aL=OQ$^h#rf+BtMj+D z`c7SWSq5*LkkHV=HuhB)S9!XF24%jJ{0b`*?#5H{#Sw7bImCeWrYmuvp+Alo6IP{& zX;HnV?H`@;9&F~_pUJ(v;r$B=O7}I#=ZH^^LF$$f_N4@T0((**&U>(ZDXUJxUtZ|M zPTGt$HWp#Q86MKs#Q1GCaVhu;KQi`DVdluzDGBCDFQLs;`>CUxTo1MX+&+sGL2JvU zk{|Fo@e)NoznSy9^?TxThw)wcc-rY7Dxd@jiRC;~O zT~1yB+hawV9$%DE?t%B$DO(KJ5FlUe9ej;*y^owd_E}<{C&Flq=(RLP#B;9K&$*KG zY`I|}0tbWYKIf0l`Gc?1JpGU%;J|u7jli!4Y420rt&22&47_3flCYXx%Z}0| zHD!b(MfjkA=#bibv)X;GKBW{B=q?+!9IcFD+>Y-{yyO8J`vvdAVbZ*yJOSTzNa8dBPGvaIS9 z*;P*}fcP)SP%v)yfIOa8xL}%+Xeqny8c{PxFPbcWwfj8E-#=|H;QLX|ll(C3LL zGah)SHn6h{WMv3cHF~CA44o3^g671J=^>3X2=j31e}4>}h1Q6UVaypfiCb|+t+ZU0 zl?{+IUiKRZ@8iLH91O8Go)61yIO9FIOF%LMmNMZ_pY*Q9%A@so*D5J)RhOPW>^rIx z+lqo$ z<5W~Q^bGXNWEfwq>ZmMP>Qz_0gpmmDY*~kZeF;CbA|fJQW8yUU_H=i4W|j{T_~w@! zmffuLWRzmx0Pu>Wc#&Q%-7T%GqY;pr+UQS!IQN3&W+_jFZgNXYcPnRK#JZJ&*y{ZrF? zhOcr#!*)}FG2g<$KDCcVj#t!d9i!`WN&|y30C+t}oh_eq!cF$BLr3_8tZniSs1`|# znW=>dfeXl-m!qbeaxUu2m#2Dlo*2ODa?%&CN!nYj>3=#^3Lk!ed{I^Tcgk8xVlP(M#R# zMN*davMI=IUQD=3n(_yKtXnPYI_z-6A|?;L-}*Xi1kJ)_#rN1gWmoIdXF?;1cWAaR ze&!r%B+@|}zz>UWcwqp2Wq*zH)+r}TX!WSBE~H+Mfa$FXcv>a)H1&`A9bRo1`fKZcH@jj(qEzL!6wfWLylJht>* z8J{E{HuZoGEh54akg{!EOjw~25v{>}#7>KY5br>z() zp0|v7b^52)Ze7=p7i)MFuUVD}|v`3Twz0{V z#()MeMTk--EoJj*adpkROXm}H~>T)SXLy%R(dS@cL>IPN(1&e%T>)+p02t2-v#I4pr}^eo-_ zu7mCDsdV}KgH)}e$4K(JMe43zi}+*M>$`0&BTLFb-=8lwroXnud!~G_FjF(Dl)Avj zGAZV7=Y20Q?^mYPEZK6?bx+3bBR#$wp1a`t7s+P&r{WW~x5Iw7*M69N*HORfn=_j` zLf}Oz*y<|p=aS&cjq!=0yra991egSfvImsx4mvsr<~a6BEom%v<;)g$vy3i@41KU; zgZXm}1LB;B6Z{r!7<|}9Kh?-IxBJZZnT)dgE-ob~er`TzP;n-7UN`m=tKNi{-z-C3 zrKX(RA!BMr+2|KZDH$0?Mow`Rl}FQc>$Rl>iBT3!CPwVF8BeQSWt)5&;RCl9h+Hc>i(ECW-AO6`mIfs1zr7*%dHY>}@Dx1zW#w@{vYrp%F67oM(>OG*ni5Pr`Fk`1u*sQfSX-ZQMJrfUNQQBV=E)4@WK zj-D|d~X-Mhqgu?7>U5JBLAs8x` z2ncXI6nA7fFIY83UOU#g_4$SO7D^*7kjGU z$}U$4{pU|tQpdYoHX}ZT?^`60b+}*PJwRf_eG=2C%J#o|7^npu-Z7vNxXgP!q}ol6 za#fC+X;_iIq|lV9^^Jn$prq?Cev7o-8r4^`89ICW~j?Jt+l2A@M)$ zgls1*8NK9@`(sm6OpU%CaClCO*6J$t=dfm9LJkp;4y=^tTxL!(1iBKVY?F-bbX4fw zIQYI_QdwT!=FJ-+1KO_fKmSxCu@ici%dk*7B%v_3LC)Nqxv=<=x~J!A;wS|HreVzh zayun`0kW-p)nU~rVszA^pxSeVnpqf5uCo?Q{wn=);3eDv#r7WM#n&Sv*_lgozDsTI zgHbKNsy+7_o-OzF^=UacxX<1+nqSz?@a^vJqQBl->u|=R8Jj@dd$G>p%mVu5%gf_? zdlVLhn?~xgU+z79hYR?msV;h?m^mQ=TOx>IQ&_cr3;j7$P&>BBwI#}d@^_b1mJLoK z%q97AWu&kOO2a25Z(xMQlE4lIPPEl0zv%G4)LL7ZoqGVyjY6E)q7J>wxgNhcg%Z!O zadXSmI5gVWk{~u!pw?Q@vYtkTd-cM@u_^qD(O8zrIn(887|vQysM-oM6XP{kPZBuh zA$upzZN`6@BHBsWS@H%P4$t_5UL=Z-A&!qJtreh1ZXSp+XX0UXX}vYP>kdvWvK-PCw1|hKvX6ox^q#_eYHI;2Ja3}^=Tq{>7 z;5~Y6OK~SBgw&^k{Rf7_DJDK%z^tIHYo*`RGoQ8;c6G6Q3ZYzBU`u!XyH{SaU(V?} zo#aO>BF;~BR=Vy5uTf{bVz-*XJ8GX0dA%rc<&~T31Q3+we`||p%$8)d z{Uz(Fk*&pT?Q5427v#J( zS5%H^Gmh+8RP&U!Zv~YR!@}#m+-G5KIQrFcp;4FN*PSkBfs`bTs6k;R9iqcl60oUmNMgeFGRp=z?>-hVGgn##pECG- zE4NcqRfV>YHE*p+m6&(1Gs`|tsxOP!$>{?up>vx+Me5bFb9 z(rW8=KH1GZGrh?p)U~jWyxxK5Ek|ost)bzJJ{7Q5#kM(`vNK3zd1^{_dBk$`&H1Kh z0fFW>N@)KO1{+ha9y{^M-yMkRx}95S69UY$dC`B*C6B{8k$S1aglT@xIQj9z=|)8q z);JIKo&g~749*erag3gka=tIkK=sbajjZJfk|<@t(Xt#)+W4R zWOp}Ewelo~TUxrh4Hjn0>=1~N=W%6~2#&NvmER(OP6MG+E<#5;TIPy*%Ghq~0%iQUQ=Oc=DlH7qC z3+HlXOs^kr(HTiq$}2VC(e4ku_M?NmS8lOuGa)U0fvarLNYQ?NBW2F>VGlu_v0>VS zhkX^}Q;-Iryf)lsn_qBzaxlXPlXFJ>GW^XW|J+U?cB#J$8E2a_QHiTsy1T&6I*DN$ z9H?O&*@;QGedEojF9&HenlI_w$ngASk6XuJSAw?AzR+#Re%h&|ukrF_g2ahyx*_m# z2gJg{xK4ICV3*#fu3yVxLbZ4_flb?hi(6g6H5-(m+(3+Te8b8`X6K#|-zS418Z~uG zR`M^WD=4RN`Y2hJku!>y)nBTgahqBFS-w|`VU&CpN;}3gOv1RODr;R`s?UKut#6qJ zXJv@6C-l&JIHC$KNeqvb8DyHWa(6jw4VE_N?SD75^<5Hn|C5=VqSw6TnHNNA!Oq5J z*wLxqXAQ}4gU!yjaU1BC zhL>(MYB%u8mGbU^o}rRx_Kn}33YC`q+unPpOC@rk>gvAikS&koX6*~7M%XT+_FRIEjz{8vvfUY>A!f2@{!$l_Fj%0n#+^!AC%5F zI9F@r4d^4UO1@2|1~JI+8VbN z%$6^+tZt)MR6OS{R}>O~Qr>_SlbALh@sIjhIXo+cr2N4$ZjKtAA4yBUB^?HB;xlmFb@fDv&7id1uR9-RI9Aswcw^Gz0lGob#@8Y0p9`RpAHzSV ze!UsZBZdj^+d)Sl2M2Q?{@8j3KgT$Wfo`oAFY4IY(XMN~ns5mhWQv{%zSn9% zG3_wiT+C7^m_v{m1auY#EozxLA--GMni`|4qxUFSLXocrBHq4`mhq@8fg?QHX|oYi z%Ezcd8nlOp*!PYXt6e4NYJ2RnxOn6WY|A&tt%#C?2cq8G+}z+Vxyw-8yn9?N}_lPf~n*{hqFq*^Rdz;({Q7xb{} z^Q!M%b@t7*M>+k*PJWB=95Us@Bcm$v7iUPdW_jZ0P;2DUk05oH6k}bR%x?;BoJCR_To>cxdEjWs_2Q~x89}!&z7z%B7Q0eN z0H=%YXE3Z_&fIo(6}fa4uqlmM!@1!8oJG9Pw0L)7H|?#dn|#hx9z5ukQwr5qcPVn1 zDO8h_%S72e{V~?lMDa-}RSjaG zlwycL8D(QScY4%@lc=l4JQq=?(e+x|AjkQm0bDx2KM0#7lnAPP9+r;QL9zew9Rfjb^`~UIy~&t zW4CcoQ+0_sZ!b{y3&e?uB@u}4A$*4+9JAA#AZig2`^@PVOtCRGCxz|EkS4e;(&Y=m zaFS`!i>YNF9x5Fio>)Ah+VqLWE@4}U@~T}hSCGg?{^Ob&_Z2WVUN|C*V%L5ZllaN@ znMBX|THnBa85BC^j|;9HnGo8xC|>@c?-wvDF|c1X^8H3al|Tw8z^|=k=j2qVb_?^u zPV=~(Sp)%+10XRN$dN77WJY(P7j+o1@A6`&kApGd==5$*Hq*~l*R>58VkD_@Y-HRz zre~2{>C|h?i5`q?v@5Rr(&tcDlFNw-Z)P|-8V^%{{g8*4*J55pPlz_SF8uavKEQ5B z5E9&aV=?0@eiG>|3Kwyao@{xN4R&&U?g9|@1Hf7{@~<^8sB!r5LmEBFBQ9cm3;;MT zRtx=SQSYRkq|s~xwlf4^qjk=u!MQ{sy2>nL3%WG74ikj|K=M0?I$u^sA%FA`bqWF{ zl`dk`H?RpTFWhM*1`j88zT+4#Z-c@T+mYb(b!1J;(@2mTF43#}oyP?XV2}9Y>0F=z zkz6nkjQO4~zJYdxhoR$7E{48R)3u3?$C&Rtaa;){XOMv0Q&|U?SWC~pS1Di_553#= zl{X6y3rq#YO9{@hfE6b}LhPt}Bx~{e> zW8?t0L*YZTw+NLe23o%AYPYp9T!SJwnP68!5H)Q-R(^}}U=r4%p{N*WlKFtuU^|`3 zULP?+t5WIPd1FJ;LncgdbLiD*ygOXXSBKGmjp3GsqVit+DS1aZ9rc^T_{2s)bx2b> zROb8*q4uy7(%k6F_T4KvEmt#N9#Y}V2*ZN@6gM_;Av-M=Eo z$Rj*Hygx)r(PgZHg4Ij;V^Dr2I4t5^4u?Yc}d5U-+LS9iJ2b|L92P~5rp$s__7H{*kK!QWWO0Ccd5fVqlfZ+0mz znV&-skW*)y&GaIEyV01`1y>PGpJsi;(LpCWN10|w^)z%=_iJzWz;5`4a(Z*2{Un7K z1{WUA4Hx!SM0mr3YhU<&4RuZLd!;-YTI@P*=YDpo%_tiUP*=2=L=YdhY+{Yj3#&ad zs9yjG@WV(iqPAc#1}B`4u@)sv^hoGtkBv*t?vuZ2US4wo&*O#YkvdnJTU!r;xV4ai z7X{CG&)j8Vk6dC7nrNz1N$7kW^QC06G(P_DK90DjV=Ntb>dYY)J;nn0_4SJQRaj7u zob-pmCh@m22Gz=ME>V}2t>tHyS9|VL42nB{m>}bdm~E`>6M7c?BJ*a3iuWi>dsf%u z2CcUBOoR%zywoi76wU8cS4?^@(3lIg1_klop|*}69xuw=8`IPqTky3iFDX&Sx1Biz zXA|P#acPy(Yc+G!wjdCL9p>-uUX4wR<-6bJf5~MT-A2L)wo+-vCLHz+4@84TA!{&y zq{?@qs2C=vq@*e%vlNNGlHF1&!=2DGoi-wXM1~Cv zH;Rjki?}+bXJ(pK*^SFB4kTx#K*}O|ya`*UOTEU(D$dC=^Xqk_^OPvO&)Y6s+`0o0 zUtQX>V6+q^@MXVDa&a+7iickKs__S1lvp= z26lt_G&)=4$Vyg@X7Kk2Q%Y^fhI=bnEvMa@Q4nEJjkXI|DLsTm1|zcXPdobK4?9=DP@{kgeKzUyiC7-Ua6 z_$iM1&hOs3mBZL{UUfc(@c9xS@7|1QQvw@!Ga`dO~Gto}O?K z5&M%3Q6v1$vID|PTHc=cUQGpsYz%S#i;3M<_UbD4mEWI2L_CgC0f^?U`HFlG^sl4X|E7?eNY6EjBC5c%+gWR-0bp{?dv;XVXws>FHbG5TqEUQ z!mc{zvC2T5L0Gth=yBX!ykVB^l8_@vWuSXxSRgj z&9*1;TY8%L0N;wh!bkW+gPE-R&O-L5hEpzZ&%Xh=+qIquG$rEvHQ13(%qIP;Q+y^Q zxE@NE`CAq#gsx;Ov@!p zHc5zjBL+^hXGvzpx!l>-3y;bA{oAU#wox8+r$3#V*L2@1)J;q*EzQ$8>(8G|w}ll? zkh$^1e0`>)^)D^J^lDOp*Pn8?WPVY-&Tu2T9k2FppJrZh8P@$!MS#{p|^R_%;|>E*-n-?AJx>j78ZA&78O@YnYJfR zp=X>72DrDYy_cTa3gN*>5>6gVs= z1eQL8@EB2uH))n|X`Pkx+#3Q1a|?1AG%MxV1RseBA~khu>~esz?1LQ-0RgNC)pYEA zw$wK#`I`4ecaOa0xl#d8&&I-I^43%Jp}fYPo(1gP)5^v%2NW@Fl4l59K5LqXoL;(z zvjQ6A8b%K{Cf|*)Pmx_+T3A`6WE@QM%`>z9O5FPjPq}naS&U$e{N=nU>iAO+5XZd0 zpVMR1D*_qM^hMyEOjP+L9nyv-pF2T=?_IIQTTTQ0FJHg% zZiqVS-ibRP;{KpGpn%LJ>#4Sroi&~U9R1lU?SRel<}G|M2Otlu&n_zgc5yD*p7`5V zdmVQqlIWaWa#uV358p`~c|_D|ysE5LjJjcAKU1flBE&g-NdHpitiEGyJWq&??Xl8J zW&K#>#1fg60M)f*y~wO!hB{@P;WONl@6It-vLuf(@bV);k^@j6HVzJPz_$QhpZMzV zDV}S`-^KO`cDln&UQ>H4`{PGPsLrA&K82u@WIX|!4F&7V#vZ*L{|&%0n~QGY-QJ#I zq7w-@wgXv;rfGX11IdDcIA)b}`UWX_WNEw|g{oEW&^UjI-MEPD~czRQI z{3tne^;uwBGlhe%-E`!$2g;J=&p;}9q8XFj(9qykxo}vW0)iItv+ptp^L#+aoa!`q zgyVM-;4Fe10mqw<&hf*1YWwY5;zb7D$}50}0#F3~rKqo81*qo2>LSV@rlLhh&kK)W z8xjTTmZd*O?J>l!LD98se=)U}4caUH>5?&B58gLd$mPYyU-qB?sa_zH4z{rb zI(AO`6Hqb?rqlxfK2}Lk-ZG5-4a(+=)oT@QML9VJGFi`xw)FBl8Fa)qDGEamPN_Z) zT8&gNUjpJ@gA4A`*L!eYq2>U^LuCRPyo}>Omb?JCLLliCn@T4+D>gg{iwxbT`V`8G zCMlCFfqPFa3p6%&PErI1r&Ku~i-~`=&bb+w>N&s&i##*MFC-;+{e$54f`0ClYs8p# z9c2fDviC=`wWitF^&#dLDK3qQM_xXJJ3-TG&je-5w)qtCHpidTr7}k!=J>@@$A9SN zd>o`tJolCSt3q1ujvSfbhux8>MZ9{E9 zb9Z;k?RUNOSAoGWU-m4O28QHOUWyi#I!1Ol4N9KWJtYoK{bJTMFC_y5_~*}`M-S~8 z(L*_Veq%Aw$+_A_*tfkFl}d22T=7N(4X^n9$EwiN*-n7jBF;wvrX~| z%8D8%bB#_<)6KRp)JwfdMaya6{9m$(G*E-!yA{UBCM2XJia396IglF5l%&9Nw$h1H zQdJ%FLL2!DTdBhDDL-+(Z9y1t83?E!2ck5fY0qfaVC@u90-b_jitQ} zm_3~md*^z6Ik`|;tGogGK-!R zJ~2nvaDXhdMjIQzP(XE5gQO@6i`=IxP8fwz#8Z9l1YKRxk%@^?APog~7xCzkb=`7z zIbbBvYinAj>LEa+k(0}$@Vh=cD@#61u|!UmdVEJ>^dA5PhYNv`y3ODKNS;67pqKuZ zd%c6i;t_6Qe1rPjT{iZbFY^?ENzAN&ib3MZu}o4(m8;WRL(kPH)e=)N4C<+jw?lM? zM4C%|wpR!irYz_D{8c}Pskr3KY7xA%${WS@qw~iK^n4!nQc#Glv^+FeY7PO4@Jj$- ziR0FZ8vNsM!S)~iI6grR4V4~-D={;DXS**UWcG|$T%24`u(mL-Gh@Fh`-=BH^C#G1 zAZJ2gp@{hQxe*s-=x)5#;WFSG{PyCpbNx89q`wh9w}&aH73cv_$t>*mA{`3IT4TP% zd|RKG16`BmY9u{fotdjIZu+~!R#cxwLYuLQtLyu3-#$nlI@M=8G#X3`H3D|^VSnzL zb3Ir?kzKd%#y$=lUe!qG;|9p}^K#{b2j2qu;=fH>R_rUrER8K#y~AaC0ODrucR2yAl z5kEOnuW*}m-Ro#o>tJIm@Y9P|lYA)%6IvRx_3j;|GSKg8^4oXFjQ4G1uGo0H8xE$UUkdGpIhXd*H1KS4ogNmhoz3X4a!O8w!r=KkE(9-6Ghm#vT z@gEfhXVv7dOj(y0Rz4f>ooDtv>0gOB2_>^zpT2q0ww##FfVg2o3yyBf9(LWwQKia`+3GaOj%fO8Wxzfobv zz~EX8Bxj6QT3oX|&j`;k4*AGytK0FjEJBgx%^MlOlYvQn^SvkR;I&ZFx7)TfzF(DJ zzy6&+;RoTTx+bUak^Z3G1Tb>tROp(J&!2yV7VqDywXu5qST*aa3N6~5y7x6UV+C;5 z;;p>DcTE91_45Tk)ztiBe{(a|A;86Hg7^!7{lN*W=7iozNT_B-*QuV#+TmG$KFapL zmODR{z|!Miufq;be;WZQ*h}TQo~cs3N)P=&Ty}XFcr4nS;~EG%UkRlc0LKTN#0oiq zZ=L?2ow0LtSq?p?dYtqv7KGEWvA-f-0)O=W@p*9Nz^0_D7J0BbNN!~Hzp&;D0$!*A=?Mp+59D!5`%8LW2j04}$rs_XZ$jSo(7vN7X1IG- z=sv>ot#Oh7VSu_pV2&ZQ`IuDvV4oBygpi~tA88@I1RBn}Iy7tMyi~DK5{d=Zt5+#t zFcCpP&6C+P7%^9%lQGUgF-6E=0I^*`L&I5ER1^hdj?T`77G{n9PphhH*3KlGxEiN7 zVf3uZbaCT!8E$BZ_3%<~mGz!f#mHDeO^vS8&J{UDMQyucZ0BJckv9?Xj6Lqul=>R+ zonE-)7x8e0;F~vZ;=O&~W$SProGfHX0&)Mf*XKv&?Q(K*gHxWQ`)jt6D%uH+RgO}D z(p_C_-MzhP&rLEXCMOS$Eg1_l+W7u#;MXWPpd+q<=+t5f%L61{x`HdN1P)U4@&p7^ zWOsW9#sIsk0ks~5qK?(@q8fMi4|uM@96cIWl!GV!#v3+1hw?_S)m>57251L(`TTyR zl+3IL)$VSyp|-GFAR;^V9InRA>cDEAP*-^j+TrClU1n-}dcjI*Eyc|w{jZ{(EBIp* zsVM(wp_&1u4`hMZla?(qbiC4Qi{}JXy?B;T+f^18e-uG5eZ^#g)}bMj zMeBX$0MFozv?UVJ`_I#rwH$FisA}^ zpw;GJf{dM0e;qzLJe&m*=C122_uX8pC>qk*gAYMSs!*g=GT5u*5*weEQMG?fRt*X* z`&?!)Se_NEp{FNqr6+NG;MUa`( z{iB(fQsQM>1Q`Bfc`v8=37jC>UMtm5^WFW>nk=i}W=1}#2q z@HNTDvV((dd+lYk+= zbBn$p>G+}`;oEC&oP-39wY*f>mT6P@(m|C~wga-rQAj~^v%0%?1n>yVmE=|3wLUOR zRLBjgs^@*@dzaNXSvt`mLw!xn*|{mr#}0n?ZvR!cN)`>^-1;3gTe_VtNP{$s^g+CZ z8*CCeiB1y|=hp98w`1$gs_&4wI1r`7AYko8W0AV3C<*RRE8N_=2l)>b9QG+-h@Icif4AibeFzR_2)HsjGxNaobz<+*WoDL~!lFv4>1hM! zCv?&J84e5q0oOqM0d8#9!m)C)5jit+vkC?Vfi?{H-#11{7(hVq{;92ejEU*3+thbT z@>i&!DwhKa+DDPX+|TqeHn_;-c1~s?r+WLb@=6_twi}WZ(dzS8nv6eDlNVH?AprE^o9|QoP zk-(9PWU8(iH>=%S;Qr_3n&6oW;4P-6rww+JQWvG% z{KxMEu(dkC@-qqyqHojEW?Zhco6_Oo4)SYS zGD?gZcmt5_yXryPJ{0sXE|k8h0-t4P-VqsB z`SZ@2%wG+%7@ChCt3cX{x+XFX4>y60{G&Imyx%)y-g9mTfi67fiuL^>X-04n|IvGW zXOmE{A&(4>mpJG}(DfVEd+7gj#U|dqM%;DVLgR&5ok^yY-flF${}X0wL}y9*C4Y_V zRON%-Tv<#O^*{g0LOU?vx<0Bk;(xsHukQg-_{I9)uK>1>c+>muSMI$F1phY8zdlHO zcljT^{P$(XSMh7^zhD1gaQ3iiZ-W>@*yAMoiv z9=!3HSGhE@u?zVx1O00nLgiwrr8YLEGaQHsrZj=?)j3#{cIW`&WDX&r=U}a7IK=-2 zF#nk}_0*gUMS~g!Sv4R1?98lQK#X=7Uv_FIF#Zg}*ffSM6Y}8&aEp zJ}n^oPh0zED+<<%qvUSmUS@pMamjQXdrTb4R|wRT+U_Owv4DTlFO!hJMoPK$B9e>g zV;}nZXaIuI+<1Z`+7D0?EJ)=S$1yD z3`Z33>CdW*xUb`*peBs6V$U_VTlkxsn#b?8zPP0NPti<8NRj(n5bwkFE1uxtD}TM_ z2Ns=iW5$>5MG0mN|Jgtk;s3OWM+?*hQgG{k?_PiXYCyrqYXSdgB%?C z>Rl@0l5a}(a}fm;1pU1yi7F4ToX0qjT)RL({Pz(fxMjoC=5MM)Ot9(xzx$f>eEMI1 z@2{UzlWCqNVW=_5X+PI@dKU=PNvZ#aDFLch)*C9oCE*@h85;!b0^s!By$ABg1}D*K zfUN31KAQDe}n(xWsRg%Pk zZ+^Osj0miRltrv`^sx)WH)k7HR$k$&tAwDhb3b0*`#Ql#1AsazGG zaXql5WCP6EuY-8)QS@${nx+;KXcC`QT3A@C&h_4(oL}ES_D|=TRl3=3tOdy_%kPRB zfjmTbS{)t&7{)7Xejb>t|J@c_#S01wG`E^?aorqiO=WIwm-_Q9KoWc4d{N5Hb*A6J zg13$c(GTYt&Ecs1D}&H9)%y&EiLoaELa<{(v}1iXs9b8s%{kzOky}ltb)g-t&jRqW z8n~nnv$oOx7fX7;%5BVet1b6aqC5Rh-kF$YemG^2DFpl-UIBwI%h_%Kq7RUP2f3XF zuM&;2mfbqOp%|jl<)7uGC;NM665}Tm6C!SlHU)SYsT4)=kQ7DfRjTXM#r8L^fxMyS z%V0&@O%4rEx%9N@!-uI<_vd5)WAMrU$B<({UNY7tjTyzOW& zCjwnuD_}cG8Eh^<6Bn0M_@U!&9ODxXKwSdrmf^G#-jw-=_D*tA0yXcEa`e)jh5VIo zWI#GRmiaBIJN539#Jg?J{%*<7*YYHBDtHOqaf3hd-4)LPe#^4ed3!8!+MaRr6!`Kd z2Px?VKm!Swp)?O4_+744W}s66MM5X*dx0RY^(zJHUy3;0ONa&KD(I=U_T{EFe-~2c zs)Io{FsEujA?dy)T7YjBFQhvSk@7m}BJ&$lHB>FaoY$#yC&+^&nAcKQSoc5*0PI@u zkibHqDakJ{mqvKnrr;&lk%Lxr(+LYN!2(72?5Tq+85>AKfZ*N+WS0Qxtgh~o0>&BH zFV2c*8V3B1GtMIreg;u~d^gg#8kWe;Q{tmCL6QZ(wE1Yl3QKG7k`*9j!v6|T!B;I3 zqU@Z(Qg1W1w;rp{MDx**>DJxzZ>_4oBrK;)K_{?0IBq>$zXxHe=chV^osQfAsV|-A z*rce;prGUKuKq|6=y*!Q@it&#n^NQNrZ6B`sj4$P>@$imUA`g=Z}yrSR|IUE7Od7_ zs|leO9B!y$xGBKQ^8LhK+uk5X3ErHW|MRkVo#&6pbW^7}&W&QpoU`Em)tqHUIxQjj zP{ZwThyMl?3pJ$@2K?CkN?66i9C3?MIH7hzWe zxlb;`Cwl(79hH13?MNiDqzr?g6)60d7Jv@Z7+zZHurcNPJX*j~tEL4vq28Sup9$23 zLu$7UN+=mdyIY3JUxueAZtsm0%Q@WEE}g+Hi)( z*-G-p=9iN-jL|*JfI44e^*_%9NmFef{ZL?v8oaD8B~Rw|*!5?*74ZeIwN+66w%;sm z&L?)|sm;yZX;FZS|42A&v8X)OZSE3$%71vN`^OI%TTt1uwF|PzGqZ@|RcoLwAxoBo zXg?l|lKU7j2u#H5JSl93pe6974`Q#s)ImpY;tnI_MqfA8jW=3K?jHbt<27EDp$psx zO)dj$Acp~x$r^(&A0dB>zSL4MP-|RTafflE9Y^>7?xfy7hyhZa^wX8&D_!TX)9=!7 zt_Bv6{|c_1%9He+7Y3_ryX6m}K#K=wct#&7xIn*@>n%^-Qb!s^y@v14#0H z)|>36-2sayj+-L#J9h zjTxBDuK}T(fPFY*c=AvdU#=S0a|SJ2r>35$dQ%S$Kz7~ms;^Zj@0`n8M$QZ}%i>KE z1ff2oK*h7)8$*lVIe-uZXkSP2xbWkxrl$2!mOXJpuL1T%MATlye>I-T8u_{YDmtNh z=bJeO4G3d#a5^|@3lwdtDT_7eMmLUZA^+?W4%5==F?HoJxyTqh#3BnMIn<+kRN`_3|Lw}mrbQ=Gky~aW8so;)zH`IP3yr-t@B^nbWr&Ms;cp#Bw_`GGm`$hkfnP~bj)c&7AOI-U5&m# zFY2VKT^4_$fVub$h>xtg{syfQN)Y7ZqMb3 zK>-goi4fxiQ{+?+L=dl{@k($Y5F`%VUsq2Ncx^t`$*7YBzUE;QLGlo0*`U2W!PS>Ik|TxCJ&H`gY3tPmo|GH zIS)_7gvY5tUGxSy!IZ%MsoQ}Ta#ROQr7HF6r-xoV0~M7PO6qnB3m@Z~X(RvcMPfov zn^sR?xFtPcFmrX9YRo|Ol_)4KKI^ly^BCAn)B<@tdca{z6^ul*sML&cg=HNot2s;F z?SM$W(rY3*Dry~aD-}ksQ;TY^3}q_OmoQ>B7sS_U82S13TGoTP!D}-drV3-*S4UF) zs5kKcWdhc~X6rTaCH;OR*bgw?+p$OVVa9eb#`VaAMQ#=mwZ~bPpW1>05q`9A`WM9y z#0);+%`VE~(KC^e8Hz;n{iKhxE`JTQ&&_45%ng)eRhHftT{rf>MkaOL zTB7WrOvT%>URSoTz&?`cN2fFgr`@)X9uQP+bFCuGcRmwD0OwKxR=)m+`cSWP-YCN=b$%OIq_(ZgZGJk9;kwibgI0<&|KsoL9T0Rf+y`ps%P>$mY-NodH^^32SB zEWP)rx|(jutvqfZ)Kcvm6#|*SN0L11w%R<0Y&z&0q4qa9{muS-83W1~uP83k_m9aq#A5o0=ND2NxZidYdP(?MuVS+cu9hoU$xK zog}@8vtfxn9Gq&9*QAd!wRi-cs|9viaQB)(dI-743uFo}fH)1qqx=-5l0<+d!O7BS zZZA#;{GA1OKceh^p24(w9=GR)E4*~yA&f`ab1a*{+#4$|_gP(bb;Ep9KiD$u9|u!Z zieaCeBfsV{_e9s;676?15e=^-8Nc<7fw22gtf~xU>~m|B8aTSuCL@&ZYHaS)w-uHF z>yb|nXWVbHhHrRKcy`rvV1rG@KQnC^lavk!3%?w7LDf2l4?Sev85lz{*rqrdO?vkA zDWxhwH6gYnw)q-z4|-(^3vCNT&3X9qBHp0h>W4Fkwly*qFZ8Dye3Hw_tSJ1D(*wES zc>b;6ckvCsJ>75Sj~{D=FH`QF=ozW$SYv3_H4S<)9v<7FlKR5N46a|lP+SDvo(>QH zybu_nUHN910dd{Jw>dELkF${d_<-9OCzE}hzx-6qat>>mEVMxUI5pGWz}A4&xU2v? z>;l{#m}st*_%y0G(%nh!#Rt>mND1v9X< zrW!&adDg?Bo8h)kn5lAA9v!u19$N{#xt*Z#)uvB~0N{Y2qGDg@D@BXl?@@&4YB9e$ z)qx_YkCJ8_Jc?SX?&w|8l-C|}Dy(1Q133dhYexGqr{5XBk#V`S{Hs1Yp$af=qtGd- z>>s_otEP2x4SUCPn#;WAYAiBY3<*6yY(Z1*N`{fm`=^4dTx4W3%~aPWxCf@2+$0@p zX)DL61XeB|6KJmeA{&fVxM+V>+XGTIRm(<<*wXZI`~O z9ozX)alrKb<<2}UPluHinWK3)U3XQb%+9Giql%v1z@IV6c?hC`91NW!x7Tj+{)ZY( zYBycQge5J_u?pPmV*-|N+P7-dO%+CKzuwYyi9hR~^EqS``!Kxv;GuZX`zN$Y2_f&k z@zrenTza7@tdk@)UXQ*0^r@|xVq$VpS>nr?9g}d%*qi1d_n3vrrBYlFUK`|VYjkGj zyJu&~1>8I*Wx7KU^uLxV7<#MV zb2H}3Zgy{yhZ$>TZUS(v`LTY@vaw5{S8{T5$rE~Lt85A~-PdT~XTDH0-b?2@kJO$mM0S*!7hC{ftA*yyONgtR}U|7!*j;qMAxNgxx9TM@8- z?(9$-tmm*xfvX1fdeHpn+oL)uHS3)lhu7Z-@jVa} zUU(Apyls4sh0o0K0fBJv-tl%!b<=iPgy#-8H+eneAoUSDt1w%5Xw@kDyOVoZRbb#s zvc^kQoP0yX$ITFOdbU~Pekaa&$6Td;yJnmtVM;B-y&)5mxp%S(X_4X0xoONs4wv({ zf5$70RbLI@daijPcH7AD|7BUa%IVa@1BE-;IJTa+9vGNBp>8TFUavc_md?RUttelq zt|r^n)R>@-rDJpstH}_OO8J$pRrIVtW7geU#IAj9=c%TfVk=Ev!@{?ubxDug5uNP; z->EA2f| z-2MId&$`F$)JbX2!Qw-umTEBBSy`DOwI@{{-R4Z>Cp_pX{6v7V1LqhE@3Ee+pO4$F zjl*Uik+|&sd_{V0XyvKY#;)Sdq`};J_vX1RGvU+!1NSZuvY|S+8J}vz21&i#EhsGg zF;6Hhs#6kgYScRi0{pe-X3^Dmfd(2J@NsSiB-k^O5pX#OTMUPl0@Ls*dL>9Ve z?9Sls4M&yFcqn=W8jjJd+gV3VQPV=U+UIwSKV62_o*3!LL&{oC-phe^?(5aC)E4Nzp6T}t7%lWBAeOQvuzPB9 zjXe%hVRm)v$rmlvIq`I_X8(`H5W|?6FT>V8aho)Ba8iQ!1nn5#pLzvl{79Tqj>;q6 zAoQp3ilZPL!PSs%Lh#(4=Yxjq6=6ieSxr_obA}Tm7`oHPjEL1W$FP&VJL+;X+S!lL84QBL#2`b+m2X=k@@ zY|Y%hdP!9%Wb6DZub_21iD#$l*ALT%FRhaxKdI;!8K0s{#adjV-#7JgPaA*KF%LA6I_$CK{S|zOiU1u7EiuaD==$I-N{$7Hk}$8 z{k^dZou3>U#f)Gq^|&@N$xb#k3G8k-j67yy4!_R^Kw0KO!2h*wGWEDc{vYPvGAzok z>l+?KL`qa7Bn1Q%36YXUB&54Lq`MmoLXeg&=@@BgWJ&zegX3l-?TJ>9NuVoj4NH_Kf0K#+Q;2bbMdk(I>&W~ZORC!g+MITwYqUlGT@&Ehwd%w~&IW`X@#V_vX8fPbFpW>^l1dED_ zmWQ|n^BOWq1FrR^aX(%m9Z-z=NWo6-UovcCyg9;mHhyFav{VM^VYF#%w{MKY1u9ZY zeTk5!vId$9)E0K5<=bNnx~nR4H99P~o)m+5VYf8qccQ%EdW{7B(yU2hqu;s8Ta;ru zyU1@ec~KSR78g?+Z1L>p-6qP-t*eV8zC=>jO5pfVw=S77cpXwM#i|SC6cpUgQtYc; zP9a?2*GPEAM&KU{t=>8Qi3GODX*fvhz2ANrcOnw3Odn<lnQut+)&fB z3lyyMT=dZn42bwVCB|3{T3HTGzQ@eay(xVKjT^$wDmxH^N?0!n{!t*ur*uVkEj;K? z4eo?JK;(r+LL7*qQdxVd!bm8UQ>fg?=1RZk&R;Xd0#r2?Gj@(YkS8H7sK)Q?#1m@=S@GL7Q~K~l6+zK7#JUrULiN$mpAZl*7oKQ z_hx?m8qzQ?=3Q<=p4;+q9xskbP?(KSS4j+PU0mFCS_( z1B*~|ni|4650?N6R;@YZHoP%9M2fGk@j#F_H88>aNdSYC&!%fj3*MyXU>n?ivS6t% z`IV*zA!d0*nPrcfTG5!4&X=(ETvL4vQU411h`Bi&)9bof)p{{$QupumO`q4Qs0{Z{ zZX94R%B$)qz1S)vfXI-?59g#W{zw)`>w{~^zgEQq(rF%A;${@aG5G73%+)eDMSqwd zd_~2U--0aMborv)NER#AcE&^Cz4_@~A`f#YN=UEUOyBl_)xvE?sAVTliaem*f|u{A zRasbe1F45B3DMuZ=N8*mOr$lUT3MIp=*D%1 zIo$-difE1!0a5M?=%De__gP9oZ!mRO%=GQbx@nlFFTEX}lOww3HH)S%t!wwXo;1dG z5d4eFr3enW+67eItbo6Zg3TL*`<)KlDY%$TNBb~<`|9JZgpr|BzEgKt4xor0ZCLCW z{YPoqpGMfcEL`nfO|2T(*wO_>MIE*!S%q~()f2L!qR-=Xp2vJAcsB0C1hxs_^*}m5 z=2r}C84wiVR-z{sSiw@Kdh-YdX zFrhGu9=NaRd7dO4e0n_Dbg0V%nB)!mcA)p(ps4m9QUj|gswMLyktbJLsBd7sGCS;5 zZfcx@lP^0@I&m}8pcdo z&HI(yGgDp$;XEoSWq-hywfulv|{^a8(r)}hPEiK2B*#7J`Tj;vfZPQ)@+%_ zF@Gp_t@lNtLs{G;icsy#7ekYiqE1c(a%Su-c?8uH$kd|XWjsisLcvh}km36Pi<>xu zN8x;_JsiJA21ZFn<32Z%rdXqWE-Wkrt8BcYuq||f@Vh*>TipG(v79Hb=ZgW6L>Iv< z@*I>%FG8K3WbWsB=TVka08!qtFAc;)>!Kq80mb(ww6gpmifUaODA*Wp3360ahYYxa zVr~-$3|VgdBn@w;-~0V_kvtq)`f({Ekrjp4cHkf;Lu2Wuy*w2)R6o zqFeiFV%9&E)y+B<`S%&GVgFm#UO{}4qWdoC@Z!maix}AdK#vvB0xIfL=T1oAEgm0c z+X(_nTLV$cKE?(hr0&jTfjXsY?)Eo<;B_A9Jh-zFkQ>G6lK zvMO!EUFS0K8ztdmYA+1$ySRkMZ1=R<8LA`f?n3VUrrrR-p-Ed}JY*$U`piKxkon!5LyIHH+|sJh;rW6N*1vk*x@vD3AV>`_QM%Ceixt*v&T-uAcS}MbmXHqE9zj{N z3p~8{PjI-!3^-iRCd~iEUan?bfX!Ho2x$9uTpQmuT~SEa6H!eMPR#QC;Bv9ZM7Ele z>U~&$2_r;{#s-)4QwZHpSFPcaLZ-aJ!j!DqvAowlfArZ?+r8#~>hw)v8=K1Om%QKS zcNMgi!v@D>+}*ExzI=`y@OE6wOW*DQ_nIqmvAqFTR~hXu-xt zZ$)x?NcH;i8$Ym1k;pi>3$St}z>+y>5n%^p{_c?7HUD=?O7}lSduma&+_eC&EYP9C zuD!t%jXwr>@M*w&FW_?HP%4R(!lxmNJt8ZEvU(zHjQoR~T`TCGy87VA#NB_*Mlk#E zjv@M+d4%W9r(LFk$D<+#cFGJ9CTj~(KCm!Br>(J=Q%@WO-#I({<&36O?ei4EN%7?|`_Wp%5LO;X|fO~Tyo+rF@=hmuroc{F@*4+AK;J+Mo)C`t<_1h)<%M) zv}8$1$u;}EUdN{A?eOWJsA!RlCd<$aI6N-!qz*nEe%tI`n0OGFY*1k`MuN>R}L6?kAx-4vM*M90$^5Q}{L&mlEkOD{E4jjL-M#vPQ zE&b-s9Gt1Oh{pc{qFPbfjrb7KFnS}Sc{Wm6-6VB&^_P;nSZiyRa)Z6S{PDW3)LhAg z{$zGFEap4RPoBiY>v`X(_ksUwr(m9e&#kP z-r1}76yHBMI9PC6w!^e9?M=^`kI)qA6qD!OzTZbG?zoEHr0Y#qC9t86`qeZlT|YeD zRH9V5ZdD+22Bw_U$7x-mR6m;)7=+7^>vk0L0M>^j??t`p8s_&l@*G2bwSC={u&TlI=$W*V7W zS^`%&J|HuZX5kxnq#;A3ZRM;&x3mUI7@YW?`8KO41(|`0>O6`G@;*My0|O4C;^PUN zr{wTsPdbl|@aw63=KTt}GN~Ak@*lD0WM+Qsd_`83Z{Gef^`oAh!Nf40?zFP8G(-WK zrIr!t+Wq(Z{6TJWAAfD5`)8t$if17H01M2bgvEqUtsS!8J8_k&*JdNxcw%y?=h&VeJTe#M%Q-paVtt! zBZ0_&X^DQ)R=s+-lbkax|B)TeR*t^+f>jK3z&w%f(wm0X=3}}&k$wrz8J~juk`|L1 z$Y8?bdSKsFDdcX?SkS@_IEwM{Px<_!%G2<$`+Oh19x&0%CyHI{W}#)w?%1;{=k~VG z@0Pmu0J~}7I2@1UdGIRx5*v-pJr9rCPq9R9t2(t)EJ?}9Kve@~Pb}lVp@(4hI1x0; z2vpy9dPXptauspoch6^?)W>!s;X_kgaAs!zfX3AN!<{iR{r+F~NV-7e7*46-{F48U zerR(uLBsx5kcx^*T9r?l?IvK4t%>01R+;rNBi1Dn9VBc~l9di-!N$QsUvYI;gATDV zaZ>o}@>LyO^PYjxSKIBYeV3M^d^={nT3KsoX!t|ul!jg|ska8p3}fSopy2}uAe$YW zOONe|;FbYUWQ3lVm&L$V$D0PoVA>%3698B3MNloePb)(1$_a|ASEj7TIsGBQ{!};3 zXeztN&dqII4|nC>-<~_oT4b+YWUpaGo?`pExNsusx!_VccawX-IU$?Q+j?dsxHlkc z>+5`+dU=B!dOi48lHUkFB=aR=e?M zP!LI9=j5!c(V2p-4N}~AhgLli&@w>cC}Wb1Q9l*lJyfZd3Wg{uu9csk-@3|w?w6>- z82dgb$Zg$4q2SY~HP^;rlC7>fV=VT&7lYRLj#Q(Mb}))6Xq&wfr+aCa9yI83_9 zwqz}~)&}DggCUD8Wqh1eN;>3iZ^0v0I%+m7D09->oJgbb(oLMoN>{m*PJG_#hKBdq z3*R(~6kkNRWiRSfr+EEaL_R05a53Z<;Zj2MzZW0eHhv&-b2n81F~iJ}F@!wtOI(O) z3=)5Bx--&ofh%mG$un}XvlMAeb-Auj!t+yGb8%LJ(hQm8;@i>3<3%ZSHmmxv>&K2N z^%Y*b5aP%aI539 z8TKOGN==P^MBj~*-Aty%oMUF!{kboHx_}pI|CqRY+y-VIe$#7XZn3v`ej;B@pGil4ye1i+hXO{)a*nQ8OwQB!TxCH4(0he;`qeM z4ucBH8O^tS^mu={hyK}55g#9cde`m6qU!0zP}cY$Z>Cha4j|WB3FGyp9QTBQ5n)@M zOj|4Aak`1}Sohn;P*L-~gmFJ5Jpj89;UjdqTBPGQH3adlGI=a7wC~;7k;3jpA4;U# zdgNgIG`WYIFRr7?hRq{!kvUV?|Tf=#*4VNfN?xyIquL z)zQ)6aPFe+G+k>(K(UEu1?aRC_=dTxCtIN<@L6Kf%{8PCm}jS5v1PQKUxR%?4eckV z$f5yr$yYM%M1-Moc^#|HO3KP&VX!2EfR3|k)qu@>jG7nDFxcK=-V9_zdeRoONElVC zM|mw62M^PR4}8yr9UYRd2rO^T?~4!2K#$kxS2TNNTtHIP1m4x0S&Xgx?z3 zU)tDu35)Y#pbJ+(VYHGB81X+e@8;kh9>u!H&pPibZx0Q-^`I3@wi2U)LQpz_SQ z)8Jye+Kt`w;E}Hj>hd@MGy2A@9ay@SMo|=aK}1vcJgZ%XKS}cMALyU^K21+a5p{ID z8{+){hhU%S) z^yxV_eU(pPV)42^-eNduIv?Y|+^VlFcGB1wT^QVhfb%okmK0Lt*WwiPJ;t6Q-dDVffqum{Ssdjc}wVx^cU#Sk}PYu6wDv z`kXTlTQV&u!}dUs8kC2xK7wz1@Kb^s!w$RXrJ~}Bnu?^3o1-PUg)?qA1yIAKKc^l1S4sjGsP*1e~!KS?RRl4go$(HSp1r(se9U&^mi z&s2F-COTd^p7|k6)&wzaLk$hZ+SScf@oXHaotlC^wB(Y2D2&LF6w^I2CISv{PVBtF`{g1Aj~GFQK9g;;oe$0ZZ!QkM{x2Fxk+`gT4fk~oHAU%9 zoH`;v|8hv;;N*D>-684%AYtYvW_qEYKQno{%%TGk zmg_ZyA35HKAo1{01*x*0u^)8|`t1i?Iy&B}@a)mrI3xuJ<17UNBil%eSO8uyzQPQ$er>R2Wpe|}ENR(f0KkKazSqr4n?GB>y?aFA8;Dt4Y z%a91g0gKlkh>P;AbtDjRfZjKuRj!xY+jO9oCvb9Gjrg<-7x965jD}k&iNM^?QepHs zm=!8FYAf`w`sP=2dFegdNWc)HQRc`A4x*SXbaE{9CW?7`lY@B^c2LBMxIk{hJuba> z2|+N-pT<1oi(WrlqO z|4U!fIl%9>e1^hKybxj==Muyx@AsU9Sx?pkfcm~{PVFjp2?$EHXgwAe&5pkfaVsdz zQ6(jDyAcVUe~<9dk5^YIJ%rljer)lI=aKUuj-j@D}0=KKG|V ze()n~kB)swvZ$^xoFz7!@q2*T%=F<;_vOUvZgP(pJlz5Ob}wN5aBHfsaLDR0BcthD ztHX~}cATt%CZEPr&bGFkFB)UVQvL$E6Gk6q7UR>AFqE{ElqSrSVr(oZ;o0kJ%6&;6 zNQ1aaBy#26!atpY#&;%Y%u8!^;Qq1QJ|qPD(WB1w zVM?uDm+o5Pf0>=2xgn$0Md!g8^W6N_@UiTc&m+Ld62HJv0Vq=Y{2SoXL*mK8yZk(L zNz_8i-X$W!eW@V)1m1h!qd{cY7(eQ)8_gJOrq%lMfevZ!>cK&Yoqqibf1pp4m3>II zJH8Lh_&o~0tz%-3+2gzf!A++2Fp3^nBRo_{;OJGq50F%y-`?>|dUy8$x?4ZE5IUM6 zfL!fy9Ehpe^3H}6tBWVzj@s(!GLC$f(EVVL6c@kd65sET!f$o4O(x}e_~qGYIzS_e zYtHVb9e3csh35eo0>DuafJR$jXL~y#K>ev_5~e%76D8N4TI^ldUmq(kcSPv10Y|a(v?xq~1czqZ1SiJ(5&q6|_ z-xkLwL^g$SBYJ@<>4OruJnL@QKZHJHV8~D^sF`^iaCZLPtp01?A*cto57fN9{uaOe zDb&yI&|^e$=!Xv<+D$8rDl}`sK$bS$1b4zb77-y;=s3}- z>-b_pz=p5g!yHl8TrKKH&Pt^3^$}n8Ok8@!9@S{r*34?TZjEnR(Vcwi7V0QVcn|fP=5_(NYLbG_U_qwj+r8Ki2tHG=sDP7kC^xe3Sda* zO$JK81nPIn5WCXdE@&|dLq`8{TN~JfNV-sh+Y!TJ#e6&vFH{L}}(qcYl z+9{D)-F1J&8x=8NZe;ND_FYWey~^F9LZ*&c^9PK)l#Ab{(1ujenq}{h;LhG7Ty!gJ z+xq-TCDVAWApa5F^30aMaP*X3+c)%j0D-)D^Zg|+Ap{o(hxR9F0IcrWgELG8B^_b+ zn#BASjUP*|HV(UPjocIY`iuk?D^Er$QvJb>$MmVYwr91@gh1kiZVY|j14hQckdSAG z+Y@8E@3{hT@An3ORpj90EcckNquhM?8!rCy2mDE9mW+zZ(D680^?Mb72^ zU7|fY^+cyw&4<}Z)_i_sf9O~myY2M4fZ+jxq&F_Ce{_v z&>(@xpPk=t+@W%Rf_t%7j5unRCr)YX=e|&p%ZpjJtErTpZJg#X+mfN7g%KJ8p}8L) zM2SOEVKJyS?Yrz#2;Fq&f9f-?2{*QDIOd|2kTqJ!mz;Fk_CW)MdB?gh(5Fj7$4rb` zcMM?{bhI? zJ{=T|hXI#bpW@a=Xzq+Q0qZ1Wzm8~2%} z3Ej_ol=Tdgp#-Xb9#>ds+2l24YLa~%ZWb=nVSZ3mBk0N$fwNCI(&J+a)OD43YY&8)`b0r-l~XUzK3`>Z@yhl{ z^?-S^QJG=2y5olVN?~BF#4V*rKaS5@st$^RSAae<{Yt~===JRyf@6v;u?&UC$b^p* zo2G~~8|s&Wi?7?r1;3`B)Qv|XlE;5qA^}&_Uu-r2IXL=q@t|~P4DfhQt+3*ZX|lkP zRcGps6}gK{@s}@Qh{~y$+9|eYPE3#ADHlMYuaSkUZ>w)CELznMwXA(cUcRN?@E@d$tSNmj1v!6XE zCH(~oU9C8T>+S+EaWtemT@~%L{9_Jz318&ndfoL!lcBmK`c6=zfpyb zgAzbBC2w_9RPNcAPMqSIwjUJ0CzyxUzX%_?iU`HryNo?}#_K0dGO>0#3d)(%uB z&R)uZgN^OYofhSZDYMtAuZ4H=+rla8->O~mI%Zdnt4X`F7|7VJlf)EMA`ku1KET&( zTv$mke))791Wy^r;#=SKf5t;y@x*Pc4R!cOM4!+5~M^PRZP zv3`n4w~A(AT)Wx^r8;?K_IaVUFb$4^hxZ$u$E4QQ-m1U!M8P7iun20D5TG@4j-NE+;3tEs{h&7yIy{2gPUAqv9`->4WgYuLa89sBMIwKfp6yEc=~(zbklQBH3>Y%Mj8*Y?g_6yz?4TCEN^m zs-Idg*~Y4ATxoTP#>AuL;)*K&*+kShz=rjl98X2fmHaMuB2B;f*I%PhZ|2~aJZWw< zEl90jLqh-;FB>-s{vi7~yQXx|Dd0%ZzFzlt_=Rd7qf1(sZ3#UiFOhN0)m0<>?z}2cL7V75bsw#MRpQ_XDoG$`VFmGT)^TYHsY{6I=obr*!ZSB`fsxTsxy*O6RhlX4cHUU2yZ!aHMnC&)E z`A%% z8U2A_y5Q)6?$20Rmy9NC_q5L(mtu}R%^Im~jJmv-jHzYru&yG(#tyIaVrF6ydv8|k+gLPEyAT0DuN4>M~%Dof}w-Eidtwl|NHDa3xEQ}J+P zY&jWtMtwFPp_Pk=ZTvE>{CZPBRll0Ws=nlGo}xMd*Yw-lTK=F&q(%djav%YRw4-;2Z z6ud+9L~)?(9&u&bdP2;mUuXy~YHVXd+6RTYE9K#VrOjOe(DOuKoZQH9N3XW64lVy_ z6cVxrQ1w-02jQH|j3d`O@lY)aab@EjOXy|+&;7a3@NhgHdQiO)w)l(DS0E9pRG{fT z{Tc*L+*;f)8*Hz9u{>eTCX+0PAAvbstSK%jX;Ar7;j0!!#WIs<33sU(itBJ2UoW5% z`peSp)KMLCNbcVl-_>HSl$`iLN}tRMnPcJpWUzTBbYX%8R!t&DiOp-+`HG&!BYIm+ zk!q0Bg~7h__H?bb^)!7%P|ysuV5L;pz6o7|ZvA0e;1o({qEH>EuN#wuqnYIbLJfzQ zXIqzBXbq|w!`_wQfPw(P3Q_?{S5Ec5^J^$kZ&9-u+vJ2>+LDIdNFI^`)q>Pg92^{M zmXNjqUzoM408vxfy2(gNT9gQyN?2N+m*my^o!3ViPr%i?yLfFm$0s%phhgn)LATf- zt<^kwQ>J<^zG3M@SC5WrBDY_s%1N7;toV=WQ~6=1s*P+>hTpK*K5eW<%x}6)oBeFv z1z=NHnQ=vD=c|`RYFUF8JeOxqBvEl)E+YsLv4CnvB^w(n1uFn%HIyG!Mn;V7kp@@} z`V^)WgCpLgD%RSvI}^Y3i?teVX3IA z|5TvT5GX%~rKCM|)z!u00kN^4D&j$q!xb{b9JrF;Ze&EzDU{Zok#cbilM5a!sI9#( zP((dh%=qL92u(4r6k~t-IAGr6Vkjdk6QEW0;LykVWZDna0+oC@wRyb3>xlaA_r87M zS^lh4aO63Kjg9jXb3;BysUVSO-TH?q&KM@D+-f;au5a^Icde~$-2ZeLvjdm$OyWX! zPWSP-4=QsIL^-<=QTd!Dmca5m=4XMUA7!ses> z-{2E%F!FXj=cAiJw}Nct$BCt+wDc$D=I#PZGE{I<_Ec)T0Uwi&Awv!7W0nhX`{vL{exB8-9~Z8L*~04J)pCASImPA{Q_vbe zF4V9AHB5l-3oPdY07Zbnwx}pY5XJV0*WvTJ7Z$gh6;4q{SGz!Wl}QCX1%4E<54W*7E7lN^k>L-*$M79qarQLr(+yUG8Uw;#pjbac zIDzoR06-_*t0!{)K%5I@wni9GOulq^)qb+#(RLaZ;(G> z>|)?zQHj$BIpY6_1&9I^jg1q2halO1Vl(&a!yPY$N3LFkEb%zTHTMHV25dt;VBdnp zvvR81!@CLjttT{*NEZO{(Yv_Q6G3IK`OkTE%aA+Qu(+D2ngig z(?##IXtb7PN$j{!0xak4ck&lLJ`~B^82AH76I%<(J2})^CvwSb2;xVSK+*f5IR7>r zn*YeShw(DfV=3POmt^Lg&q&1RZoH1GP3Q8(K#<+st-W*Jdqr~i!p2!yQ++)D_T65E zN}N>m=Ri+B0KnWa!lVL(TFIS%7l@YCovKD$REtT+3IRwLIif2Id<+o4F*NJv(R@#n z^^ZmDZ8VFbm`?YMUAHHj;$-!Y88wjH-Ek!cmFMKKiQoGCT(z4LfV;#VvAtyomQN<- zX&msXqD>QJFsqKw%^CSD7ZrhpK&vP?e~=H$MOLQsTZqJ`w{+O(V}88y zCVIzG=&}%}Gar|CM>yp=)K7WuNm}8o=cRk%rm~b)Zq}4#jg@U$UG?K~T8G?z@)DWo zesVaTJ9XIN=K)FXA$_{_O=wEO+8TETFV%LcZpzIXmF5FS8H*1HKoBqh;(HowZd?8}Z+ zcrD+!dh%4`iCEs@&|syLQ$(3vdNs|bZw52FjRN-+cog#ncUM~cOu!^u`9OfQL|gY8 zDcN3IlOhlI1ln3==DbLFXh^v6SyH7{V@77?U4U%W`yM+r zO{}3pS>IOQ)~#H7qUUYFR(*CPAu5`ndDeyFeKe4F1!bG&#YEk=m~@_Z5fvMQxC8&Q zqNXOYNFW_#tjJ%uii%6C--gT#YulOtfc%SAWn4&zR4=a;4bD;@9TOAoP9T+)WrL7t zF%)Wc8mrn7hYbzApguzoif{(B{TgH(nPR~w;A2A^?R67+R~}m7dJ3?c${hlG;#t_%GHoCLLjK;m7Q$L(0K%PDMKX8Y=k({xysy`AO zhydg+A|^&>T2U~CGEryJu8Kw=P*%>o6w9ezTs^Wq-g{%q8`G7<+Mi-E_Lm)7BD9`R zrH-qeh3ijuCtvymtgJjLu06pvGB!S1gSu=?_(i^d@7~MjhGxbJz+-?uEH~OUOs!s_ zh(dx#H|;J^gdmcDpgm%-hnuLvc@_JR>UrlVTUH{U8$F;EwC9cs`T9dmM2OgRKAPq( z|2L2Cr9PMQ@c6Lp3ywdg>1va(Z!rN6IdEH#puKTTmFwHNqX{AJ<0E(W0Wos`u95uy z@`LS~~kA{m9qS(s9O_D@!dXW01_A zc-23KL;^wu*y{@*`Qx`jxMinAwC!C`+ z@60v$YheY6{BPPgs(J+}jR&bw;=C{DM)da45k4T+p#>a+P1$cnq*L>DwbRAx0Otm7 z^|T``cpEp>#6pL6K>SKdoDV9l?b0Ll#k=TQ?}4@}Tf8@M5t=(RT)qf(KPY23-|{+1 zBzE7Tk~er35R=B0a&WqZ`xnMEA4KB4`knRMJ<%!HqJxj;!Y@Hn$u4LeW!o}TOBLBQGZ-NAH3 z8#Gk^p@7eIbWD0jz%ZS_`!vkT+IsGAVjEY>W~--qnodBV2Q?mXKc+2#O%py3&Ig?x zEH}>8nx!|H;(d8KN^zJ(N_n<#e0Bl%0s*%=-n++FZ?t(*QqrUObV|d%G#_8o@-p$x zytZ%edI?O%y(S9K{qcBY^`bq8*LalFxhZ^sh8e$heq@D>e=F9ed4!*KRi9H7Fw^;~SO zlPcob5%fHCv3q+)q!f4>G+Ct@*7+)oAX4NJ)AR9yW!q|XMGgCp?^{jiWs)RSU-PKO zEJF9S{xyQ!wf!^v?Qe~7CD9jg?MUWew?kU)nAiOjQMFZn`Qj?9DkLNnJ)A-?x_hee zf&4I?a8L>TE9DE58I)VqW2~uXcsu zR@qEQDkl#|00aj_BwbdxEzc?rEuVI5JDKXU$9zvKExGo#J~)Id#09EV6f0xJ^S&m9&)-(pYmQd+f`1S%SW%RtvRn& z7ypE^>#583RP87=km-%!;f2-Bb#1Rw$qPXP1Bd-;)1`7a+_p|n4naFv5kjjwDpmwvDpzq7b?U$&WXU}sbDENtzEv%s_3g#a9V1JUyU5g1le@98~7y5(w!88 zX1~(uGYtW^YmR2cw9U|vf)plYy3ZDd&*HBNPQMF@dfkcXw9`ZodMOs~t!)Pr(EcF0 zjYF{PY7!E@otO6>&{CWm|HD?G|) zN|X`uE|o(kCg1prbSsSVMs5a?si?-+NCZ_}ka${+zAd%^(pAey&wCLJza|^ZvZiDPRSXT^ zgoNV61~Yuk$W$WZR@)q?Js}NhDUOadT3lQNW{|8_y(`S9Y}7WjW!1UUw4xHL&V{pn z3e>%#AtYLY!i!(558I7esP|H67OBO?#dR+47dCjSCJP(7fr@+m{^d%bdVySQESVe3 zfKM=8osO<;@6=nX-WJBl$cU;5RZ&l$SV!i6{VJ*#A<+%jDbw!jI9y&S+O`|y;6v7$ zR*o+?*L`|L?^-WCbTN;w`lv)Yidq;#kWcot>N8&f?{B&F4*eHR)^MU#zl}aB^}AIKlvfmyS;JyEvw-rTja!T3v@A0fc|1iT2*jK+gp&&Y@)F_qQGb zj?55AMZF0tpG+B^AaSXozR zDMsr>Z4i9_P!QIj=|Nl85du2+v4pP{CG zon#tuVLhd%_o8m!%ALEO=$d&^Ezg%+`#R}j(Ad=M4@WWB$l+{bu6>Ij@x?#cu?|0R zPGEe^FPQ$a7b{J8^Laz>VEs1TB=p;nM@;2;g3UZ7#;>R#tI{Gd@H-nJ|nC`t7Mn1&>L^m`T~VNtuR864Cv@sLi|eVvMm$&k_}Aq7-N- zm6?dZYqf#`|Lq}o{-bk$|8%AL{m8%n4>mIO?+N+W zUk*gB|3^Aj2xKMTCgh)XufE!kbLSuW_Lv3wHbe zrbEMj4x}@D$g0|;9-M*r^V-1R{r|RS|G%56|2I1n3Aot8BC**Y3vxc0TZlKt^7qDs zjM_N=k4;hz_nrH|Cot1GqQ5UFU@) ztKxx#vU!(N8=?NCo}npMiqN*qbfAS}Uw3py#x8f49=$Hh)u$RT*Z4-BmpiqO85>{n zYie+7t%?_rc;C&MspxE#hlz_)S~#&hbdp0uQz);#L-CI!)RN;WL$vYee{Ca3-8~8j z+N)GnSEABvV3An3+7oVc(EdYN69Y=B3ycmasbUf`Sre~5Gx3< zrN7(ohY3S&`!f-R$_XCdqr2-Mfcl}oxW8P@(;lz<+3#XrJ~~@jo)4BM{m=FV_m-kt zRpAJ`w%z?;9q;cWtf!Z@)R&$|sL!J2^RnVvZ3b7z=%#HEBkKr25VGf@srOFLL9Ll? zk;=cHd-co1YyRhy#)t=!KovP@p>0%rc1PK8xARuS{^GqAM4td%{Z!FerlEiaHK1lo zu28zalI&mIJPLY*_UKMT*WzBcrBkO-rJH-o)U2A^=T{#@b-;@VhYH+wpoUhh9eoe4 zqg)5;>aO3Hzkrx0rvDeNAjh|Dsl3DMecMZxe|`4*U+2KY&1;dmT%iHG{}d&-`lKIc z0If9L>i)T!s($*S)YYF3xB~>m75-Wje;@7FFy;xmjeBUq22|X3Th`3lbsDqn_Wx#~ z;I2}9YRJuvdDC8Z#i&ne@^gL$4SG;PK`6l*DCQvZjS8ptP({aL@@ukS-P1i@ma^cWeQ{nt|f zUp}q%pGdub`Ol`ix@$$?f3j!I3f-%Z{L_e~AC~L>^FV*tA53{A$g8Y%zYMh8iKJ%iWbI#KPOdB~R|0z%ls~mdp2xw# zd0jEa=duN)yUqC50;qKF^V1C{P^>qXA>CU9#GL|O@K>LI{|m!GYw|6AeW1-0)#*q# zW%e_h*5v|&`1{Y^g!)$xGrMVDIDAR?bbycIPinERh{)mKXY!#Q8)uQvb_< z@!<${kes!j1LN50I!8c@u8PCy+;0BE$5FxH1l50Z_JHL&WWbEVeda~dv&DyW1Xxq- zo31^{d`~LuhPqfeF5hW-?tKVSd1hdpTsfkDiq~e;!zXZw@;j22<=uOJzP&GB*KoL* z6TSM>$dX&+!+*4W0yfV|MQ+*|A*f9(FPMv3>WLePX9ya60`18VrO7qVR+OEs6W~SV z56p9{cFqHbLYA9pBXvFdXlxE3J?DB28lZIi)8+;pXfUQdY(oF_YxH}eZ5&SR(%6AF zx)u-34z-J1dB`b`&oDNNSszgj%+@j!g%)2-qv#|f&M)-DjIqX2b+v(dDC`Es3Zj$b zA@Ys-XNEnWuuot>rVN|WFr}iWlex76+r}8rs;hf>PpwEf%u7xCJY_)yQS`)1)IS>L zRlfuxZuy_<=u?~%-2@3;S+kXz{+q$l5 z^QAwlu~Fj9Rd)Zn*q&w~qko$B zQN)QelO|o)v)JU ztZB#lXoH;Fm!2mMKF5nni`S*=PBTEO&cMA>1Q@{Pvwt3Or2%DLJtD4%!iJ^s%o5}6 z3xUJV^CY%&O}d!Xs1CgneWBWU!7vgYEn+?QvWuM{2{+GPWjP+%cbNDCA&b(;A42I0 zw$l&9FaKc^p#4rpUdW*nS7=UOn4dI#Okq(`+(Qf}CuHx&2Rt3X9IZLo3ns^y95QbuG2r0tP=ZAUg0TQ8*qA)MFIR-T$mSXgpHa8M3jg)eiqH z>!XW5{aor%1!A2}l08?b#K1Oja@t@i*hDU)t6QCsC={ePC@d{~MMy|CE--Q5EamYa z2lA}KZ=}v;T}6T8iv%UcKNA9e+rXuO3}D_LFZWPhs$W~HQv-thnQZ78j~KA(qaT)x zOl&0v-XhC&m_JmfiRypCDv$*pnH^q_@gFlFEKdyy7F>FOp}RZA@|PF`bu9EAfMzVFC*24? za7ahDZwh5h8H-0yGD{YYmdYVrI5#O{h_NN3hl{kCBUpdo#ez9-u14v*8*lk;(~d}Vk^5u zoIE}@bjJw-so2}ke{|H=1AbmV>YJQEueT4n&iRs@Da^v&S|XuqGV$a;D*?y)K&x>_ z@wr+%i?A1iNK0$ln(uDt#QA)Af0xxE04Y)?WR@kSrJd1=`PVVk4SChG$J&$w8W+*p z*3T{!PUm*YANk>FGYqun@6Lz(FWP@^&a;;7YFmSfmkq>?_ZE7v6bWs1)$NxvrloMs z!~n-asu-%VDX~W(_nbVE78)ViDc{J^uQLKp2KhxM{l7ge&r|;nPdhF%S&}Fn%1F$p zc>m6VUo@uZ&|yQ1_Mj|5IhI~dxzs`sn;1l@M`@)QkO#&t>cgHC>i(b3mv>q)rcIaP10-H%RXo>f-OLbNRp`#H1BEPJ?^9?KY4a<-b#K~eaj?JL?%V$(G zBy^SH4NH16wf^fce0;c{c-n9q{iin2+-jy58r?nqMJKFB==?XL<~=~I&jVrqqe}pl zY>)iW7J4cE!Smn$Z|q^LBBS5;{|7l;Ki>PFWq@Fir}HoWnLEY%`Vrwd-#u-t0*e<# z?F~av_HLS(B!R;2@(!K2cfX>q=OBG2yZa0*Ei62zYKzq!)$e_{ zZk!qT=upCo6UX8k+&85z+tuq`yEdU|#-8$k7mki9XfhX$msiuWe7=i)ji=qYapOj5 zQq{XJZz41Z-Z}k5t4k-QiPM29pfE{^em61J*vmHSNO7kxpiu!q@mlZq#Kc5DT7W6L zTNzzkBXx;o`*$sXOV9Eq)?+yl>#_CuT2GQl>3lN$?c=8hdZ}TQ8eJ&DRC`anPCGNF z0vEu|0vrj*DOH4X*-4Ag)poNoi{x?S`7y=NKFLxq^c9zDfnPsZ?Q063&8h-Q9F3xM zC&S;+9YPyGk|P9{9AK$9^g zSt#WgEAP!7_4f7_PDicxRVe!I1nQ5PLW5A**&kWcs-)%joyRi7@v+;8hO%<+4D6Bb zzgv%rtK3l{3D3KKN^P4$@>ySS30vw8sRviFv27lPCxFNIYYcq|L1{$C4?K)u&<&xNDb1lYKUqEu&asJV)hIcPDEhsCi+N6}3>; zP*n80kV8aG+%b`hl6!R?y)cZWWkb!x!@2GQmmPMVgPoi_8TDFve?MDo({+zQhI*1m zvPv}1hz0{!a<(-54XWxN3bnE73@`r#}M=&MC?p;Ld9-ou=nKUfLTtgJ|{r82hHoXb;xlR?@BCS4VFlcfCW)f9^i?OMf18WwMC24MArXh+Qz?S&Tm5O-}W~TwjKe=>;O?jmw5!S>hDwCjO zx+Gb~#^w>C7}o#}HZ0VoBP1pA-`4KiABx{pUW(UlvIXQio~2^<9sl#+!%%Mf*s!~W zw<)6mj@6qKEI9++RA}x4HcoC3qJyu_vST5j6NL$EqxVVj_}M8zGmrzoRhnK%$wGk5 zN17LqY)CXwT3twQMQk*W0`@FcCkjgw163BbNuI-RI>2RT`tPE1HivZtJiFFu0_OBf zg2vD=-Sc>LP6&t>TDGPspbQIO=L)noQ@8C3<5t)Fm1pbxz2tR|q$)x!Xr>?4U^Mo& zGg;+!hErG~m_!~r*nlOQLSu{$3qhu<8vN-^^QOZ^=abEXgXn0!fvOgMDlR!XL}y_&0^Jg0?@MhF~RLroE1VA3+Jvr z(%KWpKdWi-eQ8uj)xP-UeYL~r+;nTRL9gr060Z@!eT(bQ1s0w;v+UYH)A01Jn^N@s z5*S;v00n}ia6~8WzUTPTo`qAp+0mn$B7`0rnG#U^csx;9`3Al9s=XPBj;zXqp8d!1 zyb0%lBg%*U0;8#t5|UYZOZi?%AFvlRE4IQ4Qos}&7)>$ND1z;C!Bt*6q9c(PQY%iL z{>|AMosi$~lWH4cLcYAiC3TZrcgI}y#y1LaM zS!4Z`pq$;f-=;tP-_KLT^`U$HI(8dV@wMs>wNtqUpIlyaXP-z2otZ#XSKsDFNa25| zd+$0f+ZlkDYv_bib5z#;ZL||GX@50@8vre^kdhpGkTy0)drz5L93-!`PuQ0$?CSvA z_Vq{82Q6zeQJm1|rQ!RvQ@*S~j(V0K=pmDerA$;HG(gXx;-qZZ5;Muz^|ff$PN!;6 z^pitzePNMpg8RZ-q#r2Ga7cg600buUQ7oW>H*C#KIWNS?WfEdz(G2%~N`FcxIc;L` z&bgn>6-VEd1UjO8f`fH})bhZcWi54X6B$CEi9>h6cP-PGSuty+XSC;jIw^Q!V?pP; z_m+k`mtHT$cy`s>ENp$RFpHyB4`7eQBPX;vS0Y-=#6g%O5=N}YsVlqJYu8Ml1yBu? zXoDO@9gms|U79>BA6;7iDD?k(mIw}4(4ZZOm#Zxd`08dAO%VTHkV%G8PFFZ>^&c`1O92u4HNk96LNWM)L|bU62W*GWs* zoQv`{7zV_wi%jFeSueBxKbV`UKPD)!F!T_pt$Uh58Q_W!Y-jmhhGOG`iBF6Wv7%y|Q^h!=XcmPCUPDX=_`sNtu)srAI6v@1HvK z{db3+t%J%j?(9o~}WDB#fY5l~}%quPp z54zTkUX`7XX2nd2=14alAZuTfd;$fjn!7b16mmy56WWwF!XI{ zIXP#AqLM(HuxQ-9Y_II~h&I@0&&o>Vt44zJnCEsVWMibqbM@I2s@)TlMm1waF)3yr61?s zYlzZivAMytNc-e~@p|VyJ*ynlSl$KzMo7+-5?_;B|Ds8r%fh?Y;IZFzyJdOtld|`Q zCy@OzUMlxt|K;tlaRqBsso0e^Ep-!Oi|xDS*n#B)H|tTCDem zK6s&A2+KNjQYMFXD48X&g-;5eB*zK+!!RTOaj@r;H7dEW z?M;J`C>B%UvQ^@lHng}`*ZP)NMJgm9SDyHL-ox&!s%mL{u-=LJWbWODh6eSv$$k8y zfV|fEKY=kB%({yOb4r00^NVw+U4M zHys;4dP@F!DI8MLog|Fq>=PLnzAPg%euG~`Mn7ulvAU(DWidzspem!;)9&cKY%S+q zTX%aM7n?dlcEK|^XxEbMY|2h-B{afwpiEpH)i>INC&!NAoO5;5_njA)KPJff2d|8o zavkaIS5adP|4<7{dq48MH3bZgIJk2V*<@vFGc~;{5vxDh$_Rq2%#4?ZM8ZS~K<%a? zkWa247+WgI@gLzmj-SupUas)SFV-uvMWg6K3WJS~uOH#>*G+BUD-aX!?iK>ORPRd` zvTI#3f0px6N=kMD!cH9faO0_K!?bwu{zr7QvT12+z zK)k>yPSwrQ)~7LhtjKH)rj5Rt+pT9-)eeAix}W`GPHBh)=IuR@S9m?PRjij<1YivdnJfYY)E_S>X;GJ5wGn3aKAtk}%xs z(8yg=$8{Byf#G&7IHi6{()cqW$G5HuWf(!o+w$^6wFjdkLCp>#gt{_w^xLcLQ6=JD zj74L+nq9+Ng?CS$5cK-|s-V`c%6sfrKgxDzeDW}$xyt(b4xJPf^a8z<`Ua1Z%PXqW zz0Q$)vB^bHsXWNhOGY9vb!!Vt{)oOU{@2<49aZMobMFf zczU3ez8wbZ{g+eD+6&p1ot*5LftslK#4M2m)Qe)VFU7q${Pc>Nni@;p*4O8CC4c%6 zl=P9OJUHcmOsiDVMUkdXj@1Jw_6i)}iEPsnZk@HOw)0hIb4a~zYbi#g21jL4W6?f! zdyn~X?PyxFN4Awr0DfOMh@sb;#tMTpMG@dO7aemRQ1_0UD>3WC$PI5-qi(3Gs@gSf z90u~d{AjMSl~INblU2t2ZMm|gHw!en z9^Cb-ocXeNWT_MsPF5&u(@}f0 zJgr|`zwowZ)oATwDxq#|USetEYJ2(b=L$+WTbcRL#!ye%<9PV!hsQc666-k{h8M?N zyf7ezkj?2k%*%w19970wyCmh62M_JF7>$i@SGVgudv>8Ec$!XRAgOwdr5NjI5US3_ zi~W(_2}9|aYH;4C%h{LQ>G-PDBO0}I|BN=|$+_3=yc=#GYR1m#sSulmAVJqhP~(Qa zzD)=Y&)EbK`1l3j8)1rjMAAm7HUaS|tb;Db*}irW?rY!pn4-p%F1>W35Bsnu z?@fj?q-L<08iqQit|4+JnwF(4ou=S+3fICG0jGo&$)(GH*zo4#ncO@=hGPxRah-K& z18hOh4jLt^Eeux+@RgXA4Y2zkG=Q2!5m$S(zhh4H3BOXG)jVyq?epK&GL<18e`}e~ z5O8&ZqJDW^G%GBcY!9*wPr+TlK%?rkSb<66fMR&v!X{_~I?Q4}|FO|^qI07i7%mbr z5srA>Pn`UA3+_Gbh%9e($Ei@p&{6ra=x?lJoe$&B2E7yaqCsa3;;&VqgeL3lRsft2 zQqj!v6HKu5H@$9R&BouQqe)>P34xs_T644kWHka7KBK(S2nvarAFa3+v-6|o?pH@U zWLN_rN)Nq=^O%ILa!}dK<*_U}J$Eabs_cGqG1%SOjyAPFe73vX=KKp|NimNrOVP|0KFK%L?d_nFYoMVf)tl(uG8s~ zThAjv>EKb;gWj7bGpG_{Mo?GO%)Yk0Egu$(Icp|=YV=``7=nzbKlT+UXkn6uotfJ1 z!de*q-7=ux$TJAIoPGh0_IJQqEL`l>)A33;OTx;@vv-O6f!Mt{5iOn9syzqcp9NH~C1Hi@t=1jWTggP}9| zj{yJexRn_m(k}p<`Br!L?O5)jaCl4D=ixaXg9b{u)4Y8uh#^eZnlI|RD!_5D7K<}L z>P&NOM<;6SSt($i-H<5PQ;Q~aWPRvMUwLcOUFJSpzc4==__0VHr3u-q5GyN*N;qrZ z(}4>=b)!uggWZzlZiR<3kKt&0gQlB9m05jqXQvk0 zgB;{yV3jBfpBJ^d4aL5{-+68B(f&=c#9_OMy*%LI@cvj3%_4e4n{|OCnPfPF|F1>V zKlOSamrHx(6hV`8gb=x7H9aB-<=GfVzzbC+sV%(HA%>wqd0*G`ox9DOqzP$IUPxV4}0^?(FF@;6;Q}&!IWw?b$0O$eo5Y2u4=<)aW3oY*48NSFD z(W@+LdH;TaRh3-<&cE$;S?WSylv~4en%<`{wWuj_h?Jc6-dRAo1UJv1#3mJu>hdtc zE~W4rpdi7_et#YR*@#RjX>3JFqm{oYnD_g&<9LIYd9jkEUpnr1YS%QY&8y}MIHbK} zKzRL3U3OJrMX<~e-cH~@I&p9I25>A%_fOT@j6$cNOro{)Pe+z(bZOX^WQ=>u&yj7A zy@e#U;)4ZG$B4NuR;So>lFC58+$aVDDFqzW#2x2SRc@@IIXb8W=+3(mJX=C@cbINr zZ;vZXJ{sHK^pM@JXngJ3v(4@S>(m@=JrfU#|6NtsgOL&|eAkiAS7TX)pjnSt%SNqF z=*&Zjr7GpwJHd>`S3_SOvZa+zjK&@H0lCy)h>J&8YFm=EylX+ZOgf~-1|)jToXgpO)1I z&vymCiA)BmoCRqQkt7Mi7z5dwQE3(JUNN{hoFuoo)jhws=ywc>Js*!S~7i+Fm_%k1JnwrcDz-ZLklXQDh8F164nUx77Qf&g?Z3)@yqr@Mr`h_l1}u&%`Zvff4FN9|J&ggQIHec`0%|uYY~-$VPp00ntTULutPbF#&l@2 z1@l>_-LusET}t7Lo^yTDXQkp@?C+Ibc*mII4+hN9!e;2%dLL7%w9yKLR_S%x8>2+n zMmI%{M-h9~xZm_vzkOyK$RQyG8vA=d`|D#P%)Nbiikn9qBYM-+s4o$c$_PEs$PsJR zBP3V?CxK|ByX4=k?URTr0GIzHW7!qg0QkFmMEXx!x$igg_X5^RU-TIN5R{lXcwOspZy)0+ZQjOMhd}GT#!2P?%rw5Ksf(_9Y*7gABp-Zp(Qv$01)8gMIG#7|H z(3hQq42|Ak2e)jHFkAHE>w&nvA?dT_HZp{fTG@u({tGM&np<;i7fIE;SBFyA2T3U2 z^a;K$+Yw|NkB+6+9M{GEv1QTi_29&e)IoL>CSy&qGh};}a;Ew(v6l*V$D}Sqw05JsNN5LIE zm+mA>@zF}#I`=+`9Jw}I^LB`9wEfG{e>mR((M*p;+CD`o-2LPD*Ohuq^fM zNUU=1x2=UsqNepzge+Nyxj>ta;YYkOhM<;RgX#I&%qnF3O>&^Un_HJ?QjkfnJHyS} zhy29a(eZL=|EyUAN*cAy1SJokG7kiBpke*S%2nvZbVJ3)Q!#uQFFci&Ll=QfLIZ0M zDC^qf9cPJB>0z2`l~VkfGo$;O()}M_e$q_Fu#cXkEMO#;-d86@v^Hn2Eki>lRfWJv z7w`2eJ>H8xSH=A(oNd-XhHLl^uG08o3MlE%z*16XXCc&RZ#H9Maw3G>y!`{X0HAos z)V5Bm?`8?kOm`q2bgD6*-tya`8yF9!4`3nC>z0-|;XZr$YMb?AAQyA(!S8Azk*mMy zdhYHc$DWTXMT$fW|DKp5e-~6Xm;=8OQ)pP-wx?NVt0tO!p<_Su;wM+HDE)S51bV7vVygP@l^oUC9M?nd`RZb0Nkw56T)v3FMHv#m5 zy%x2>Q6ttP+-^6~RN8-8df74^^0lm~$v1g2I;J_BvmUI*SUC(5K%pB8ECAm+;uP`1i5M%96#c{ht8CsbtT_R^eHh*eb_jG45(hSn~6pLcn{kvlwZ| zFHQHqK?GCVg18dUjm!TCVs>ThM^p_ptxVBw=~)t z_l@Nx-trr<#AJ-+6@L8o8dl`0P~9Ep-Nq%L%Bu;L_vDNAdXljy`oPdx^g|c5S5yWY z+|V?=dhY2Q)U~s=4K;5kw$ia)IML)vb8u^_%9fVy?Z*!2XbSS>YA`d6GVNd&#jX}puk`ri8r=u8 zWe@ZDLowgkYdgQ4%cuWWX~`R(l@`mNhY!cr-h(VsKE8cS6*ae0vJo{^+d;Y;N4iJ* z`vVXXwXm#CZ+(4`s}I8+w*Wxmv>Q1HW$7>)ik}!pS4ug{>Yve!%GJnsjIRlEJymjK ztc)zDEuqh=ziW2z7r8>#(+5U&*WTY0o5Za`Ao^oO1_lG_W)+PcIaFy-lRxd~+`ew8 zKl*;I(6tUXI@l7ngYmBGcMoqA4)ggrp|~?%DH?m=Z1g7+QEU>}tMqX$Bm=cYLy9|w ztSKvqn5wIVN9P?hcERSMTb7yLp^jrxaBb)2$o&c(ZEvg2L+vZ=QEKMlH*WO&HVhlx z2Pzz*GV;xXgHu|y;7R!!w(+JKH92d z11rjKj=5Mz<-J#jZqCc1wyJ6WZH%7*V@!JZh4^seBj2FxKn}b5-0KaMzK3j6&+SYw z&%w|j`9sC5f9eC3vqLdd#t&D4X9lsO>SMnfxpCC*?tY*}Z0CWg>?Rq868Vau$wPB% z&o+RWHB&tE8bcZbtdE@*+|*gdw(@9Nn!?~vVt74{nsv8MeeBDZH!PN&{^*w)HgXEO zXzM)o`E{Y11D6vWoT?`d;CsmOX`zZYp1;R)nZbwDHB5DMo)(4l$d0X`wEKWVSF$QW z%_WMcw-0i7^%H^bA8cofuiEmfw2{+4Gd83t3|IscPM;*I5+iSX!EM3^(f%t>0)ICqsByL@ ztn+8dDvO|Dkv{BpqA0H1XORG0FuzDHqDQoT6PB!mv5hu5Gy~vN0 z3g74yyplz&yvU0)zbt6qVqaeLR6wh~bH2r{t0m~R{8|8>^g=4wh*?sFi8l?A8C6Prf$iS!3fj<}+dOGhw=o{Yyc;sb#A4l1|Ig{IIz7 zb^Gw4Gb*01K#k^E{n6vlNWDpF_a&uqtZR#YUNk`&6gb#bHQ30g(RU4b6kF9~NqHiE zOJx{oY2`m|4vjW~g?xK%9@>4{qw!$5O_de6!_}QhQ6*k?&)xT4d?|E69}Epw7kIT% zP5H#FM$z-xS_=9X`48%TcjI7X(DSvghe~^-4mU})ykA~kXV`py*Y@N?+kZd0G4jLD z3-Ukyd+wJT-yJ;o+d);mdwL4JXR};~Xj$de^V_-}YGYZ^C8a(s>`j&jP(Td~qpZ5H z6h+u%=ErVDyjdQDv-A!m{d7kS@UE5pVtZ@wg~WiUU|Hx+2dcBJ9Ev{75YB?v z(gv))qNg zm!Bu0MP9w18%=MP7+kc8ii%>q^w6Tbp;Cr47?~2Ic|(Vu-E3zLuF<#W;eiiD*l3J&d(u8U>s@LHFMwTG?4YWdHca!9S=Xfx^O<1DZzI}aH#!ex0?4ZDI z{$I5USK;BD%(N(W97CBNt2hHv5&GwSC!b2PVr(ks$C%A;;`og$(Lku-r zj@W{LUNf}TP^hWABSX}LGACQt2DuW_R+R(vJ%sY2A$P0GcdAyEv53J4>0dInzuvjFLnD$1yh15jr1`+W&*=frql65sdD^Zv}SnY^XP*KUe<}+Dj zS4D(^o$;T)eEITQ@>Th!OWch$fyG)e=#4(2K^S%Bb%4Wm!+?F@5)mOrmCVozJ-5Wt z(cayN`F5O}>RuQ5dHQBerU2w?p9ZlEqt{^9kJy{$e(p}(c3=B;flQ(Fw`~*hkepuO zb=o#WTz`~ibc}Cn^C-!jyZc(ku3lU&W(2cf4c!cF-X=t^=c&{5${fIep8nuTTaRL} zxOp-5(*5XaIQqXJW%yEOs5}Tmqo25|?TXRm~eZ{~T^v zVMQWAI46&1RPg^xii@K_G^?z9zOAdzu0bWzUsD?^v^WL3pOZC|_dnHPb~#5GEBUu7 zGvY{Yfu5Iejedjngk4tau7^`v-H;aj%|TBIpK=;P$cZ!Ru;qd=F1RzW%Vb=9@&d@* z0G&&qjCyNI?bwxpX_<(@33#&@q3nbQB(yjJ%qcjxSc9Z1*Pj=TkG!L| z76IB^XvlHP;QFwbwZrh<_S@3?b$e+70+^g1-HshQwg{8pUgr?U;A(TCCZ9fhxC3E_ zLju07H#l>nw6>coN;l5hBmD}U>{h}i{ccjiyv7lT2sVQA{}m#7|Jp zDVwCp{UOC$^h?VHIs^+RCgB45M^BQB`u!ekNm_fK&PFOixtwj+ZCYOQ?k(*c=3&9b z%DSQacT)fifyoW(r-duTwp6;zRM}gJ#Pl3=mW0E`LdTZ zTc}nK(DvO4;Ee`afbI?XFme#wr!qG0FZp2eU%S_3VW2eUb!$4S?!=3F;0qoZd}0^`JdPHGni>CeIJYd#X*jlNU4h#2N!W}o#jZDOSvxi?;G2YY&| zPF{hkTb2;}#Rg#D` z{0D?cv+X;G=9L~f%;(SfKzg~^1(ETPvsCPu`YYfPI++C?yPlJkwi!Uq(*BS$95O(= zBv|wvupATU)r7JM@2R$E55hJfyeJ@$d3PJv;Nzj>*CN-SfiQy2JY-k(#L`kMrP3~H zlHy2sEh6dN=8=WI?cH0j1=S2qZN}nYe`_Qoh`YBBzYIh*20N? z$tAQG$k^0xy@{o;w_L$*%d9GzS09=VOkW)u{P-+^@%1S#XnULf`LePj{B~jfEkjIh z#5~8MdFSonI?s`}G0c9fE4{rl{zGOna0oEGI-V&zcv`=$M^*oelRoQ2DAzYm zDEHx~So^`-jlL|CK4Q?26BH5`C%BNL?mv`76(|8Ro<)Jb;_gX6^TnBivk`u`w?%iG z@Xap4TPsn&#>Vd1LWiE&wuama^PkOU)6nWUG?aRtiFzj^-Q(WUYJWP7+kWy;S8n7a z(-uWrSpmv|oZYHgnO?hRRoyJ#dmiahStExNYYqPvR61r-H>IZ_+AVYT4l1zsv}D>v zxwV$?5D(GmFjJUo*Ye@y=;w2JI65XDFHi!#cVqFgP2>Q(0axYQ%uPCRsJG=R)?*EJ zvY9c2tM#Llr1nk7IMvFc!u$u9K5rd4c6n&H)$KUje>%c`n(A&<9l7!;6cw)d%28d( zgY$8MOc8^h`r>`9j@gbgE8BAKt*sMSp8K7SVAGl}=t~rvxt$BddM6g+MFm7oCJ<%p zf^JJq5Om=Ry*nWJ-9VpwDFz7JnVGRE+2l*cm8jh6yA^Wh->=h_)ZC(04FCJPVv3Rqk^vCcq5xXCsz z^pZo=B60S!nE?*r_!}LYI$jOk3N6vWkR`G5UV+Gi2M4z^g$iC)WxVQ%S$$0Rm?hwW!IpWd zlOW-T{oL;B%giM6drF#4>~O8V>1 zNed}WAW9ldIC6cR*L+pk#DQ8M2D+fBIDcb|Tq5gp5y=iF z;}kae8y&qjTepWe+F6{R(sbE8V6J=(Vj`{>eQpxr3>RCL*!Rk|!bZkz1Qr?@NZGD)W5hBC zO0_h+*spJjHRL}ADtu8r+_&%OY|}-a8PdlY61@dwwdPafxv+(0Ow74WmR`E7wgj>7 z?qrPX?K5YbvH@JsL^TqlXWP!tvS}j6aR$XfeQE6{f)@CO4m+)WOYKjK*)0^)E3i?o z4zz2Sgy*z}#_}M1+2)2==&V_D_ASFnVu9cGBA7>Hpdf0oEM}8A$LwDRzCBYsa;d;? zsyVplw@yc(ZpE)$G5P$ADq*yimwmIDp)2Y)rHV;Vx9@NxKFJQJ6JjQdN zi2fWO*7IdPOw?qHYZpjlOI%^Zdawf|7k+fPK#1NN1ugH>{N5CIjxyAG!u-; z69_ns-eU+=8WlvmBi){x>sitS2;?a5KYdt!e#a3xn}`4Y@OAF8W1|cvVlmm3P8i{N z^T7{aU${&M+zY(hzKut%#|N+mccEx@dZm51JA@QI`zjf-Ar{;}s4No7y*gx*k-oZ)ZRC1f+2#==2Wv!f(HOaCQa$irn#n64fSj&jYjs+S=-hu|kb{p(zmT=| zy|)#0CioW-mVzWottwR0qhiIY+|Q?Zn*wX{v?N-@pma>XPz&Z>mv2>nqGQ2~k!+XEmx)xv8XJR# z>F`fD`QXq|&lN+|wXgxieRD#`3B0q!+X>&7vpvNIQfc`v$C{JCuPdhXnn!~jI?&>_ z^$`!9wp*MrPkuPO-j0UoYH^tuH_r(275ePEWOv*ooybEcSkCtB;QGn=6gDWuD2Ulc zg%h2%_IiCIBbbZgWI7#l*lFi&Zs?+|ZHsRVY(7Z@$FQbH`Ecf?oii01)@sR8)z8eKeZ z`5`bQ8oMgmamNn#-V$=mmC%@bI}?r3Y!08-Z05GJN5^nE*DA0J50jxcc|<{MzcK@C zC(vLBiAJ98zgeSlAw{u2ZTf8HE87T_@sQn)5=qLv7c|82yHeKXYD0X^FkoQIERrtI zge+!xfEzo6p=qMTAR5|Q`}aR(valRYc+;|uZOiV=yjpm}WX7`u%x5YR4|8S~XOL_$ z5dVDcM|dCTvKzz;@s$IbAZC1l_X6cJoLJ+)*!$vJE^t|L)^t%>)NF9loN2jsPPQVr_@=gt=ZxPelpw|_Hb;8E=<7y7aA(O~+QwL2Wn zerTSD2BWsp7Nz7fS)ErO3jhNX3uTtZtnRliF^xz&?cNK!zxE1x z9d+*MQ$rIK2b5=Ti!U_LMJsyKlDRTrU0jOLreNBCP1HTwHq9Bs!Q&|sgXhwIwt$tm>~3H!#G4150;S+Fa)Y=T7^U%28PZ|~oJg&v8;jbUfu zgWCZEROD=`pMbA{DgDlYIKjNthZPO&GLAJ`h3D04J+O@{!Xkr%%8ohD60jwu;ht~( zLtMj^W5=utCjww_0P3{4X$Kk zzE`&NQA2ok26r4&WFaL|U*&`#VWHH9_!+vSX|tkS?38J-U99WPZvwj?1TN}pZH+(& zKw1>SFd?cdr7bS*Ue&U4uP^(FbOCg3BV$Y*Ym-5Tcb`d%qD? z=~t2mQ)HPPIyCl%hsIU8$lm@@e$)_4k8(3OwOv5xEjo~OMkZRITQg)S&4(AaLqn8I2qFSPq7;LOtJe#)^FpQ)`6 zK0(X`s8R-csjGP|j#3v)N-~d9SEFw2p!2pQH3j(OkuS%4v|Z&LmdQa9f1drra|PN{ zTZ*n6yGFd1pTN!M@tbY{Spo2R-q1QX2Lzl0!>z@De&MHX^DbOdQoREV_hRS>l+)#N`O(ZqF{ifl(7xly1}k?XqM6s!c{4|5uTjng%cBY&gB#B z1J3WICZ_Mv+Sw?;xy!|RAA0t&o}l#SC4sF=zw-qS3708fOo!$ei*o;!022rNiJ@d_ z)F@6lWPmMeTdSg9`*6N{LqJBwlMUjjamsu_@2vzukBEqfLuv>3GM)Asyn%%KBmY(n z(2C2wIFiw=6B!O6O+Nq0x!}&{mQatyl{##xgREHC?ByJ~DNM$pY2g*_@UsV#m70u4 z!Gk&Fjr;gYjGY_O+r6uBet#`cVs2IPQf7ys>?wgg>U4tyh?IFWcY2Q|Z4CexQ<&nJ zM8H+~MRK`p+{>3Qji$E&#P4$v3xAj&(JQdX5^fJ2u7U3q8PBS($^T9B1csZDC# z-7w|)a+VPU%^GfZwDMvVbRE4ejNUA1-6)pBjKMiCL05Lk1R=TJbz(noC_2nMEczmv z&4#9ngTbEL8?$+o>2bk&|G)gGRnD#_5@;~>Guc!qJ#r_i=TH;4*$;Zh{?h>>6LOJn=wV?Z>(hEbT`#b0L12`zKJ2gLzTCltND_FYBp0zrZqeVW!^bz)wN$I>-zdwTq@7@h zIdfw2nJe(mrn?J_pnfDe&rd)@z9x2Xx*>9oC}#rOrLqZGLB$@UoCdqgo2-tG&wv(R zu!ayDz${+os1WxWDm>Yp@Px@fv5zm822_4cE*nqX&!CkOFk^00xY}q zCJ3kl2<)Uv$MCQrHOfpYXA_-*iKQ*`Xj~6?o0e(ILNA~~nbX&t`$C<$-s#mU;iDXF z<_yVgj};s|W~{vUm|s+{*`iOCl%H`}F2>)TF9i2dJ8e)W@8-*tKCR9pe>|kOf2Wq7H9|zvPo^sRqb8lMLCDi z)qQGtfS^_bdB*&ZP+&NEw70gID0K6=wpbm&Zk4i1cq&?Vr^d{%#z9zsbJ7s+54!6- zYOcPcS74!EW|7rYKIUJH_btL#mTHEr9*W}26$SXDY0nTn*j@Z6o+O89tP)<&L37H1 z3@Qj|u9exggxqRJ&ke<}(J2sr&*mtAAcYQ+PLa0F-p1YCXPW1? za(IB*eYSlB=mKyfX=6d^)y(CLAX0dH-pK0_FI6$H#6WM}{gT#{w2U&^0ifn`z5&<2z@obg-~0cQ6B=F}J#tJ=b)g;1n4aYlM3|gy zT4qQr@E9M4za7EYhxM@_^%dHT=i`*~AfN)|bAy+<9PbJJaOl}{Wy3?apfA80?!~En z-Nu=qvaDPJ>=N7bOUI}~e2W^;P**EyK||ZtmCE{TmolvGsJ9Y;p+#oYJjIrsk+{Xn zhTIQNUM2#ZI%$6Cgjv;Au^Cmr;7)G0{i}^Ffl@Py@kr2h-q~DE9O_E-j+L}z8?kxk zvywc~FS&iB#6eiE;!3tvtRfI{oZr3y+wUF?94rpH5KD~gac~BQtR6Q>cpkmC|1b*w z9iRMR;MetGK_%OrNBQK1Qlk%;m2Y17d6#!YLFp6VO{oRNutF<)v0W2S`|+L$uXE}n zRnH=V9_&a)RLjgkz5&rx{p+icr7Ux-?T69{PHYu(I!KE z-=nNjKn2Vw=iaOtr&@tygT+GHCXJ_g2@ce6x7w z>KCdK?;YR8AAt#EXF!gF%Lnv8YfzPTasK1KOs@QMzF&DiI(wtpUJhC|FVM1Kw)J?8_#>^g`Z`a~oT6;E&*8y|&i?bpw3y!K(@g>{Kn9_w@&_KQ4xk zPqf&kx_Cx?{I7*1{dY`oiYMn}VcK8egD&qr*=`->yXU`*uA9uIrym5_S%DCM1fP8E;TqhkEQENc?4 z%pwjGzd$%X)%XKKrwZ?9xKbcS>4ZD%P!=uz9xunQYuX7Hi+M9@ZUc+?!ab%D``X-?fVfX&BdD~zL%x4R;c zb*0Aty)$QM@o+ZGu(7B*f+J+kS}qYs@|XVfJnKqr(JLIiStE0D^F+YoWElftq+E~lh~e{XM(D_-UW zLeIeE?)+<-8P`uG{P=V1A16VRxhjT~ja9spywhB3L+4?+Iz&bamw9^5A8fNs! zSK&wK7$IrtlyBd@@tD?2Gl)5MfJ7|4bM9EeRlvI08a#;KM8I_u^7#>Ib8}{Qty|sH z)D&X`o~D@NJ|tpCx||$lBET2aB)}5RJ0CyfZN|H&AU`7ReK_Ap8A9X2cYs{$4K1-x{wc0M1wC*^6trj)@El0~=qMT|s4nR$!q5 zI%*69s$XAE@8D+WAY z+Ag8r8{00sFtN=N817 zQ3W!U56Z_TfGm{OW@c|kiy;EX7RKwOz(E01@REopzf`B6-65x1)qn?wF`k~N%K8wq ziQCJg37~+aRpp!U@r(j{Aie(rYoY@H>u`{~trCv68bIj)fmJeQn$ z`LKA-b$Q6wS&En_bLjvIR5#CZmtqA%IuuAdOWN?gKDV-a*Nb)Ce7a6R81L`EBMRx1 z<_feAwHWM+T@}Ud0hd5Ch!p@#*EY2SpC73*S`7(oZ6i1aF5SBHsvuTbVt%2L;CKSa z!*zm@SWchluh4*1GN3B9msx`Z&n6FORP1F_S4|P}^PtL&JFl91UEEJYR8CxgK+AiG z6osTBbU;Nh7y^fF?TgYB%-8=B*(5l_&_11oZUb-=nRBbY74zubc4JbK-VBy|!b4@o zAz~o1Mi26JDiQK9YAS+3EZ3MfN1wU-MMS0H@a>(?$kV>JVyQRQ87n60OG_8VG3tbi z10>yBSHwfGb>`sm-Xl~5$o@Z9=T3LERH7c=&!xO zj;HmvahPD-mdAyYBKt}4g6`$RhBNCCsmD{??I)uUPBZq=~^p!@7n8uhi%7S z_|Oo0S#B<&ix6^25%QLyb`AH!Dk~PahZV_-!pZC(RdTXuhtg1MD)_|Qw#Pd%&0^*| zOOX;w?*ZMT+iKNnB7k>#O>}$FSLK@9|w^&O_l2d_qdKd z_?6;5p%YL;)@7N6Z9QX&71Gma2rcyiY?Wx*cC%!Ey1?N)Bti4n_K~n}2mimjM~*-O z`zAi>O!hs+I8Dg%&KNZW_(x5R%r7U!tub{a!e?$K?vL(Wc4}DVjLjSD{a}9ZT)46I z*2VS$8opnaZk{#}Bp{rJGj2d~ecj{pCh?~_Zg=b8PlK*aq4to`eTMjj2G*ht@W3Vn_to5a{*o`7Ui$&T-r z-bY$)n?e!-e%UVIb^$6F2;8X|ZfrJA2S$n=*Pp-gFyq=YVA*x5oBnDJl5pZxv!EgbWGZ_$(AQ+OSuE}n;xuj>crc_4S zk-%szpb&rerLjL>+ZX8m2*b^1+~dBV77u5knMel$@@b`)W;KtnDI(g@Rlnc)F+bOOpaspd6IWPLtK=G zzE+r@Fr&1W;FF_y)8Bs$;OBy(RZib`5QP$RtNXS{up4CBmDlpZ0l4=jW$IFb?t{<= zcvPEz9qzy_MVG$K#Q+9-gq>> z5hl`SBc~~*!Ifty{oZj?U&x%Q|BP;10izb|X6*M54KEk3!gIav5H!FMq733yb6W&+ zVv(?Rakk$-6GVh)ORwZx$M=TNIW{6fxTRP2t)oe0l6-|{hsWrAICL%J2OcHSznmM1 zUK^RI?1oQ>m-w5IqgqRVA4RzuJDxaFpo(8t#~li;hZ9`M5o-2WRI^r^H`Fr5OAlfZ z1R#&Vzzj@c7`AtzK|3TrDllLp-aqweLNRDZayI zE#LBrt*DUTOCZbzrJ@KpV==^frbX{m73-i#M6u({MLd)Ew&N{g70cvB?h=2hwGmGn z6S5k*3qFyN+Vw{tk6!z?i;xarlm7QX;Mjk{35wwE`xwYhMm6@b>OvAnb?QIo$#aicxOw`A;9Pxoly`g?y7 zWAzsKo$=nki|*`q9FpkP1uNx&u6|vT8LskGkFUvKI1Np6AG`vM;+688PII93z+4wU zliF5*43?fKyJ-O4+HkP6nYWnodmaS({(`s~UYRYJHn^OY&Nf_YZe1UM56W6v>-f97 z-Ar9w5-RJxhv{8%r!g{mxVmJz)eVhmAaBA~@us_N+7+GDTDR!d^5n=-Y^^wS-F2sf z_-@Z?R`EJ%hq>?44#QEla?AU+fnb1%8*cv&Ooa_>Apw>WPs7h5mbN?Uyheznw)Xw+ z1jVA|0`1jN{@sw6(B`p9Z@BDAI7426mdU1hcU$fL{+N4ri{I`D1D4Pgwpq&|bNzB^ zDSOT4QfE4nSWa*ZmRRbEKBzDAhA&;YlDcX(p7eD8Ir|w|(3RaiYHA40#(H*-eeSqD zqUPU(8b4k?!7v0Ks~lN0CKFZ)kjlZqWv(A~SqJ3;7Ev*wleClYrQPw{safDT@HOC= zZd~p*Mw{lQo96PN+Peca4few7iX*4Xq$i)bxy@Bud)8bM7l*u`eySxHyPPJ&y4@B> z72&m%_!XD-bI5N>EI@)~FC0G=VvPp-pF5ruUgrDEV7gjcyK=L;ojYI)D39OMlyVX{ zOciUD%YOXbwO?!5S}$}PCzF{+0)|F7(!5)ako`CFaZ7C8T`cvB*}lgUluZt{{>BnM z-sZj>>fPR5%c<_OHPfWJX|FOFSm2kc#xbg>P`>hEaeJ2+!?I!xavHU2r6m|vr+}{+ zxw*fp_kBIn*KdE*2qOEeHAPB@K?R3KN2h;jQ((b8giXP!?sD-ua8)emY>Z#Kk!gB~>ej7&?fWP8UOhWzYl)|LvQ5qtr`>xA zxzHs4s1!HX4T%Q1-W2vun_hMaDA^C}cT01b*qrf4bbFZiH+amxaJ|AF{ba?fWUUbF6 zYN1(;FAR5m?UHihp zS196L7HiL-*6gM{m6&0Hi;=iW`$@W&Sv_^K<4aaCbll)@df&4!Y7pUiGPky01b66b z!3G6Hdd|KO%#mcYBYD^iY+Qx*_Gcbt67ff!7V4e;`($Nx{Ud&~F*lO4AC3$jKsB-J z+B^wBulDxEJSi_g6&NHlfINkk>d^t-*%+!;>d0ec_j1Y{kdZFsmb~kg)L#w7QG9~quc=*`%ZlPg)j#9muMmt7( zQLD}$S~~2$Q7eDbBS2xv0rF0oL&_xuKUnmufYomjBOd{EAMg)ir$GXX#6+yOS}rr8 zOf@p%&bti$W%NY$+|36{>Mk~}kLw4Q^Oq|-$J$OOVyh;;9BfUb!(7q5T8wpk2V{n2 z;`rT@vUDow{_vR;6i<91-ow!}*wKIWN?n63{CnA}TE@MF?`~{RJ%UF`m52zfU8+Rv zbjY48IoLN?1|n{Kui8<3{^BKT%MEXT<6fDP+5)O^^3a2{%bZ`FdLRjetZMwQ2o!!mo|AI~}acF*Z{i5P`i7y19 zcD>oE1L=w7m3qHbmn1{&x3r>81DIu`imAl3IPAT%Ny#EwX2m9TvrumRz08F4qy=vx z$fT$|!SdHP8*QZ5zK+cHzM^j}?B=k+&iJshaA7(c4!RhyxBj<}FQG-YgoOw{GZfv9 z+(e#!(ImsyuCCq}s|a#a(I)dkv8%JJ{a==Pkg~fLC4>L8Jn>oUJ3}_+{=H_DU-Azi zXZMm4hlSV>k1VaNu|21b@Dbh_q)R!Lve}M*`pf?$q^9Md<-1E=L+QbtFJ<9IQwxKO zbDs;MgS6XqaEt{M+F^$-1~iP1zI!0T>v+i`7ye-?qz&pZ7q4fWZ&Y()94q+_nwmO( zk^z!pqR9re+oY-}c5x)utsI@ZtH=j4fBJQYm(k;kAtFjS;(e5WYb_7g)rMv-ZFHTEL3$?!z z0l&8AY~@cw3_Gp%W}ksW`W0NSnkRR*8`1_sxd#`#ao2Zj;IYzA?|k3w=zRhx>=u2< zYl8(q^zkF%7Dlcu`lkk8_b&$4Oj`iF{SY@38!~E6$ zC0Zb8B64Fda>>c4YK5NOp@uAV!p~$)UQRD!?wLe7&FGKx^n$f6Ne{Rib^dze8m*lD zmm`hBiZkTd`jgL7MUyEaH}JduRN1H{#&Bw5=OkeO@lJ)f&@p@F_y$o{M1|cl4?A_{ z_~v$fhpWT@ah`tFVJv>;Mdy=8K1$Y9co~m}1cub~d6!D^G2bx|DE@slZUMZ0&&R#J z>i%p=yUk08*h0P@*awrM9sfg(2QTl`fQKieAzz7$A~MgkYskYF)H&3W+3I}y&OAq( zYu>F#Oa6G6$majvJ2_zElaMPJ;W4eO?lSu$v}-Wsuj!ptF5FxyDS7JelLLd_^mMdB z+uX`U>M9-{?0HSU9ZY^?81r7WiRqoV`OaaekX~tEx-7B@8G6$%DHNay9*VIkLzuDB) zx;msker4PI66Jo=6zqPcLZfPrF)mD$+*XlXM9t-B78#lLhTy&1kDBPV;M++q`T=Qz{Iy+fcQk$cvi%ilt-<duq~u45=fG97to%CV50WKNbZcBK{0v43xk9I?3cHmTg{@0&l%k!t;bxH`8m+d z(Piq{EpN9tOaBuQu(lp8?D^zDWDhP_9j(G>9bBU-CjC>tWRK<+U;l}}Y5U%2aR7a< z9Cf2KVQ^q@PL3rYb4JdjQaxP<$0Dt2-JP6uCFem|Qs=8rPk<`UCRKX)tnNjE1PYEA zefJ-=!;=18*HNF_-#jKRaL;de%vOrbuW$9zlBtn1+1T~bLjKr(3B$e7O}X6ROF5FB zAB;QEoLX`1Tu9Drk`&Qn#;wGr2_nLH+aszg!S|osiTZS^6 zt{zS*EuSQ$(X&T`sU4|yT8{7`+X1c1R)DR}>4wC!6{FEiAUZjJ>ZSYIq&msBj^peX z0#K9braoz9TCgN71GFUrW__rIZEij|kL6(pMhBTy|tq_}&g+d4wxoaxv!Hiaa&eu_ra6fgoBnEe_3|&s^PH> zU4MA;vp4@NNa0Lpa`HfZDFeQErSft%XaP-dfb;%bl9e#D!5T;|2je>cJRK zKr?hnKHy;KEuVb+*h=BX#jOEf7Nr;NT1*?C>S5H;1vpD9^X_FA3EP6Yh-hF$3D*eG z4=S?j1*>uPIp`U477mY1x`sZsu>zTs;^^Q?kDmq{jJ5k3H}LDR)I8Kb05K_lZ<WK2YYBy?hjoaH;v^R5BcWm`V?$)K;& zYsA8TvR-lB796LFq(ldQU1kd)8UK-+LdV~`@3E)KTE{KWg@S6bHr^Oe;r778QB3f9 zanu42;E`xHnR34eC3iIA*(3Fq9mX=vtr@fB5sv&GL0f9+zW>}>bDMr=ctP$vi?MFz za!Td>sC5#V8R{;<-Q5Xww##k9w!=Hm8fCzX_O8OG~S%j)5f z+aJ~ax1j0Y8kP{t2>j)ELawPXq8@bT)>)eQmf*B6ibje7{iKK0GqGa9mCv*J>9zfh zYF-HnX;+Ne{N#fXx}z2N#K_Uha%73E>zsdKY-M z<*)l28s&j}IhEu+d6VT=S(j1LVv5`-6lrB}F)I5+G`C3cdkszN%Y%J0%u)0YYOz>d zr2nErj^qN?`I|H}m9?8Cz}Eniw8?nZ*L%RQc;ZnB*UN1~X@^&Aws7-k6Ih*ERR4I- zT9pbQ4Bq&Z_*1VPY;Agb&m>Q8Y*(1M=2+>)wAzWz?>5b#24?#9ocNe}_nf)B-(b?U(5#l0QpHBtYH z93{Z-hT@i)r-g)K=G=*TdM4Q=V{2v&=@$Tt1h@=uuLggln0zC~6WP5fJgM%VsfT&# z63@t+%8-sz4C=^(7tY^{u3+7Jo^_GCmhq;h{zmD8gIsc~ur+qw*{~)nZs6#6c9~>u zia9LyWZWKjjCas8N!aq6_c0xPpJh_srYwS7J)R@Mm}FpBl*}(_G=bdu>p`#pofj}y z0uU?J6rtTbX;|eFDmzr6BM4n%SNrl!i@oh}C2=M`wFLC{tsSBGx$Li9F%0x>u;_GM_|`UcdX3r%x3ShYyQK&=XExR-z> z?cPqzULCUs*5(Uf*q9An`Yyx}luLJst&2s%L-PrlV$Z+4RCsgo>H$N9LZ#zz>}t`7 zNft1-;vNgmQ4EeIC;mP~Bh*R8bm=G>F8+a-Oh4cqasykA&TZx&WjD;Dcp6YR8%9zQ-v+a)KD>rP=W z5K5waKMI62T4JBm!O@0TK5uOb2$%@ZOM5MTu!fW=jMqi0 zrW~v(m&}*{=LpR3C5*Cy+?JUqLK;iuE`lwUt_@XU7&f$+3Om7Npg9TlDEC>IJHcnp zd*`F+{!Zn#HEcW9`@Ang~XkExd zuFp1Hc-&PfBDKDg(E%}HyQkb+Gq&F9 zB{B;a(A5W<&4n@3uEd|Mu{-I}5tNCO%qI^5GDPw>Tw4j)!(BF+UorOen+wLS=D)=L z*vg{ZKB(N?XMNzj{5IlG@p%LC&)qAW$Hg^|G)8DV1ipj_rtBV|M2aTmDpJ3WIa=BGRb<*Yv@OpzStAUwkk+RHXZ!VYBs*@33Qjv_ZF##sa8 zhH7qu#6ak~t*xv=VBYDtI}F{AwavQRgVX%Fize)#I?uH z#`(64$)6u3?01C9d_-!_?0K(E9`yK|)*H@oaZz09f(IuI8?x%VeFC=o-M}qT6$SNo zodU3Tab4mMqkvOYK#SdTGhgkRsqNpK`2q|a7&2gvWD-AKZF7YJCG6UY7=saz98`7ID&~NOC)h zKNf${)}b>(hWX#aIUtHK1Uzc8g~$BohzMWLJ*&>*qAz!wUn+SFO`ka~l9PYOmPT=g z#7Yn87$5FY0ap3P!jW&x#_zc3$3-Gs0QSQqbpr=PUHAoFB+n zpP!vM*!{5RSm2&6r~0ED{kB3LOKjM{SE(H;+-5jGuL)o0*VDA7YSHmT$*7j7ahj*!3Jr7S~pR6AhphAb$WU8Fc`$k@69CpGTeA^sWqtE#6tLi(ispRByufH< zby8tYH|KtGT_96K6wGh?8}@nP2*u%@A$_n6EZ@A{{Q3C3t&ipI6lZ|6kt8Fl2yiGB z_mnYh{97WOXZooBJMTij4{wbTH2|(kGBGTQl{&ca;SNB2V#MqGlnudnXz zer~`3--$WEH<9w~stHRn(9Hzcg8Rp!IoILEB<qPd~$Xf>{HXX_~tkwFtkbhjn7r%5*pQ1yFXYlTkM)|V2pN+vcx2Y#4AIX-^pUs_kN>6_Mn<^I}< z=ONDIG)b3;?4^=#yy2>Qj(P+AQKxtTKw~MM8p7wlcbg%o3@hVQB}~mLFj7~A9jr1T ztYJrczr=v;b2&L1)vEqRz74pa?tcpeVMe4&ugvo3({wGPt4Z$82CadlWwd~sp2kX{vf39HsT!pv^!)p%nB*TsxBqcG zWKwb2AfnN6hxWjsk9ZeB95EVACZL9guUjv5eVwRHMItLaYL2oF9kKUaLw89Nq+-rI z&=YIeT^F9t&9VECt<-$84&zcj4x1RRa|VKmN!u9Ew5D+{F+lSE8H`nlx>FIXWHjCT zQT*-?e#6ST^1&-P&A{EgvOxk!0g!`H*+}G1m-KIPw%tb>mm-xP>9)w?DZsPH61Cmf z-fHrQ2L2j!=Q|WkRwlNu6y>*M{`w9aWFhhHm`aB3X)?!0BP2 z(#!bBw&9$k%UzT6s9`A}Zc2&`Fu0%TY|X)3=b1v6y~E&T0AD_z2RGVjFunKYVI%~R z%bhdfP?Ige7((Oq;o<#GdFoI^NwHPnNOszX?;VaXr5Xl1Gi-Ys%Fci0DXtQY(A#WW z(2l22I6l?2cHd?1U{*{I7PZweFE~WjB^n?Vb z0);G(UFF;r>m?juYik~t^NH^YbSCRxPi~IdTJf1X6>$)ojmrIT-!rR;U5A4A2Kj}B zdz=AKsjGf*(j&tn@90|<=qfb;GLJ~^0%X#CYf9-QYibrVMntsr!YS%a)nQikYi|M0 zp?BcBeIiN{$K*(m_q-7)2cV>|`#5m8^Yg>_&fe`fA&s9IWUtTl+9D#{e64J@tqadd zZ76lB%6+pJS&#PC(+_$~>wjJWQW(ICQdmS5w-jrmyFchee=>!vO@h1 zF{hM(@2@u|j7Sct1YsuKLZz~D1xr;Z%4yNqQ&TQ=6u>cf#s;rQoHtOFQQ0baTJd~_ z0$;1PYdkJ6Mo=W)_h-_)OIe`g9PCK+VpHd6gVz4cd&*1BXZAXX>g$ANg)1- zty&z9!i*fNxs-gY@A;7C{=rgsP228M)A>61=)moF!oK(&|HLngLuAQY0oRNel1ZCl z;{#`CrO}}9sTM|dy9nip;6n^M02j6PQxz|PnD8!Gt>(h2CroZ=r$!Djnv_K9ZL9R( z_uh{l0IH6F`~!tDrJzuux7vMSq9Y(%@Q%gk#(lBU!blif!CLSlQ!%SlfPU2e^0e5% z676S!#Pym&{+`z0j)hAI?yk1}0UTei9QuHTH$|`%e;a$xe~rTfQRQ1=H1jcsLA2eT zKIH6Z8!Et%_ssJebhYt>jBf}qm`Lx>00i^zJeB?#b#Wz4>n|W@>*^isy<;b?%whM} zqk-Xevv8QF$$}_!mOet^!sPkxG|zkr6l%NyBP`MIardO+jb-!iCIf5k%=WX??vR5z zkZ@TDsTLWS)hr;4>^;6mYS)85+5e&#wLjCOz78S_Y#xX!(zb(P*ICT-v5^7$AeQ2; z;gX?gU-fCPdgh<$af9kLmlR-c@u#{MofbrRq_zR9k3#m)6WajbI>tP+t*(3XBRXAT z=am0^ShTOZkT5g}7+j-rZf^h-@~~ttcoG=TeWqK>#XBu*+HPhp`o+&r!0sjx|8*LmJMO)wow&Nj65>4#?p8uYUj7WTo65LC=mdP&%QI!&aaVM?snW!N6YPr z{kvfS;kTnqaA29P4FF$GALsgRJ6Z;HCYmO63w?jD6cy+&g0ix(7f ze@)xnY$<8)SNHlxaU3#Pe~{iUJQa&4K21&SU@IUj<2xheau~WLR4I$oOR^|1+8|VGk!lEhi`{rmrOxvA;IwF90; zWY%M+ymUk=9}*eiQX1CzAKot(%!mMC0)|2{cq;(nQ@JGLsW3)CLFQt0(uqJ!+3I>1 z?E5Xo%Ak=yvSP8|ksyBp)wn+D0!3^l&x^K}+wP+FK-f`q&Fq3z*`U zsKb?e0cp@;gMe?|vqGgF%|>w$0MrvYK2cGL6SZa*HJa&4XDwJ0s_?MJH|k5H<8_OA zniad^+5DGNv`E`>d#aALI-~%^1GnhP*_LM zs`~8if0{$((iImL_W>Wrb=YC&gSYi;5EZksJ1&+juQL~fUAbNML6nS&P`nym$*`W2 z8cB$fx3(Q_;q~z#VNELc7NXohsNH(z8^v7->H73PN^RkwC=N0IihG4dQpeO=Pak*; z@8RY=#i$*3OPZ{ro9q@>@+)T+0fav4H}Jt!Ot=05F!yfy62R?h3)SKCQybeG^o+(0Stb+MgGUZCL|JjI-6+8xLo5 z*d$Y;LY!#yot8v0RqP7+~#6_!d~E#KdJb>Splbzd>;ZKM6H-bd3hanr%!fs0^p+x>Uu*Z zZS#Hd$yMj~86MZ0y~F)O0MJQLz4P}TN<m@~2yL#g>UnL_lOSGkkqHp>z}&`zD_! zS(3u0O0@^Z9vyFXS|3=?uU7}pf?)7EsZXt+f}1DjtR1|TUh7ekA@{W1#sBQuQ4QH- zh|Xp)^{T3O8$8b>;_ylhgt!luYx_vCS`o_j2UBDg($K+@-gv*Fk<@`qR5Y;{hBwaT zPxA`s3Dm^rw$*3elANOkv zpZ9+nGIZCA`C3J;HEdb@WEzjEO9SX?sN9y-_uVKXq|hvl9l?L5=%%DY7Y{V`+ZYfd zi=Lw(0`;uRNI)-YeLm0h3uQOKXWVwTX9G$&SU$?Vjn|X&{U{l48A^-4tR{}d2h1Go z(8~M3#t_XXWLh?rdN-^v=-Ra<=J-^<&ng73CEH^WEJ$C1!ro7ogR8EMd>~Xp2_=C& zB72S(;@y`Eo#yt%#uq(O+Z`#Er=Xc$FNi`p5f1c${|ut^KI=ONZ`ddvYV-2)5~$OS z+%op}X#ERR>6|dhm1|h{`HlsRVYf5OW7E?Hmv^Gphk9w(XD*xSSzrV_Ed$U2o}`=* zTn&HalCJ-BTCk6YnDqOi`0I6kUvnd0pqdE8#yghL$ra9lt9sHcP9Go&>UGxk>O2<51q6-* z@S<{Q@Ep?#sb1-)frHw3_R1izyP!B+b!22nmnng zZ;k1>tXrfjaK7iJV%PGee!vJmR@+K@d*Pm&sG77>A@> z3-+YU?uKAp9eP1{c^+b6FmooJ$TKCRwtPmNr0jqE7+Cs}CXh9ZCJ++1 zVzn9JN9!QC1S_t65>bU~&6w1kg#XYa* zThtHde6VB9fr$z1NMX|4Q%hETnRrFXQxc#J1@)D6dYd@^H`A^K*H~4pnlx0E3k{_t zH){Ln?@-;5gdA;rm~rgd;V`nEgWhk5xl_(pOe)3V^Hv>Uoo%qLbALhN4r2u+_z`-2 z#XzB1TK1L4i(lC9P;rtL3{pfk9UFxL*e)j0Aym_eq!Av7V zLti)aLC|AP=16YF5Kg+#Rtv$_C#4Ui_@miEn{SjqUKo=DRhO@aHfIiX*`DZ%xd@J1 zbe+u@KxxN=RCC5bkE1%RqFXI)T%(*1GHWC@7#FNwGd6d zF!`L~Gn(-no@L%4>H25gxBkUyfyWf2nd5PjZ*cR`4O#M_stv@6=O36^ z-DxerfI+F3sHqh%%kp6hdUi_-3r=1U9Zt7mwng)0V;TbQr2w()Wh~Kj!=dbCi^cXf)C_sP+a@Y zHO>-z79vuQiHYe|^OIIS_}D82bK+0(z_-o9=0#m4rB}vkd1dA07L|sUqRG*)8{o;n zV<0CG_v3L;!q02Ljgo6k_$U1p?|>>o-80}z%S|~{Qwyf#k#mcmUvI_B zm_3?n_$Fm6Ly>=sWvKf_)8lF*qk-|IHxtWx!dF!hP^uR;!l3jOq7viVKh&Sy(LtS) zlfyMIedE+2dEfsd+1C&);As!{t%2{3Z$R-P&WlRm@gnq6=$SL&cD63uH=8q3QW$fv z#%20j-ZbFljX%FJ{L)U858`w*!2?Sx`2__A0S$7)(`I6zJ`pozP6BeW#baUMQ5{L|z9JN*O}gB8X!Z8+xW;qK0PHJrVMjrvVDJ|lvrfjB>}qoMJ(BMhutl|?+| zaJ?DhAwB+jt$><)_zr2?@AyGWHJ~LMVKkEzv43PFH)Vk*Coiw>9Od9=hknwJ ziODYC={0U%hlfrXAwjPImI5sKDtXVf+9)fB`XK zRBE$5xpjs^ADLUvH^iK*q4GQU zhi|6*V5Ml<>S_ZL=?qwoRz40}Mw%LX(PSRFLh2^AXcZu`=|Ud>k!=-f(DU#zjYTqEnX}e7JK5usJ9+ z{qo**Z)xVlL&Z}%w6z?yxnh{^*kBEdY`@Wyu(U%yT|7LLneGSA_`wpzANmp<0w(3R z%KtSTNZ$G?5)zuJ?|Jd%lUdXM+$u`%Ya ztA^=_F#8{1x3OQ>p{_al(Hb|w%L9Av{g0f@j=v`qqtFFcJdc#`(+6Eo9=KK0gpP^n zS_%*?)Bzewn@7h@nwyQe9CGv}DhzB>$ojCe|O-EAv zgR}9boI%#6tRu5?4Jp}(w3uF(!#g^<9uB9`vBLVt+@dg(z{np&N1X-KN>Gr3h^WZo z^!F}(jrM0BO`+JnRZvBIM%@Xe4I5*JW-$ocoTF~4` zdQ9&+wCIXWQBqgddez5OXnC*?1@=mgIAc^(2I$Ajdyh{%zYCVS5`*Dpgzo2mjT_8g z!Xl%k>p#EUT%o#wCBGRM>G|3R!!Q=sF2tNGqKMNwf(sK9gOqn4UJ6jQ^F37#I;&oF zt$daxL-wLTxwL)${JMQQ#!`-U@60Ew@;0k-u)dY$Qoy_fYQ7R{bSV^fDYRLkk~v)t zoqk|jS2eH|RO=Khmx)Uo&TpY>2ymIa!4zQg;gmK-!(B6=8FTu5v<7@^`n0?WHyS{k zI0^)Ypaos1fyA(c5(r_wqF68~3sEf>lRMdyJ9EJpFHOx978k=77Z*VXfw9V3AHc(2 zx2{%h;*WWp9g)%(A>oenOLq>QRn;SVBW2?O!3VS8O4Lln^du}Mj{ zqFZCYOHP2&wJ9m~(^D4hGiwDo&AgHLLT7R5C-6Zr-1_815p$e*@#xfG4qm3D2I>7Q z!c<$52X`oOeFmyg?DSxw*Nv*48+Jl`;Z4si~(gC?cW* zcn4T=s;ZrK4sehu;p!kdFfHPJfIIHzivz6v@Ho1#emgT@`+#olyHM_Dfm29|%$)pF z($;+?ZEIKh`@J}je2%njYwL(<`u6%UeJh`BgBg7gb(6-UM;T>hg43j({x3uMU?4nq z8)wFCda1aLf--v3P@Y~M+j^!NJXi74Gt9yZIEpY9@cEP6-%v*4pmSOg$VAIKz)@RNxeC2HC@?fi>tch92 zX#6AXrrS>rvk>h}ZjyB>>wG#Q_Cyj@DEtH3Pw9%Wh<9rQaLg6D&{v_aViMmJ#KqBx zU@EAIQgHDbGOOz}yr$F4FO_nsf?`L)&l+f z?BRiav!c_%O{jtbrs!{SfI%qa`(x^}y(mWw<2oxZuPPT8mmS%oY2o}m zAOm<$AJ57%F}+4VfDc#?GUn1vt+Du?UqTs&+490(2^{mulYtyNNg9vPyS36Ek&}U-zPlQtid|cqQ%b53=OK$U#!Qq$88F__+No2H zf6pc{nDlZlYjYGI8m01wo*Sg`y~6KlqjVo#preQzI(;y_h`2;IRalX&54eN<0;>@& zIws~~Y)njkQIR%Kzi;x_``f`8C~xyJ<>(sTe7K{R0Snp&Xe3I9Pl6+Q;8&na=%Ggz z_~v40v$j@^JaZ(+a1L973VTj&E-E`)zq-1*%&@qX?=Rn0d-_xYghM-@b@t2h(&*cV z7WRJK1Z*Aba==`}h)Hs-utE~5YPF_x{ zz*eF)@~aB8=X+D$?BFtEMqAmsMSS!-OWzvw{)RFTzRJIQ+bAYaX?&9ASDp!0U`OtHz+f3ymG9e??(%pRMv_BU)mn4>uPwGaq8*ujRIB8y28$G$687CEe9 zX&Dy&c1HfdBrknp`)TIw`bf(1o1dFFPhs3JhQn+_kT79jcmW;w;Kmz^_#4o+)-GLd z??m9ms^pgTT%uv+=59ip?wOSa>@2=)>xMomW7&AfmTR=Md#Ag;jJNtFrI)i8e)sa| z?_TnrrA8qXQ=fe>D^mup=B-;i+Ac0{>_v^r+COkAdl-^lw$lzeImsGoaai4~VceGd zh}|*bw==2)D@$o`=*+JM&6)pg@M<_JBjXXp<;nT{M6|G|;{J&f+k(lRz>I}Hsic=& z?r+^$jEo!{d%hMmexz)e>B|ftCf?#!+Ruj`+{<4}emnfvlJ|V+{T?^EsJ7#Iwx%=p z)vME%R#xnlG+}2%3p1i4`1%N#)VF<+C9j85#?F4_c5=e=HX!8+L=Ff0D+yfSZSG;Y zTFOj{3wTMJ0I!2>@Bgs%7I0B+-5V(Cu?6)gDs6z2fOLm}IF!;20@5WdHJ~Ue2q>v^ zH;gn4r6M351B|ptcMdfSbJw8X{rv9zzrP*0a_YeT|vvesP>qR!&aA zy;Sfm9k9lQdDqqlqJul@%oN`nGHycsQV)sVv36T|%YAUe<&WBtm)$sRM|wTQDcDAw zaX2ts5xKRXcakdQVbLRU4;f>>tvV5AkIKwE$6ROTzf2uahx0Yy?CB3&Oz9y#`sm_s zm!_T;3R1y!PflThV%xJirT1N2T$=wX56E3g@3VXq%SfiEt%$5axuv@DoMvfXE(5_m z)01vAWnZQH{2400KSR|8{!K|q$^KjNx|* zex~MMzeP{dJB)us!uZJV8BAt^<&amc-)YWg!SCcp^fxKg3ROQ;&m7&;p@3z`o0IUk zuROOkNg|EM6DbSWn{_-qx_VtjR8&(LazS?OUG@1nv(msWoImm+vMk@$(6Q zpK;xU0E&^4lCo*^38RVEd`$t*{LWBo!}N5mTu8xQeXh;ULRGxE2S>6GNSsgSU)B%p z8Bd9LZ58S%0Myq-KB1Qn}aLQ7e}oX?aJvm!!8T z9{+X>X+K;7wjPv4d-!$qlcl94B^dKwHh|haf9{!@cAfdd%R>!sS^IVd=$NxuM)+r~ zJiH7E6JOM{H|z-+D3S!ze*Zm5Ld)M$g^o+X|M}^2Hn?HJ)<%tmmL6B!YFc>W#A^7* zkF24Me6w?7pN)7B%$%H<_8N~DEt8$z)!;i}mX`2$pZ%OZYD4PXArnp`{29JKt=S|8}R}hjC&mZCb{_Ai*NE;GWk)DnrjqIkqHl z2Mw?I{Oq+|Y_j$0cw-|cbZP(cIdmH&*wHcIc49|Hp4BD4)inn=(D$CR-XmAuG}F0@ zf}CBE)x<0pzO8%C3j=#ax>GSc_NrJ?lPK=)!_B{6gl7tFNQMQeWFROiD%aQ7mt4)+ z5g8iHiHVftmCIC|%gDnouF|T)??!pAO0*Ku-LNpJb1NfBj$Qb}~7 zGeGeoy@qtnyOJOq8#=Wxwmi8)+XI`|jPDJ`dj$NzYFmC@pag6TufQ+T`|TSwtx2+>a>}=1H zimnNTJtQNI-u`9Cbmmyb6OF{%R~$`6tU{uqk~D)Gy5$q9>I3C_CZ+-(8dWwIwV-!= z^q=zT^yxG!H17{Q|9P_iOrVtJiu;`E(%Q!;s&nUByK1JpVkoi|KX%Hbx6iXjw;E|L zx?1_;HX3vknn_|v@js9D=@sZ8YetI1z^DrwKMx)zhUXdKeaxjy_BIB?S>?|?#pLcQ zxz-amPhN(HA00d41Apvam#tOR)G`YSnu^3=VSan@Px%mcn#sYVMn68^)pHp>CM{%> zW|F6EkmPz{JSu`@_0!6-{HM4Rna`&)r;ey8X=OfSd8}=E_wI{-|NUi>|DiO6?aAdF z^#G*XtQ4KMH5Z1*_scub58;*0ldUZzDWPTi`z1fE%pbbBz05rPIcyvbTjs>9`uJX9 z>&g?&6Tf}-tP6%m&@Q{f%wUO+gQWe1RR0?JA$@?E5QsOs$TibTjupm$8p}5yqDbqk z4Z&q&jz&doceBqawC<1D;lGBvbZTu|RYk>EI}S`zquWXIE^DR_4^fni==0pmw@tTj zWAMt?(^+NvGu;3CD9&9?XO5qPOQ1KotV|QLN_K61i7tK3TjE<$Wk`XDIDY3y5B8}1 z{v>~;J1hl_-oH8)D3>_7IUtC_&dS|cB=-3}q)KG`J9bT>8UGVw)6~czxZlHLu79^w zT}>?&B8QmOq@<+tR2KS%CvJAV+dGb)&bd<1cOz{)x0$u)Yn`YUp$OSOaa2Ni3*${Z>7Udrf@!|=ch(f^87 z!T`7#>X$F^ad2^Rs;jdzpe|Sbu)Yv0k&W^rm*-K|hs8Oyy zP7!h9N&FtN5v*Fy)js<8M}@Oq2VmG>^LQftU%lic3OjXiu|9mbw(!P<0Ob&s$E5@0 z?FU5$%FRxNAhOA}B{CTiiVT6wRJNz2HH)Y|G#F$g^fKM0!0dq{y{+zm>E8%lhY?SMI2w}sE?%|7*x~E zZm(_=6eBItV`hI#(7&)q^;C>yBS6+2971lG=Ds=MbO007*6lNFpZ2(FyYqsI!~d^? z?1}GGr*KgrFa__2Yz5(CY)5bk9o#Y-d`wmYL9%L4G{tT)6^Q&x1@@ju&u5ny9ugCO3i_TzrH9V&*> zZt$OSQmZ}6%+kBSCzf9JEt@>L=~O#uCcmEjOI~fdd)yRQC(4bD&Qs0sh#j473i)-- zc{g7xt>s0zkzW1^sasN)lKyJlOMuVN?(w%1-;HWF=g!}y{7f}(TqxH)dxLm# z_j|?_grC_zzE^U!YX+8S;WL*9|I+t*Bz;d>I>LG1@7Fr|EHY-N>mXJ*YaP{dQujy8 z>HJ^gJhAO5QENsFWrXmitNhzhVJX)T*cO%Ugp#*sX05P#$d!)@lZIO8Z$S|AzMSyr zrukDvd8eX-&wNNv{d;brV>DS=p;5aq|6AC8vvmKz%>vvc5x^m7msfh~*{vP42^IDt zHc>(Xt;@6l(%O+KmQN|*Q)d+a5>`%B8oGb^Eri!IzTeln;U{xos4b-yL*9PuWy*gg z=lEYeN(F_}gTI0tZWC=sk12p{$~!Z8__HSIQFplA0or8d6t+nkSSmpScN= z76i)b2rf`ijM>#A)swuwW*DT?=gF-DpJ?(mZ%|7jbAFADiFmNIiqQvmb-A-}a+Y|7 z9*}~0*slvv`06?5W$r7tEG)#qrzmdsI=zkz3JzA$);{gFCBO+CgzL-(1Vm=NuD6hx z7dP3Kf`mZ<>~~Jzrs@5rG;=T5^f%q`f!m}!l*s1q<(2R7h_7`U?<^Cr6AtAf9zr20 z?5M3k3BBb!q<3>*toV7S16UQoy;x-@L4_y85JIOuQ}mw`9~2P zKK$8sd=Jmiz4+^2uTqEb6DI?p(>EKvHit8jgq_)8Jbj1vlmw=))&f(ulFWpF!xdEY z^av80OIe$1ho{;*x!Sj1UO<-IkJNQ{Hakt~6I?z}5S+A_?tR+j`ef&II)Gm+xu7Y1 z)!)mzjr9A3v)+v^*A7>laBlY^PR|>XRK)qd=sgZ^)w zs9?^`fOv3chxt-mVMVvxags@I&TL9He-{9|sThJ|;3aPPJFiYD=VG(x=M}Vz%=3ql zQv~sic%ji_v5swAMUH0Gi+gh;(WPdO*SnW&(TX8XJw1YKyu5eP;~bvX2ht=L(PuWb zwqnvxN@7oPRVO|AgtIdRU@+FH>qe|+mo=`b<)KZk#$2ymhc`VQRbt)PBYiP0yE9p4 zb_`ONXzZ#niF33t3T+bjDe8_Il+hqJ+xL;w_L?nOuF9=~re<~#r#uE4L6@R7v9(j= z(<2Y)gLP;GC(T>?op*lL9_}x)aExxCbJ2`wlbAE37I#lkRtZr9gAJmMGsS|#y#%-Q19Zu=)J}-`2U(+raf2Fm|S-o{I@REc)gXh+J zIQQgGto!Vns3+s2)Z&&eK!bD{aY#~ zggXIOTKqHgWk?FEN>C?NdVCTGiHvoWzANV=hTo)#n_AQ~EW*1~S#WPdJ@(00`PL|5 zy_X;lQ+k^v+k?8h-cwfJUXSifMl-oj_FWtpTuT4<+_~=bcEc0@9MrD%G^q%(m_ync z74|v(I?n4no5{?Ut&s+8E4CdvBEC0Hs$n;lp=wf-~cxrgQLm>FJiy7Kx-WTo%9&b=k6vZO;-cpG@QiJ z5if(K%C%?I)YKG{7?N2Gm(y{H_?0COVOoj^vLhQ`WLkINmI0ySmJ#ko)#81 zKH0#_<8IlNay&}F#-DQsH{lUR#&IEFaeFS_>FfNMjy0S2j06?Z9;^w3j;?e=24*!;&MlZ*I!WtqQvWi=u)o*UmDqUG%~uq=4e{V zU;U+{qa)#1x{68~Z8GqZ1Wx)Cnkw2=m!z%6Gb+S+78w~O;l2iN&CO<4`g z5S+T+6gn+#*L1p$EV$W%gM4(6n4R`OGOuo3nTDz3Rtr zvIHwD*7FmRYg47g_zjvV&o;>shx@DS|ac zn93)*OjkO_d)}ofbaWb^bG7Kn;+K_|@8~ll0L(*hR1jKyLYOy8pG}R_x3X^`tLq)c}b}J>F~YPGX*2{IL7_$m#DB{vAou0l0ddCG*CR37D2{ZW)HulWp&eyDk>eRS$a!8*a!mF*DC{xe^ruYWCDkOeU!L9iFbuKQASWUXOj!)vjtV zvZdP+;{_#jRzS;YX;rOnom*R9Ww*N@(xk(xu(24MDoI#T_o{r9c)_#ap|EiDgx#`S zNN?^yLQG8SEUYzCdPxOhEWU-lfq{SJ7yuz`T&Rw(?H8P<`|E=lI1r$xf8HR9PDPsW zM-ugSN7#3s-WtQvN+5F-B?*s*a8m=Snwm}z3!-*6(j>o6IL!DrbM=y>ymW*UlUvFk z!CIwnw}wR3YzL7B7nDJ-P3Z_z%}7l{IqBOW{V^PCXsf&q(%6z3-)9yOX7EW)MnUYh zS?o41Ih}~+>Af|H*p)S558W|xtU)TQSrrqLRC>2{1jmj;eoFo73}qzo9wuF(lk{tk zC6Av8V$8o4pp?d=e9iNxsEDc9cZ|`2s|=q6JC!KPuf8QdFVk7U~ZBvNO1U0 zhA z>aK8Af7KovZ;;T;S(E2R)zQ@jm2TQ<*a-N(6-5zy^?-vv-(B&IGE4FJX+Z2X4sNwU z&JS%$bRT6v<}}a~B7;O`zf%NWV`9?su36&L%2gjC1|P-!7+Z^C7yz5hzzY|szcZpj z&1;&%x!o$ggY^wAnya)BS9Tt$a&59Ko_%@Ipp${<{GoMwS5gY`?Y<1K^ z2mg|syL%L8`MRZ7{&e=F4Fi{EhTcnQ_lZ=qu=kxR$@c;~1V?U!r%W}vFSFdj1 z`679Nfgzolh%Z{i4@l~G?FI^tbOs9Q=6>W&FV!ZCaocr51lDW@ab6p6lH}5I|9SXx zEk$!zYmJp|*G@VwPc@+pzw>18p!nweIcf>(=>uj2O(ms##>}iN?GV*DT*;0nm+sa} zHgx8fc5Kx&mLvVxyc0Kp8g6^^NxgORApiv4+hr6zL_Dpk-%B`Q)6d$jSGhpl-nRS z{+1vz^alWN!@uF5~i0eoz@=Y{W`#cb=kI*+!;kuf1@DdX#t z@jC28gtEO-gV`6Wz=ko4y$gv|;ezKT+YJ)dIJW{JqOm|Hv59G~?67p3tJ<8B3!!M9 z?J>fC=uBn=NIqISj2QLL!2^1(wXJme%1-MU@BRJ#yV6>9NWTCNWbVC8To_{@jVPKh zMJKKdrsd(o73+}|#NJtn(!Ehd@!h3{;@t{L2O(;rki5LSIj8FI@_>$xS5Tb$jvI$T zwK8~YWA%X+n;-hwMVZs3w^5Bz{BvQYUauHg=a_5agTS8M*}N89y1g~9REd(hoN>1H z6`Od~1YrRznZfS*33E~OuAOy`%%LOeDmO267o?6X;C;LT9x?r`r7^2?3((}uX)U&Yg@Hse!Fd(I# z>5X^gKTaygHzzcP&6W173by9#aHG4B|7}0kPmKDr>!8sOS-LCx-@Mn&J66l<^W@CA ziLh4F`LBbSZ^V8PnU=-hv8o3Lb+%Etsn10%2TCd@Q^gtZ?KMtt z81X|-&%s;5o3l`+OIzdNCpl%~vx^OWrx~sywBbOt=&78HjP72rLZ}-)8Tv9I;Otf_ z$9Qs@LMDXo(bHjdUDcB3qfNbZirp2W3%eKCZgl&e7SDP`kIZq4AFZWE6{Zxain`2O zukEsH1!-1AP9OX|ghAO7_XSFc@j{$VJ2{&w_YV~PG)NYM%& z+ud=+cT>Rgx7a7>tl$X+qHp7mw*Yc`o(E~ln@}OQbarU5-FYLDy(?{SA>7ZDbnob| zcRB|(cMQu%;x7=i+4m4fOLwv3A#$kBL83%bSlDC2N|26I!-Aj{CXIvS2)NHJY!<~ok5Qw={miTt;>_%FFnqpg8Rh(#zDi;RX8U;D*r9LN^qiUmP^Y7p{lli>aR`t;`9Vn6u8#c>RN8I8a6@ zh;tj7N6IX=M+8NL@bQd+L}bY~COHbvZG+7GGi(d^xR$ozl;bk=$cH?lmf-a^wGO3$ zj0U_!&0z@v%c2#cHamS!GX4LqbFOo-SVoAAr4LDDT#xqxVA= ztLG>PGeNy(Qr7MYkwCw~X{zF7Z@$|MS9Ef5vv3K&K;|l{`ClC@V)| zxm^(k)922YD_Ue>{hSB(!p=@eBD8A^lhYWy3rt(15m+4KcChgpy-Dycn zIa1F)7koAf_l;o63zQaM!h$i?KZj&xZKM;i)77Df$42Gof9#Ja)qBsWQPD<2 zNyUm-?d@?k7vtvU4oT_nFERTb+AZcAH?XkSv0V{x_@soIv$Mh)&*$y!!vzBiBDS;n z;Agwf<(8P`S~YL2j9es(q>nlHNM62(alu)jc0pt4n4brM2RF zTC(5jN?}@wDQYS&Gm`|w8YR)h2LSLReOHJH5w50Y6JdgJUw?=|WX_6g?fe!#GBi)c z5NA9JM`=ir_U<^-oy)X$WvC>tnIR1WV-%zRpjSeVPx^FK%lX_3Cq_X)XAUeqj2u_h z^+@*H#`l7|KAOelS*QeKK5$>d#mnqv^0rHieDXw)EX$xcKBYTHPFp%M0Q#ADryp6# zKZms=xikE(!-eRnVQ<>$o6)ea6z{yE=>2?vAnK%xdFxNu!41tJ3HVKmeBuMGTpMpZ zW^{UoD;2@hF`-V%|eBFu4G^-WMm23@-gu6XTjkgczJ*LU=LV~ zI$k%fe$8xYkw-{|nL#P0BI5?&n6Gy$)KnX^b)L2{&UdM{AM-T^i9K$ zhL>r>!l;N$>rwqjQq%AK0X`2|nVn83T;Oceuvhv*KM=@CB&h1?RaI;62If^yUMGx} zh%zCr$xvu0D<>tE0~Qks+l^patI3^q@cCgkn(c7I=2(a=bzC{>%G#B-BEX?HNFCjp z_4aLCQ_DPSbneOpgTfNv+s4iK?;42>!T;N#wFYd;-2IO%98^*TF}X{tJ`n&Oi950v5T)f4?MKgItcqm zSIMCDoo4TIL1Ma*dOKExUl-F$ceX-Oo8c&{hxc8g^9!52innNTb!wE(o>e5^6Y)Cd z=YZ_0C}y7qZtFduZc@aSW@ZSwuOADf;w|X$+5uVxja`|xhJmw1MYBydHYdDWlR^}{ zTJ51J!HWhN!BaJ<%naU|iAx&R-&YJ=U(lxgopDdRN7*M6&l(< zup!*nayQSPSn$ex*H>s-q+M35c>}%C&(4U@DVZ$MY;wiT)_V}URTNc?Xr#Nx(rEYl zX%>TQl4u~o!EiY-3-}J7-pzmXj>+fQ#uFJh?mp$P4dQjcLw#g;A_(lE^af>R zXJb+$^^(7Sy$YPRX&g2VJ9SdBqq01Bb^s;WGqP9(p8f6{iLIZ>6tS+jsA3X~1R%}& z_uA9b00fk>d=I4Kl?@i#J+0?7S`LoopqXJ-BkVZtJ0CAHB3uVu0@5BtUroobA{@%E z@>xwf=^^{-LQ>owh^IgLv@&1_GU2+nO%IM_tm~q%$fkxF`}H*Y*{2}cO3C-84NecT zzp71ammn&il*A`VFZMeJ7NST#xoLY;=dXMO6!41}(HmK`n$DmTrEbm$4T?%QaA=2a zc^eGTVb3`|MAxgO8crZC1WW9x78e(jW^-RFBV9j_Sr%AtpJ2-`^uOy%coaklU9{jAR=g|J#lSyg7SVxV_@dH=FV$b2GPgV1MN1zz}Fe&#U zztw|vwRSiGcm8~6GQaL%-s4Z1y}oyp!J@Zi2DnIqv#ZT}51J!T?=UkR9f`i-AKoQ^ z(=|l=T$}bb{nMxW#LZ}S+$$ZsF7WQdLPB!D1nKGNnagjOoE-_4$de?_lu*QP_6{tn z!gh3BAu7SmkwMMICKpgQR*u|P$|@?12zHIUUh&Q0k;Jt9CrtY(ZYlqU?~v8aaBV6l)2Zt7#SrBR5>j z%rAS|S}eH0JvQpG)QZhakI4Y628AagOY5Q zjUL^}raU{^U3;3KH!(q}z1(=4u-7ZOkZ%V=BN0<01@Lnc;|y4kY+QDD3Esu6u_5#x znjKejF&@InAAy)^v7B(A)#N9hxbjYd_^bH>oacj`{w0^!6~NVk`DA!!eNhyZ0anxM zNtet`!>XvI(Wy9Z1b~)bo=NO;_h8XS8WwA-Ev->SK^&CPn3?a;SD@VZ8irowV`a%w z0!m58DUgiIx;GC!VlIarbf#BwFwX{Y7p8 zBp=ur$1j*!jcgZuLGNu8x463|-e2vN4xW+UX&N?IvuLzP)#@zGPAiiJWbiH8$Fxsj zCNy-@0jRtWgWvRhIuk+-ESv(0MCAB!0%7l{s1rHeN}DLdG-`7Y1v?+<=qm*UB`2ru z1F?>v-eJ#snNojn8f(Bcvn+fskd_k+(#i!>8?jrtaMXSl2I)0 z)NQZzm305$V9dKOhkz!bs;-__GeS&=d%Bvb9?X8@M%T-WdRf5|J9nQ+J#1`5kWgF* ztC28m^qgI9{1Up<_#$Z%;c~J^dMDJK;Jue0{qDdEUmMZvQw9fr*p_D5sptIJ1U{|L z^AG+&O+ShUFOM!FJhiK!z*j#-L{r~mLYSP2=RS7iNx-nzQY{68UFiUDH?n^G(43gM zn6Ym>G($KS*0dOXDa1hlpVq4gD%89oD=VuC)DSgwwakP^k)Cv0M`jFP@wcs)fRt~?6#J{T34dq(u*r|iESD{0Mlumn^#qray0~9 z2xz01lbYAT`(@;BOZkESbOTaZ%*~LuqJN-{I+T(b!Nx8s zM2xTG0+TS3QG6N2EZ=A)mo@N%DVgkN!wvO{n8j~x^hd}ZNp5*cOxQN_?uvf`*q(`* ziAvx4Ai9DmR&ftYbbD`U8HkV0(|AxS;kj|1e3r&e^9UqDzI+K$lowUCTw%gkhTUkIOq%uwe|17cq3Fw!pA3$U#F z&TX(8 z&vZ=yRN;Z#qC57F8sJe_W3HNYA|nD-y)miZ>}`{ooo$815yBu<0}vDuPf{Eku8twi z8|r;I^<3uN9iK0%`fR)o2z-aNvYxrxWul>0oG<510(VBAAN+YG4>lD8@4~yxEfV_P z)oZ7z#mp1b^R#opL}g>;R%)Pi41-A66maI?z=1H`0zg(^3f741^xi)br(H(^$}Czq5ed4eR{$dRAbkwNS)i&Q>~=VeLZ|w zYPwBwI5f$Mza8vsHTd#i$!PWxm9(ii*N zmjsb-N~JD8dV1sxMM0_hr8p&}8I^c_5`hJ-QJ;gCRrU1~=j_U)VP?|m1L=~HULNfH z{L(rlP zlP}JLUl%#lCc`YHV_AjlTTri!Bnt`%e5gi#SPDLxAigE?{}x-E?xIzEHA?kN%E!d# znb&LoqHOchd=p(nR?aHxl{S;#qza0^Nfph&bur~ds!PP9Ze8&;<3EJ1kh+}0Rox1t z2ez&&8ZUs60bjXH`!|Cls?~D0feJ*-&x~wH4=iu7>o=N3O*IQf|6_rZlF{}rG+#i^ z)quLLzFIO0x6}#ekS|=)5FASRC-V6%({U1yso(eD<=^)Lk*>=cYLg3$MIOpUZBoS@ za57soPj|VXN)t8eq-j#9{kT|phXjoL?=$l*6*<>$9GcI~<`p|M-4>C{scaKF((%^a zK&r~a?T={x4>3fTRxw$FE}YS=s`z>e*$}qLxx$3^si{PCPf~uZ^8finEQQvMdJQrw zt142b)f8-eo3dvqkNKTyof#2T)+p*5ROr-<%Q7dsdh4S_WejbVV!33 zc6;d`<3TQeP~ej%eE!qhqP7nFbQ0di$F&*EzAO?`y0OaAI3`M z>(|Fr9Dpt^-*^BW4U?uJA2zfcgLsur6GtK%yZ~C+f8XvXT_)d{nVAW>?mWOy<9z<* z9S|*4l_q%k8jRlWY^<`J`N>b3xT1^ulC}S2$3(gAWDA+5j@*GWTddhVN&GZ&P=lAb*HfG zt3lGRef_<%e)pfF?5b{oRv^(lIWJF9f}xr0P)JclclKd}#hYTxmrhx%zBu)NF}yf6 zUch;9qr!k->)XYWXi=ZsbW+)}1G&DXrQWrg_W9@kdP+T84UXmZn}RJ*O+$mk1v(1E z+OUeMuH~4$sYx?b5R|4j)5Qep8Eq&8fz}+JNI6 zoAy{u{ez04Pi%c4}dWRj~tWvyJ@3OgvR~f@-by+p|yeS1N=C4 z_lY6e9{fSSsmEyzEc}fzSW-668QZ^rmnLzdn# zZl>(&YJGlweqcQ6)vfYN?>Mbcs1zvwd##5V6NBab|2@Wh{d#?v78z4!PUT=2Z3277 z=Hd0l=ej-agtYNkuO_K-$=83i)FmnDD&^U;hO+9;&c)!%vua716%ORO8}D7% zCfuqm@@!V9MIlk zZRg8YqHeCRln*Vo(aT0YVHu*)!@0)C#3aEBx;hMN;U;)5TzVw#cuqs*uZPmosh|*n zcrJ3s!Yx+cU9_R7vQLFVC8r_gqZlcq3e4e8=lbSdKu4GBDivtkfH@@UasO43$^%h7 z$H|!N?r!?l0hl!iHuAK_2_}?d;#*#1p0Hz^nzDm~ z+38d{p|Hikyq$_AOnUHSi?9Z-Y0Lb4;_ucuo&3$bO?%wqUX_)VCjjd4hNx?gd1KRU zl>(z7#aL$tZSw=YcfGyi@%IGbhj+bPRpDNj!Icycgi&= zRkXt9adQZAaw=ld+TSr&t**+YP5iMyZfZcxEH%{xG=uN0@bGZ<>mu5U>6m4)&(_X3 zBw->km5psBD#UgEJ(a)nnl|Yv3gC8z*3~gLEd)jKUcK#7kz8kdHt&92dK}{`cD+L~ zB1Qao6PuA;edfUP3INF1;-=rH(TSG0ZanN~;!Tc(DqUF$(GKXl2cB##pQYwDN`dke znTMrH2Xa|e(qu#Qy(UZmrot4E78P6{8pd3*D=Tk*dDO9-)8DTR%r16r?k~$XK3mIa zP|h?nZKqApc|3l=#Pmsoq>r8?u#iQ4oA3`CpiAHS)-4cu?X}Zs^)Qcjw0V4pE9944 z@_zl|4UgYUmGy67S4@P^|AqOZr@-EKsvW$}em&(RQhq@M{gIZ{ zUKyR@!j3KMdq!N_`t-bt=H7l5$|d+9qr??yZf=f|Gsh15!ea&f)>){{rkO0Io0`n5 zjEz^**%esD&F)8J_-d2Q_pr+$8XL1v*_e$5x2&9;Fh(XOW^fHNbBa{KUc$}24%TpY ze*moXY)B>@D4oiLY#_aIabBLVkeH-*DM?>%PfRThPH}@;7l&Ylwl*4g8)5M^0LeNp zRQL9-&xWUtkCTM1Ki{|_tGZ^dChWIuDP2yLL^hpN^$G4U`^zINq` z5=Hu*vuDqaFwkJc;+p(VxK(*@UU^j5*A40F$B(~(LNNV$x;e3;uJim;=}>Ix*SUYg zK78n|VQuMcb9`V)WAY zq%+Z3Sv`W>p&^i*J22q6K>vL!DLFa({d-mrw~&y3CnjyhfA*a}ckWzx#IOov0)WE~ z5xqfyrSdd`n;c_4;`p!YW7!~$_+<-VTKV(`g*XZyS&?O+U{{a-{O=L6KnAl zqngIJIllM7xShE{Umib5mDAq#MOJa~DmNVnoqv59KOKlQz^G~HC4c+INLYJ@2SP%A zU4Cb0r^sgINg&+a)QUR7oSB$-%K%w^A62L^VGcXuQoO>WAhdF$47hNX=6mJQlXX5ZvLa{(F zej>(^|LO9Xs^#56?V{;`$%O_wK{YsFC6%jY_jbSquf%4q8f9*7TSOP{gLVvHOt!wyz)g(}y#4VDR(+{jSR*~;r7w25ze zlG6#uFIC}#hP^fy1lpMq7j>V!-&tQ6*j?jpkne?`2u5-IJVtxBCz4}B^4IHY&P|!= z>;eKMbsM|8p5nwo-hQ-mv;JDt`V0n64{}xru<A^o3*DiGcrE)7;kJ2?`48!*K;KV_E&k7+SV*=dWa!AQC#XZNCFOr4ZyWv z*0jY;O9!0i7#82vj&^Ve5=*2HEKAj!+UmWdn}M4eO7`4`rCtQiMja8~nYZleDczG^@NJ#>WHC8@Lt1*3n+X=ylbb)p z@-tnXHZFhFyJu?9=dHS)k(c+daZwMdfT`)lY9PIRsi{3z@m_4~`pNzw;r?$CN{>~e zptf9aNb909VpN%bD{Is0RDQlada{2mEGFhEWYm+>^jZz|^E=!V;y3zszYZ2Q)Ynl` zQrelEt7Bu`Hrx<_cnXNA?4hINz~z4EvT-k0zgSivTVZ8oWp=2dG|AWqSO;;1=dUv| zPS0B9X*f6(u(3528`Zh8v9P=w*spiyM^2N*Bo{HyZPnNAZ69IUE};alFlhxa$yFdKv0Gw`t=*H9eL2J}wUT=z8&1uzq61Z_L|i>)BTrE7Wg8s*#@HTcZc zYnzpOwZTHlkW`~x=pMehx*An_npWsOM3gnuOv0}}5LSfO0O=qLIMn8tG}?t>y&DK> z5vLEpk*xy>U}O1?U7cu#?7iF{KZHo7#l*$+nj<-ej9cEkL7*q2=764m6+qseY;{Yk zMfJM+dR74eb>sS=P}CQ!?l%YNGF1(YbRWrtt*xg(UNE2OVrpt`#!R+GM@4c61qF4E zH>#XJbp-bXzl5;7AzN2pm+87Bq0Ex9RIO9p@D$X%6P$M(2KY;1yF_vOM}}nMBsB;Q zfB0}o`rbVY{DxTW-k$Janf;xBkBj$$sB=$p?iNGQ16f%YtL;@2Hpqyxw$1@+HNQi* zd9HSGlAhet9}5(aokxOfWrFLmz=||r;o^EQ;81EgR!`oFSBw?V6~fl=r~VwEn1rgTYiFf4M`XbM5Aw45 z)Ci>P7>7Yg(NN(W|DOIldcA-hs2*o}uz-)Fi<{coBG|9qMj!y*b_fG(dy)IluWxT; zSS2KGQHF;{@#Fsi(mKYUl6`zrkOelXDv!cTMnIFU@sVIsoKvfVXrixw_hAO-xK?F{LQ5J#e^RsD8rkK{9mBR$2XX{IfQfA^kUR-oWw3g^B`9C=TwkEj}kd zi$UqAlGhm|aQX9PNceEZIn%kf&q{3(kP!VS*}Bc$p|`+^!YH_Ur-F7+Sv|7(prh71 z&Kg|S1V=uvJQ^x0w~qFOwe9gD#EF&Rt7L24Th{pD%yTO})V_5M%%vaM}dady%?OgPDSM&Lc7g3% zqOC{vKR@3>@A_wJ-*~WVtiW5oFkGdxIlLBmfhk8{OAEb-rg5In4^`7v?n?3*cPMw7 zG0^~+exCbKEJ(FUq+a5eJAShva-0|fl#kx^6pB47GMj=8%OvBD|%BJ^eF^}bu){w2MbIqci-aww!t-Jnt&kLTH`F}ofUyT)U`G7Lw z<1qdsrkQ{rdwiYuBQHO%qq2T`gYT=x^5!X#&2qDr7`OPjko5&SZ#i-tuC`&DaKLNt zq=72N4NYp< zMOIkFq3vXbplv4$6O(X>^-&!t_69^z$)0!_rz&7P>~yC~ruSrHNeYmz=Vix)!`!*} zT^hDY)fFCNj@i8fclS5SpKX zJGhX@rLg#h0Iuo;IZn3#_1J1{khjM1X@+%dj@C862O&~H0^qyW#JBHm=x=?Ok<5dj zeAV8Lm2gE8hi=(@!J&1-kMh^Ww|;Wr)>XVO4V&_OTu(ebl!G&i$*kG?HZlv{oz1{< zMgo(X@M~%_3yszW4=XeUA^KU*sgntfUlc92xx3uCv^iH8k0*tt+l1ES38Rh7exEuIc!rpH}}=H0!@342RZ78}1H9esdjQ&(z83Z1BH zi?$b-`gY!UQCxt*pkUUaILO=>A=XM}rlqOFh>z{`3f82lvhj~P(yR_|dP&Jea;jKa z1?-LKj9kLqn;*z~T0t5*ukmXPSZvLPov@6t!ILj9cUHt*E#_W-nxBX?NQCMg_cZjJ z1EEkvHLevEOl{{$sIcu|ima5L>y1ww+1v1T?8ODS>Sne^8}xb;$KyslzCGrdsdufB zAsIln=owQlf|UUszli%-y`$6iga#DZo0BAtMc0mML+-)6s@Jbj?`*5QDn%$!=st$S z`jv9%q2;kPbN3KkcTS57&Bj5R>P~dcwnx=OL8;=5`)@b(5npIy%GXDU=!%BwQa%k4 z5m6ZhuLD6E@jJx5l-`X-Ngqj?7SqtZ)g4TjyvgIjs40{EvIut@YI3GNK#5c*p{L!L zp*+nSJcgH9K3-CN(7;K)zDS2`S!7W*Y-AIT!7#8sgt%c;lr~c+VrZpypx%kHuh6WN z-hKK@Ov8mOPwhgN*shr(22j+pQ*L{#eg@*as3J>dG%DI8%*B3RvpE z{DN_IAB>@Z3tUiaXM4E>{8rdnq?6w(jY_f(ur3(Xta9zFM%HBb`E?G|L#dLKiDnI! z(8lRD2Er40pZQ{J$=qg*x3%n46Vru&nOCJF5spRQ+@=gJ1L!gp?`^BP#f8`1amL2F z-VbRLo~l$Dh(Kv30`CB~?li|NS?$qHFuLRy=eEOIwKK~;yR?Lv$;P&nZM=_)j)K~f zkc*iZ&aM&IS8Yq63Q38C(&_5GGzIn;VVD4Sleq{|JMp^S8-?*%$;o=4Q?>JrCUWw` z$6sFD<73-pHZh2wiu1S^qN<|;2lg*WqqAIS?j#m`UE@T|u$xKC?@q=d`p`liZ7 zB0^jOkCCq3DP+!~BN z+hxm3en{NULzWq+$Yw}TP}d9@cIYz+Nx?4?W-{OyrG=pinHrBRL7tED{YCbe3>zB3 z*lSRB*9KM1L+V&V=7=+vF7$}*Z~Wn=L~sK~I!4%T?q%&++{Q-hfct0Nr(17)-De*J zhAs)oS+bp6?>%XCj7Yk_@U^#I`;~MI6V!7KW%c+-UfUr>?3VBn66(lki;!dw7o#n6 z6k>mzFJEI}Y_o71p=@kiTNXPIbgK6hg9pnNlo}Pun)`7dWj%DY_NJ7a~L@?@~Ds$ zfq~`Tuf4WYKfdZ8_HS{$Oib)>~bx5U+gFFa0Yy(}f2T0Sj z9C7zBVf%r1jQxU)`%E2>i{?(hB>0u-+Qz!{JHYCwT9sY&FiG=U%;y*z^nG(z7gZBc zg;XJrQNTVU7|RsPD(hHfGiDZKS$2={R+TarIGVY<*m#&=_kER;y{ES~>!QI{VMt?& zdX5lnTao4s?aHTbeywa}*cTQmjXX6tH#9UW1h@}&(Uj@1Ep0_j`EId;a%A%+i>u8 zHBL*~mWo2G?@H}WhamCDl%a~k_SBu%R-#UEpvc|A8OV4$^WRIdX32OS`^?j@jbKotBr)ZK&Rv^a~2r*I>?lSdIT#rj=#Si8L+UYHwQj;=F$->QH4B{M^fi1NZ$>tiOB%h8N4j~wa7VzZ?# z3(c-1epZu{Yc6Z3H{u2f%Yg7MMCkgxSU&TdH}YuK85Ut16zIyrXvj4kG0_)0FLCl! z?GAw`o>r>2;-ZJ#rbKW3k}EcAw_Wg9Q>a?0p94-%Y!ilFy(+=IYpSEKFB9sS4xAl} zN;hKhaf0&QNiR=cM1%~xZx0lWzP5dI$4}zDwu(w}T%0Z9)t%_Emz+~gldW8HQC27h z-Xl+Ovpu9xGAIS^p@AU39!ok3Y%zUjl}$<_Hm}5VG$&VFSw=>ttsyyo-cg+AsVK(7 z<7!n^71ZQala_wzDG`6<$Pr*=fU$g)vrSzSGWIOoj; zB@lb5M6A9>{b!Zew4>VE^6Vvx#0Rc+X1Ke%gEw)b@MGLbA!Ld&)eydeUVP8GwlcRo z;cIqH*&g4=)-*Sr{Yp7hXUJmixK!M^mds4?%Ia%pjf_LtiE#P##zmGkiAM#jJU=8B zMBd7moG7&T#gHK{TypVZhTuAWeUrmyMij*NsPyh7tX)@hzzEd0M41fPM6qSry0#939j;UXH)yuz7f*NTYZ%fU&B@-J`f*+_FxD?%F4f z+b*p=W22ZA3uJ4QkgLGT&rN1y=T{dB4I^XT}=&+I(o2g8UknwX5&P8J}Q;# z7v4e3?}T!f&pa7}3^*Vcu1e?#a_Y$2X?I(8ziCghiTxaUdk384RuuZjzI%gZmIdL` zt@A4iCNy<&^le7rU3|4lltYoo4tIEQL)$CF6qQVdV!KgqlMgbruV{4T&7)g3Y1W)E zk+0FMCZbd~gCBjG`~C6uu%>9900l+Sp=ubHhGO`Ucl{BjFy*4gd8cfOYwm5vw{80c zJ{K!{c*GJC5jjnIiN-p9v(CR~P*!{J2KO6KJ~B3)&yhKDLlCi-*iJwAr`}o>O*{U)$~tH+bU|1Oo97+3w53-Gq@)R$k~ z7DFQf-U}uBjwQQ0uFk7t$&cB*I&2ZP&2J)s-#Ah)Du{7j)KRN5XwF1Tb?;3LXCr}? zM1C%mvi&aqVs3JiF#(*#&9Rjn4&|I-e<=SffjiPLe+r#z2CIKyheAZIClWR2)F z>FZ7FC^1E@P1`X58_e9s0%G(W2$D)&H!ndm_RJiMZMBWzOdB(9hc2r?ot&WWZ^D!& z-+7HQG2JRKt&=D|mz5p2=myobJT#cP(f*&AvWzKW*RRKRiYz%?BP4<7WxBAPbOJ@H z<$~K$2!w1%$K1z)Bt4y>bN;6XCMQJ;EbzI|t+dOILu}4w37@di;rTU|@4GaF?TY_2 z6XOy`*pj3v-g!j#QYI}toIYYWSM19}odTP$Ut)$WKaNsAbsG@4_C47)wC!{L4mB5r zdiUU9`bz?mR;UI{p*^hd6q(FiwHV498W_?7UoRlQ9s0+@+Rf9dWLglps_odeAwYK` zO#DXKfW=_zY@6_b9;{V?^&=vv0T4d=3B?9ZgTs_15an?kN~T=28r^wA52yV-6AxDL z8#TB)X*juec}>_a87m45ITD{LdY)>0s4;kMsf#~%hj=B*T zahT0Sk-T-!UEX*f%&C+zj+k0#89pgc2O{aI-!<>mTrb(BXtCnmwW~o*<1|BVdD>&c=7ZpOB7J5&@ zW!J;7g%UugK~OAjU2-&64b6WG?heD%dWHpIP0i}3!B^SdJMw7>#(bZCXBr9Tox_@< za;extyia3=F4%akxB92c>%Nbh^@jt z)FA7)`+Ymnr7qjA@mo#alHIUl)2RHjhK1;I9@x#k5ohrl_(7cD!|SjWe6vW=rw~Jc zo6F6pXIQ58i)AAxHCJNO>}7A8PMYFN3MyAc;zQb)XT$;ei=l$vNo#AYINE9s7DMc{ z+?O~&Ai8(scvQ7MUDJC1HBjr+ogCj6;*gq7z!l~-t(EGk=@My|)c8!BYc%|BT?E}5G$2dBi+vMbSH&4adfs3(4+eJiN z$iYWe&2&`0Pt?jzlT9nsI4;56A^~y&bY6riKVFuPYOqiK_`XT8IxTkZR;ga&V)yjt z=3w+t;$G^+;lwWUg>#_}A1kNPWQ+5$Hq=+%?zq<;OcB^9*x40AhOp(8F0I=y7ihsh zq`k`;4?8zy4ba0(P3z-K+{;mrZ>PL6;(f4`0sVeUz|M`^eyi0{P{@X#FzeF0{%4sY z(xD}D+d|?nk{h!9(u6_-nK>t;TKmMYF!zTGpq6s&t>-(~1?jM8nRJ+t_O z3)!0?y2X!1qq9oW)QPUL0LU8-G}w;A($xV~3F;_WMyJEo$stj%WiF^&zkGZ+RF^e4 zr~+#5*`JFP{KRbcenPr$dKU6!=~Y!PH7ac1iyX%wflBoZkhkCa$2iOcItkWRx)i|A zh|DcuJFu0ySLPx$YK(&Z{AhW(>Z+9$?w>$h0JP%1w(Inxlo!s$$;HLu<=83SW8Bhb zt^1__mc&21pddn@9N4ts9djzMD1}`n`OPm|2*eM@iykCnrfEgfva?SewAW)|H8eCX z2fZqV8Gssa94O+0MM^qpe@F!cjrmeg>#8$q9fP4A7#>c}(=1z@4)o!gt2$5h6TE2X zp=mU_i7bJ_#@fvT6fQb}_FUUGy2qb1KECRgm?pTEv8Cv;3tiSEzgAEhFz94ey zs$9T@bdX+vLhI|&%Zp}1=WXhrfIr!el1RC@I$1CO_+#8>=7JgxI5dJND3;MLN9*p* zE^r#9@9rqAjO_=cQqJuX^ut!FtDAT>y1PD^0V2KiqDe|jX<(FpxO-(O$%q~<$vgH1 zS`VJOs+9`W2#}!8F5&hNEh#TYwd{`ZNCSDX7kc z2$&p}sRAg0O`){*3=?tf3q-H&*2p_K5zN_nD5)zmKwtuJqVPro_N_pEUY@cjW^?>t z5x~hUWWCrzoI^ed)larWWC65?2gDV14}177zZw&;UxT9t!gY%t%-_ss0~|nMalODt zPi##mOy;r4Zmo$Puh70{%37VzN?`kfLic*NsYsd5{d$Mr@i-st#~HBdAKOv~`o?br z4}XS(T_x7aRa5_2%nSdtH_bQg`Lx=>a|Yy$dYLg&TC#r>^A-TYk=R{YCl;v0I2bIi z144xX1TnYCLO_@03E&FhMx3VA7bz&HmpRUfrwz0)PW-t*GmCP>y60+;4>FU((cCt;_UW~r(;pH4o$3W*DUA= z3nd$XPY9C1%4loHyZ>%$LHmRW3*>D)gTOy*?I_v0VtO3+_yB!{U*J2tPx)bc60zHo zxDBExGU?bqK;6G8x>uK9vuw_yQ}Ym(*3CPVzelT#i=mZ+3%FvG4qA7~`m83g3Hh}< z0(qJ~0WdBGX@EQqcc`JH`iRq%psca+9quVt?Np(F&z}+=-g_;i!D}h)D!R)>Ck>o2 zz!*Lq`P!|(*-*c?U+a#VQ-uissWK5+tJgQRkz~DzNLB4TMLG3s_|0_3gUxbuCmXXn zRNp%_HB~Z%X$xELsh)6p3HV;tix>Dn*y!AIqk7H=D;`#CPIa{=pmT;*Sm|L8H)O)N zMy-3u4y^l!H+Q20Qu1s%K6c8a^+C1)1v!_jrm%I_Sz_EeJLfYQ&D6xcJtu$>o^Lvt|j(wxfl z$0iq2D9=$KuVcc!5{fVbC3i`jo_N92a0vBq1AKS84~r?BaGM)|#HRBS_c?Jmb+dJk zm;Ijo>9h?cRf~N8iSV3Uzy%4=&#bN0rYV1%KsP~f>i3;UnVhUr@ke-|)HZK39)eZ>7uBH>amh-)csXd@48kzk<>jUt_rIn<--pX*PG14xoW614xi8?yE9yUcZ$!Sl zxEO8U2{8|-F!h)@jx=VMYwf6Ld#s`%bPKdT#JFTQt++xCkcyTi``Zp`A6UyZEovaw5SN z#k60RR#)SVki&(J&v_j&AkkoGb2X6B7} zJc2kzcAn!fT|t^*#?Jpi?edbyL6|-~N3W&FSb2I&8gIZg&c0x{(Mg%=H7@2*VwsL!DK7E+zOtS$8;Pag$`{{I4B=W9aEfKPe4$f!e z-s+QcX&{#zmwO+xMbHcHf1B+S@fONbGViscd@p4rhp+E&jWZTJD&5esIt-@n4#8;p zO|bCQ)sMIK8c}zGBKfF3@I%}jl>(sgM$M|-$J~h@zi8!L8R)T#m7UZ7UcQNl*2_zwzmt*9amAg z1I7-{-nd(-pF}LE>)J#exL033_px;rjZ@?^DeidctYv%iqAE8hD2AkN)8Eg^lF8_E z$Alr5Ml1@T4VZRbb~Y0=pR1Vg_&Cm=z`;Mj_{06s@_G3m?VtEWz<6iomdIY!aV-S2 z4rg|SJ)9S+|7?UKVST6~O~_EmC_AQyLt7LvcM*NTn=%$^WJXP!3dwX=Zc|E9uCC= z&@s?^r!VnWjos1^T+FBA-5unW*HOR zmjU{2SAnBK4NBs`IWxDgdZwrtK|x7rk3qbS==jJI3vy2bBfZ%}I-|T9h7SM1KoEL$ zCtu=$nYn!_qzhHmrX&**@CttCv{ajGrRNL{uMUfU~oI+&wl zsXDInk}Sm#uM0iOxNESDGtlh1KlWL1@A>D_%is4r^?RQXl+xzCRwwGbL9_^Yc*Y>k z6QpZwbQ5u+j9&Gp2xY7GzcU>#=9n(`H=p9tz^;@UAAAF7N5A~XqATuBeUksx_KDj7 zYY0cjFI&EOFRLc@{)vg?x;l)TF6FJLr)Ez!bgtbp0jnEkbWZ$9XD0;}Rorf= zo&D>FDdyHOZhJPV%Y@Y;PNsTQodH;dgc)t0y^y~Ty^`|mxc zQuR1vfRv&2#JXlRB({}bQwXU+;kITpP_tx|L zudZB!bVf-k;61l&P%Q==V6pnnUf}vDMPGt#xKI4*!B$biIAb1Pa~6TkXi|NJbu#_) z{oV&&TSN<89e?^~*mubLc>FtuzCw_9(|D?!2B(S=V?^6y;vO|w0+PY!Z8MMT`Ka8o z@LDp!jHl0&5tEQ~9gg^W7mIBAQPghDFg?1&%96i{^!QVFMv`*k`oH(&y8{gcm6bj$ zlmMi zwgR4qh8(q(Hua|o&f*yuK&$|ojc)a-IQ_iGkAG{NfEW7S{d+;+>P?lEp+CgObp@r# z?j#Hb;~C{=sKiY%Q0H~X6TM*l9ta4=X=zY>=az?iy%^cwi?n!j6(%EcofDEGIO(Ld zHJY@(CC{jrhEnvGo_Tq_G}v_2K>_~B#LS|6-|t?56YfLvy+vHd{f)c$mS9(cU)t$% zO(uiO+}v8lLo!eyOR27-ks}GBL&%sRJ@(|o@xAL`G>YL4b=cSVe~qCRU?e7%JMWRI z@75KJ$O8lftNVLLvLD`jzi$8T7Pw>}-t`2wA-P0d$1}g7oZr7WLF&~r3b#A-PX2c? z5bdG&w4W+71U9|@b02q)Lr64#mg4@jZqJT{U}zad**`epE&KLm+2|^8@4##7aJhpU zPpH^`4Z_p~C=@=WtlaXj8{!roikMpG_1YQ)EDyE{yJKQb)z zjH0_kiOIRm7B#u>&v?G;ce?yzykT@LpY+(10M#2TEAs>a9ncE|H%|#}C~a3*qhnL| z`0HJeHN&Zb=}s2*plzh|^`C-6w$F-t+zltsApSMY2&zW7O+|%Nn~{R{`1n4nq=GZO ztq<1s>-1|NzbR=wWJkG1frTELEC8)hhD$-7QCu>>9aJ_p{^!A+{p%z0L&IiR^~{lS zIRyo5lXK@Drzrq!U4@V8*>mYaEml<+*|~299FWA!$|#oyh--50?TmA^vih@xbxz#8 z%i{fa9r)VeZm05rIYQb(@A`*zdkJt7mFX|3z^8ok3GGotQ`lU?5xmtKK4R_OM{J+LX`ek$#;06VOaqv#!;HE(>q_9SN^!RdTKHtP? z9LlD9M)_003BpaG?BWu3KydnlOxkblUUG1ocm@XkXc+mWKn8Fv0zJxFR?FFd!SB*0>;SK zbpi2DxGhrFSFc|%MZrpi31xnH!qpf~&ycu(qi zM>1x0AZ%Fb0&hYHx+%Y^5p)=PE;9t&v9n>&!tBJyhU@1?17*Cp0c4Q zK0@M*n~z+Dn*tYhJaVgq34-$=TZ4P+w7%!?YhYjqWc1qBckfK?c3AQ*RF{y-a7HS)+CJ4D7lyO* zhYPxv+_RNoW9ZUV6{Y$fR z3RG`9S_UH0#8dp5^dEhG1_1%Ig@y6rM4%1yg*F_wx3@D33UsHX9xgcwOwP&1fWZBW zQ$)Y)s<-|#2kL(tn%l782L}5y)6$fMYisveO=UP^-oh`9(UJb~ah9mjJgBp%)RF@^ zB+n=pS;!lKt{&*&g7}{Tlhe^FOu%Ib%!)q4(_#K+=`;Mb3_`;pE`bk~%Ntu&UHw7M z6c+UdhHz;Hk`MytO0D1SV>rQE+T{zToH4((^f9Tu&znDk^5;w3jN#UyG}rvrmCWoS z84?1+L|A3Mq=3LjyaPWWQdK7}n6>U9U?_W;RuH|LTUtJ~u*gx!>W?-Iek@Zmy%G|U zzuC^L2}-;IH4|4O#B>omPgM5F2=kHA_Qz6T_Y-J6# zYN>*{gEtx)pE8vGUGZ_PKyzVYZlC)yIxskq5B}zQcsh74uwy_Q)ydJh4Yk?&Ckfn+ zLQ4s_ef0%{dg8QP+%fAqp@hJGJysM>!MaKtx zU#?0MNl-I$->sfxuAgKpZvMRPy)a6e02>Vj$bQNeTZQdjA;6T7uZefsISq*G@zKKW z@?4Y-mBZNR+L?!!7eXr7(9bCetB3=d zaLaXZoaGCbY$pH>W0736La! z`u16IHmHH>I>I&l@L;H3;K;PPGv7EPAsd*QIJ#rvLBA>5AL+wrdaD5}#5z#ES94uQMg*1sAoJ6>U_F%qx4vthA z=5<6`H5)pL{*Ee`6Ix#zuioCU@!>jhfgQ+`Gi0_p;)Fx;V4KxpYuA4r{h9#oAq{$a z`4zf#Tzt$Hu3B2z6)M8F$I8pK_`F?TjVUPdu*aF7?~5lqAPfC<4c zi4@$S7uy-03OHP4oE*Ql9FP;ha>jJd8;V>o`=jA05U;`+1OA^f-zAW@R=oMXbzkuP zY$TX!VC&;Nu*ZK6j6fj7ag}F?F)&=Q_aN*a?#a&Y`gmtuSGQdCy{*}x`C0!5z+j_A z{{)i9GL8y|-OfU00@tz zTze!7hB=UqQ1UA%>b-gR`PMfS2Tev_^768|+t}JaerjmUmUcs1y7M$=rSPfn)bL)y zD^W_J)i!q0bBo81ndZ~JL(rjJ?JN_{#MDw?!)i5FA${sUPzZsy8@A$b92{e(0>O0sC+9ypQVxK)@*(UGt;r<~XH$4Z}o$R(Mar zK`{ce-Le4MI3>^fDjgK={qxzyAToduAgibsB0xB3xN;<%`zYZEaFGxD6suWcu}cF7 zGpeCcU{%ysY;~1-d1*=6#wPJ|&*Dbw_^;R29+m0aZ_6j7AX5|YnBmM)=!!jZaNCE1UKIVagjTt9~zb%LFc=zm7LS4)x5CXytuuUys4hKj8sYu@KlzsGo;-OH7^=>`>O{uI|0ukF zVvu*$aG?V>3v7ro>*2f7BSrhhxRqsU^OKtqp$3#h0Hqrn8>f4SW+B$+Z=u1347kfA zao8vvsd^pMY(hf;E<-=bLX8I*WGW_oAYK8lciM`s>4hYO(zgbjKH+K^Pbo**_n~no zDBlwB(M;dlO2t#>8RC1>VMTQI)>~QqBy*CI#1gSzMbBf$mmJ&I&)<%aMqzZvGOp@+ z>W>-93tLr+pqG$yV*q=hYu7PD(JfZIv8+{l;c+eJws%pHs%0cY`o+WGp7#&(x-Ax# zmOhG+l>qcvCCBM&sGm5Hd7X9wLIjSt2O#G~T;P>@e$um}B9Yt^a7HuKAWK9(j}hY# zRE(+N(s*7rbwEQEk?u_puD(L(?>HZ0x|FOd%)Y!&cG;*YjfJICF`xM=@b-|NJ6oh{ zifU@EN)~@62hOH89Eqaw1u(beAiTK~lWH;k@C^1zJ}A*bscMnNekm>ds4eHrEk7Z0 z!rxCW<5N9n{pus0t1`Ng7$Un9Xa@ADj>#S8{UdK&dY9j)!dW1m3EtGL%ZxjG%MNJP zP;cPUWkqnFikxH`gf&;(ZeBFzjFC5@{F&sjR`)pQq0mAl5mE5>yhff*`JT>SpR9g)VO`#!o9XgKkqdzAmgZr%As>h%f*xj@D9!rN2P zhUGRM$}W>$3nhcW5_Gs?fQ2#Mq5?4I zpUp(*L05iyWhGfp-6tltwoem}e~3P*Kvqv~>1f+FK9VdY`RDP*{ivY{lT$BJv$C>U zURuQ+qAt>WB;c=KIsFo7a_`!V+Ffum5s2S!5qdOF$nfJjHYQzR%uw@CcQ|f?ik&(IpB*fnOXOxI& zPOuq|g2}RLYGg?Q=_co<$PFO{rlXSWU&`~3Ztw%d201(DN%FISO1kCu3ZNiBkh459 zQwlac979`mnE5E(aC#j77>El!6^FQDmM9(f82aZO^HCX|m_S-g2=Mt?Yc@VlvwE~# z0{h9;#U~EwQ{96FB&w0Xn}5FE=MalYq<`KN5Rwu)UgZ=_zjVBgeLTE6TQBW6TRoW* zYqS4aM&|LtTF}2kPyb=bnFWAkDGv|ix&FATXWejhp&%HpT`Pv${==340l?2UaDc)% z$LE~lN7c@j%3k9-kG>|?49++Tpx0dLq3%-*jg$!S7g6#K*;@Ji%v89XJu7IN?;Revr%Og{G*~vbLJ6(++xg zb3ufKg~j~&a}^->M@G@o&>bIQJ!Byc&d$v2CJ@=U3dem)C|7J})y(R8_a`0;z*BSb zGq6#u=^PUJg*WCcK19c(9f%v;?<0&}Trv!=pX&7eK$G>2He89Ec zKhrGWI@J*Eg_&W)g2N%SunBpkDwjA^M2BPk@Ke=#mWWqdWtJ1UIr;g$K!!!fP9AB5 zUk;IQ8q#)IG^9Ozg-h+^=@hGY?5^}+jt`a8lv2|&?kcOhRf4;Rp7mH$5r|LtjT1Nf zbNx6EhvXmPKoTUMfZ%Y4EO@T^?vE2-4ZnVUaOKKraKFGX|JKI!8}>CMhahmvr|vL(bMkx8L*q#{UMQ5|PK?=+tp#fPJGVUg z6O^n$iA);Y4=A@B)BNR@Zt8y$SrcFG*B`H9p_)Lt*YEfcooD0y1XpIIQlOp_nWI8n zKM3_OqvbYzP`p;~Ao<8S_Fsel*5>w}vWf;%Ju;)N&fCe^36P?5^|WtEA2+P4g5Kts z_0>jE+#D$yWM}ioCtk4oQLK^2#LTApO#eL?Lr6qI-O-ZHy;I=Iw##(Fq<`YYW108w6xE9KEWWq71YM0Iq_t`tlQu9t;h+9|xn+cxEgwPu%KMP=+ zHhOHj$i?VR6A*Tb{CK%z6>^2p%PUmF!=su$3rLiMNNPg=U!~VLIkVJ7?;+l12pe^{ zoF)By;(90%xT&2_o&Ye=?sBIkzPrH}xEcR}N^zfroe07_==cCw-iV;Um7s?Zss7d` zGiiY47)cE|fS-Z(v1b&{O`76+^cQN(XTTW)MU+a4wPJ;8TD4xakRJzOa#>$~lAj<_ z?^+8@mmzBo(c3?!!R{{%y}_>4k{3Qk+p2RGbU7r5!cdwB?oZ#v4RYvc0okG}8;5iD{Qq5` zq<>?Xq^|}H0Idyr;pYqGPy*Fe@UDM8@`!X3F1=gYK8wD6;Y_>g6vH+yDA)TNxa4d6 zX~_#^Wxx-(eJSWRRS>WQB;lz41AfK71Ed3zpM*7#v-7g&kN@-0aqwEh+0efRfA+_! zGko+M=nMxee87$&?)Za)$<}oUt^p{COZr{egQ|O|(OBC1Gl+@5&{Mv%a4f?@z>yT- zFab-43&w~^m~gwaW;S5J;QjbCRI`7aT!;RyHm-?{uB{((TqDS%hS7;%Tv zl6eC*8h|J0^XG1p1v698C^HOSm%QVu!T4rnt1K@vm&CdHj@EV$vZ)Bb(? z@0Prywn<$Mx5=aBG9bV8K`x`%Ppk=iE?g4j=KFW&ATQHQIxP1>yal)mz>fs6H}$(F z*J4&ghI_s_$8?glvBQguIb#99GcF!AE>$xsj1Fws*T_{Fw&Dd>x<(tC8hJU`rNAg!v_s@5x_#XbpLT%t` zwx8KexQuKRco3dA!F5iY?ep2EQDP4s)OKWBzo))6@w1S+xyxi0&A2dZnb4WAwN~x1 z!;f66W-yL;VsOh&dTfSFvnba@{UZo!Q~TY1@L*d&_9b3G%x;)pY-J1{F?;WsrGvPL zh|0tD{6#9=g+m5tHu>-Mng2DO*uVey@8AFb{kGJ_MZ62+MD`92g+^@(2;TwoW{>sb zr7~IvEat@PH*fF}TGh_P3tjQGt1YR+5UTyGcwWt?t>|!S)hcgyjN`<8+H3yC9roXr zf=?~z6%(JdefW@Db7`xX-A0EH(ZFlg)J$}wDf#g4>sKhup=fJcTccr^FbQIDdAW)X z58%(8>&(nV2;1d;>C=dXGcmHE#Mb&Xbs|kAO|CM=7q}@{`j?-cc>%JEHa5*08{Jld z^IAzmlG0tpxw)_L8W2*SqVVzZ7kc#;{hAF(R$RjszU_YN9wG`JzTCa}<6*Q!@R|4t zRFOyuo=LPLPkJbbJh!dcJupDF zc%#RQl}X?c`7l9`3GUf^APr|2Ph6cO7=XQ9a>UL#I^#MH0NrV2+6(WKd!pyuEx!-W%vwXA}`Zr0-SnI{Q* z{lC{5**V0e7cU2-q&prM7*H75t4e_@9*NiB(cLHSLkb!)rw}D&Wizyx=@vYip8hgR zF9Z=8D*)^dF_moi!g0QW8&ihSQE?QD`eVH2PPY@hcLZm)gA4=h^6D6U>24zSMk0_8 zu1;r*xTJl)Y+5gLW$I#&R`~nMr1_Pl$Y!UBefDEh8fcE z8)x#(pU~0Ky$cIKw7CHOy}0gDO0l|L&(#C6?-60GqM!${F&7gt<5(T0eE6V=JA6a;@zxV1?K^?v zYgJ*4hKZA5ZW(7euWcXPwiCF0+e~A0cgOK@S08V~PCe#Ae(;6$U;*yC4JnnP;}tq# zDUu?WGhEiaq;kz&%ZUgTq$f~?&OhqR%`%&&y00Vj%(~}?3jh1?abJxSkt1rtz!#yX zufl(%9iLY*@igSahr8dtBZ)Rz=M#Vz1U)JydkkrW50gr%%>ngN9u^wYB5B&2GKN8O6oa@$suO+xg=J^Rfur zviy7f)9&KhNrCtO-YgFthYS!KB102{uPBKJzNpFi(X>-DoWVCRF!=U7qU{wP+rU@& znnNWQ^i3PgOW$;SPDz19CscOr+O_*GF1su(Nl$No(QCwqmRUEsxi2$DoD~)x2QC8a zp)W&dcw)6{&@rvijN4tCjFgm4MN1(^d~7G+Z%x9{7GUWW#WTUrVU2#$7744&3ow%Zq%dQDMix7i(lx*pZmGil@B*!{9A zG*pwur)u)L&jy-*2ufw4|-=84b-?y~Wka zIlG|$F$eg5cnycq<05a{e+T=~NQeQ^_Xt&wVV;?V%HF{9J}(lnM+@Oj(8y-vaI&6B z4m&G~p<~tJW0QmLV?$n_d4AzE0y;r&gxDN4e`uL3HU*yS^7Ds}9=YA6q@eh!X;T|? zZ_-ndQ&dERrl97xX2GGL(=t6~brREwDw;f+H-7c%mFo|ADX9ijLH&)GU3u)bd@EA) z-rUdiS3DN?9gG8++)^_1*>2Q4qmcCly1lv=C7 z7Am@kwnDot=iJFJ19Xc5LPBrb-xyE{|9)?T3DrIRpjnx*f@ z?m|-P-c30w!I_J{g5{;Y^&vea<1oj}^$q#L1n)k4xY>nTUT#R7@Fw>13Xl$4%|TO^ z8LS?3!dCsd@1U#KQAU8MSZhQTUm-!_}b9WC-Gs7ZqtNNN|IgdRuDy`CQ9z@pc&D;KBi%eVZF)gsFAeAxx$ zC`CN6PYRUBP3+|nVi~~=r1B!ct*vHuI;N(An7xCJh)|0%BhG7Ot3QJybAHpWW2622 zygj!YM|F@6>61yr(Q6J<)>V@)y$I@F{K$Qzvx^=}UYAa1yPD9li4=MN!(*p=_rh}8 zcuAYlHy`Xa)?Kvm88|2#Q%zwWmNuN%Ha8{Lr%Yy@!mMcAx6h`g86yz+DypBWvZ>As z|5k3D%lBavjFjm0&DJzh6OMRkvA%?Fsm=GL|>c`1Q1cw|4; z8GCQ`a1!e`v_XqFdFs>+R@Mo&mQTT8JKn*9Ks;5^SbP=(w9Lj>8m<9T1=5L&BQa;sKAY7<*7Gen;NBle zbHIG^iGsH6k1}cxdPrWq4h@ax?&nh^^uH8azIHhyQidVHZLQj1@4T(B3$yB+blKx4 z@nJT?*v~`VR}puSI{xBpH76sPeiqD9N0i#09sFhWO>Ga!)1@c0w=ru_Vg5sQJxC_) z>%GLod>kEzgTv1CC@7z)C8=%3;LV~B3EtKq#{ z)7;uL!9#3ro_!q_CaF2)JL1~GEGZ;^YZg4RoVDFss(xzHA;8YtMK(HSS}MXfB`yFk6mR; zx3sEqROdw`RaRcK%3~qFR!GOlNRpKjnfkq?v~+507>QRgl9R7l-yHSW@8f*zjPu2d z?swHcv9L0;GKu+MUBC307w*kPBi@x;lg`YLHa|}(JRdpN%>L=%LROf>!O>l_l4+gt z)up8e>PyCsPR>aM1y`5fJvCxcdt2iai$DYgwY9cty*{YQNm=+wAIf!Gibvy4*POW% zLshllEn&$9Cm#9PEs}>1-k)15;=&oN!G3=6SZ{jDr0vI_)BN`LZ-bID?i&`326wee zE<@PxwaMvci7|m3jVOM@z?$bu0wUkVex+t)RO6|xF5R`*@{e;fXzBPc3p7uK+t%qK z2m59V8nX1pqqlea2bF?QUE73>$M^r`0wm#rN;ty&B`8tg%KRZQik&98kTDY1>T#%R-$Jc{?S= zuuyOMlHG9g3y1KswLF#t9~aguaipUsGtx}2b8HUkOM%OfH|k=zLPL3Y?lu#XFSt$C zYZ|Yfms~iB2gixH)sul#tFYM_(w>1~zwjB-R*f%ezjuxH-)O}NdH+N?|Boa2(C;ha z`gl1c7xmep!`as>pEWD(uY^+B9S3?Y%a?#bh(u^d+m<9e4AuaeuuXY!$yBL?Ze!x2Ub>B5)S5x5L!3hz5U^znUj~`SVIzcB9UevF_+f6{Ejro zvb2;pC2v5v^l8?)-~4Zf`W;U^d2$a?kxc;_p+s!)SCPZ9F*IC!d?zV+t*>MV3XW_9 z4*8sjwW{G+T*we<;$$1>5ILB#ax5vAnMWrP!HeJViYn%+M7?`Qe;N@ROW89vb_Q{V zxK9e-cR+bAGe0}pz9!#EtDcMV>cM41e*o$WlZ#M|vg;k%TcMQ`$1|UU$teV0Um31M z_|}wCK6B;p>HX3j+0MzqJ}@!y=4F`A318+f8N@^TEWr1hGkyf0O2R>rj+66h)ps3N znpG%Qz;dg!)fe1zV`-aFZ-{75c?66@VLpI}s= z#pNwzNIT)WI+T)Uc}i$!z~(w^n#2|qvzJjxDus@|zR1X^7P79{05>{9Hth@IGloaU z#J`(m6Hn;PPrht_qp-OBNQ5IKdoXFYL4#gGadH&nqf zg-OIkUzFhHkxSiqSZGsIdby)tPG!h>3M|!4VEbshM@K_C{1@yN{iD9w4E?OX`acH! z^%~hkjPtNJNcH=w}e z`9leb=`Ex@R6yuxWfUMiHdb}YZ+Z-v5vkuI?DFAXavvX$UtC(dB+jz56k|ZnI-Yk^ zPtzip9D(QiD%H(Eu>1Y{i=Y$rHo)~&4?0%AF!~}{I^I;a7LW2?dR6uq-O;_W#7ZUs zMwQ&lrxChwBCKZ*5x#v(Vs0@DZZ0L|55S3+7<^#HGkvDdtl2rQ(K_!@sRq&)6@QsF z5ugoLIr&^}x6QBW9G2-%Z(pRO3_}f}raL>oQ_igC=aaM*ePJj5KA+p#_DC&yaDl_Q zr2Nf|HV#8&DeY-qDev6 zxXpQUi+sJFnK>GioKb0XbM|LM_rUOt(};0R0q94c8!ut3jL6K%dSGgLSWgHU;M~N8i6U&q|77qV9xc4IPRieh!Y@jB&1) zcwu>T@MAmSRe-_{YIW2+^|FKQRvm8 zv%TYt^BEW(T@~(Xnw-3@`(vIzdVhCHj+7qRt#+vI0@OwWM7P&?(8vg*P_gyu8{@C8 z1Co_mek>`C(z@3|PM=2nk2Bl4Zd9)0zc?{RvqnTr+zfk11*shFMUxkhj$c@MX&*p-bI3hAO_0#dJ_`W5_vqt9GElpl`vX)?)oa05$v27uNO?znM-L(h$Rs6JFjSv(-<~?pqk$D!=bA>LW0r)k<@5^- zm#vNNjZTM6!qFJn;#n&~2xh-2`KrzXdznv0G4=KL>!Ldy*!$KSllzJaBK7doxOGc&@KsP&Bthg)=_)Fc78MmC-j<%N zn;J5NIJ)LwIcIO9>3pHxtb~#2!gWDGN{u{b1l<|@I&_}+?c2A-fL5#<=5PHRB`MPd`CTO3-2LM- z(S8=%!hIgSHjyH+H_S^N1s)2l<`<_B4=7&|2`j9hd z+4!HFYdlR5sE74?xi`RuC6&uCbR5I%pXR5UU4O?e{m$x#Wx~rC@AGTiv7G_X^Stm> zSx#ilheM&@=9Pz&Z`9Hl&}@2cH}5vr(3C=cH>Ce6m;iOJiP?`dW!O>JkT6qERkS-5*tG4y3U zzm{30z&nRSPQQ*ZRg72Ib*6A??3p=1q1g2X%7s@R9P0l0!^=({Bud$Oi|A+JZh*^# z8&o@^K}SIG#z(3FTdIIW&%a`IH= z$WM2o>dIJH)e-BB4-KbVILcAiIJb9R?+S|CXfv!l6!NL*b3SB;D7#aAJ@9|dRo4$ChDF`5Je8lpaaN&zE^=icEL}O}qHmxcjlI zd>-!Kncp!mGTwx0^!1kLAb<;?&v2E%Q&o?Fh1D_5qx1~ZH&^BnQ`u1nJ&VVradN8B z(yXelTjHhiNSf0-1uxL#Z@Jywebd$DEFFtv8FhBk3WQ+Ea->E)j)sQj^jP)*F)@kE zpuCKXpNi^kHgg={4uWFMPFjea@TZ5D9*<^K`fE4hY?;R1Ydn z+fUyU1pMtzgcdS$k=$~!(xvw}nk9Ync+6?{TM#U8yW!t+%*|qP*Uz+SR&SQQRlRUB zHN9&$S`^TiuaEb`-I&Vtit6j`n{4d~xBbxKo0|+C79!x_4R>+QdWO}{?Rlg!;FoyB|94qy3f|T*t=R<=ffKNfBb@pvNF(VV$iWlmz3=F z%lEIa5Z027E8Gz~c>=Vy1_mD(FJ820Xk>Z5rQ9T5h;lDhTU}g}vhSAt@?94X8LDum zyw}TTmzvA~+%(SMA~7{}1RN?g)(e?AiF%&$w$n4O^Mq|H1;z3Y)Ll9(?l7eTYWAFy z^4v-sjQ!jD6-G8xxoe2rl99PwwSAK-+F@`O|%4gkJ?yE>@@J-a=@FoBPiP2BW~Zh z(_HcMf&IIqf((#kdeNMYrGNR&t1+7+tz<<97Ui|7Hy#+hGtTMhSR{`3WdOfm<({9M z_;~sBc*aOU^wZO$Ga=~x_(IigPgGaWC~L?KiNoK__yh#)7GDZVSsEKLhft^Nh#!0; zj4q|`>wmy}(LV99h%ex-iC#;@aB}Q`cLB4{{q_Jh(X&~0jc3b334~6r5va}WL4k#X zBH_y{G#> zL1XsWYA`L$lA4y@rJQQ#Lz{dP9;Bf$!goYks?TlVWv;@G@6yk^njEG-lf)us*&Rrr z86<=UwxY+PIS<}QU43o1_>~SPU|9snbTzxFFN67{e{At~S$t%C-pJ^6o|SB(pxD5{ zP2sC(A`F789b8bBtHAgPeuwp<%}6o#y-6+F`$bIoLl+R&!hF)z#6Vo1UI-ScLR57p(^Rf)^GR zGVyeiXW|eL$m)&n9ZUG09MKaYIgnN$2E5evX+{UxSC%b4=ZkvAJoaf1+9_D;crPB} z-ty_`Gke|KpFjC|Zaa#Y)z{}cX?1*TC42qqWnA=i6}$ke0koQ7hJum>Qpm@Qd_uB} zH0#M@DaAPrSEhfM4EVUsI*HplMo7s;@gYC|t`){&hYjisT-a;&J@SS^8KdUa?>2-ffIZFl2%cmz39oOSd)TNED$PH9Azba`0|q%EQihh`wocvTXqdnIwO68$eP6^!Q(1joe8hn zuFCwvT5DN-I&0Ri29u9Wk4|FrZ$D}#`{NLg;RQAPH1StF9mQU$cPwzeJmy0aft8=1 z4`}NLwQt>HV-X;P&8J^Ko~#LsGIZZz1JGfn+V>!riXqXPJbw|FpqGi47ne<)`#J^R zbyKpoUGoiFUPD6~;Ka}akk|P{Skgq$pmxxi92XN9TeEs+NWBAUyBtI1MZ5!;0>ybr zg%cQns)JQVBWN1u3}9l?p+p16;Frbwu4Ra&IHL01S$bq%2p&^b-ZN`3@5kzg{t)TZ z^P$507hKBe;laU&thh|nrMe!_@{i0L2m_9cOGqdQoEe=8HXwF9g5P|jy0foE*P@B} zcswUW47jP*zHRdI@u49S`@`(6KiytG>mNY;kww3j}2)SQ>vF#aRy2d=f>0%paXwN6#o{*Ma?;NV>Bs%QG+yp^p|A(vD9sPacP z&#*3JAzs>$=Z|;5ij<>Ww3Bi>c_FF@3&b&h{_xX-vSVNJ(Ic#11J>wBoKjQyRU{J#WKPc7W!`tzh^{WZ ztDB4rU%@37%FWF?h~M{Lui!0I>D`y4GIq_v#sN~KDz+6cXhJY(vAOfEy1JhEQW@&HUIm>9 zyF6tivd!z z_p9xWeOaaV!K&~2ImxT9D_A5YCDG^z{#=sovA{D`639G4mkFHx8A3u&eApG9b3N;Y zVs}2|w&Oi>d&3W*lj^`q0ter?s9R3d_6hlLCiBow#Qn|vud`wn0tW(}DYlg)=|#}S z22SRKT3C(HVJjJJOFTKb6+Kk9Mg7HZj~TY;39;L*&U|dfB^pFaRUgMXIEz_vii9ti zFH!>xA_c;i-@Do@W8#8>RL|~Q!@=vFoNHeOk;1J{52Wa6uI3o?(o8uCdx?1`ox=`g zx_XoF;2Ue4@>M5i=bFbWTgyBZ=Lra;ot&-%#Sd2w0^9QFkxkuH+|g0A!j+WN8De@e zJjfd&Ba82>KU2CIC`ZewqRl}uv|2yyRKh8BB<51x1hsenl|St2J6rb*mX@U*x0GAN z5^rY_$oEt{07(LTY6v`5DXBhS?m=h$5<<9i^Y@ju{6FkK9wV9BodS6}#NqdS@J!i2 z{zY8$WBIGU4?Cza(ns|G)RmeRWsOnLvCRx^zd5GtFunI9Vw5QgUk&;b=Sb?K}C4FY6dN{TTt8CfVmA5N~$DJYcZ_jQVY?Ls9u2D_Ey zLZw3$CY1a%op~?EY~)W$d%sB>mNtKVLgY=9Y?EBhbM-aJ>2dF=$l~V7FHc{*VKcjp zy(f&)l*!HU6$FTmKN%n_L=(Qfma?_7VX;%m@>RH{UPt}eIiGJ?E0Z(${623#u6nwq zZ&38;s>Gr>Ky*Wu^M==T6KC?j{G)VO+-c1p4F)MqXO(;&FjY||8e!D>i9*4zro+hI zK=OOpzNieRP~+;Rpt;_uxCQ$ulQk_+mVYvyh%S*p*rCJtuSMH6#>@4r2Z zqo4M!R~^$VE$4X9&p3gM&uS!}@{GoAniFq=-jO55q9h(-dV8&mZeveO+|P@jY?bT9 zHnLovUVKu;ta1v$lEGji#%%=!l6k0&n^d)}4gvETl#RJER7&Z-e6zIOak?R&`Dys` zy6@_iXbAZ5y=~C5TzDcT=HY$eY?&KaF1uf6=i;b)HWSLT&^$1$7;9n->si4m@~h?W z4A@&NUKX&aAFwXx-l>F^8+$9gQO7rLx(*9v(Wxm&;VA}r6YdC zp^b<7ZCIY`1TzC#`J}-^=Q^ODA(EOtx}x~dZN+$VdUo0tNZ%04A|L7z(9yj>xuk;D zV)8RS70n#=$L&~ak)7Khf*_`+U%sI^M}2~Upq0C<%X^f~Z_N>X`n0u~J+J@!?8aw@ zv+RI>`fv}^Q`d(jTeq588zqM9uE#Ka%X>0W|LvP5af!e3WaqrMj~qoYObn$s!O)TH z_STFkcd7e(b5+LBr=Dhf+Fd1{`*n^@Vj?G3#Eil>hq}_h~0tEuQDkaSeEPBq@{S zrKCt5#>ORGF^-P~=QZ5$l6LA&y|N3|%GxfV=4JK~vH{S-&3e|MbWcY~mh&NyH*SJGi%uUtmJowh z>Z_v$vw5QDw;l<~%(T)wbWhY?SQOs-+}gjS0FuDxy&A1z`0vV3Mds;GjTrah#^U^*#Ddbh#wSGtCVCJdz5Y9#pcX9qxd z{^e1u&OAy{=7Q#?tGWrbjZQTdlBe0WU}h_8;{I&#W;Jq_%x zMP|o~Anro9({qZLo7;(M=2l&ZB=a3L6Ag=#v%#3BEgpg5$$xmev$esSmLB zFCcAa8V(Lo=jr=8WpPAE$s=8!A7wvOTfW@|xYEqV=G^4xgGC19?07k=H+~#BSaxTm zrmkh2aHIAP(L*2|sM|^KL_?;ggkf1ffF>1C%wqbPi4P#BahuP6*tiI@Y`so>k1?XZ zGqJ`<0tkLSLuHSp>&~CfVOQXcnKjLiYuM;c=O`ymKi?elos{R}IYcAN`#j! zR94FnmVxT{BFk>x{Rf4Gb^6}A5qss;6VKngxeEHJLuae=cea?qHAv||jw~zNViwnW zBNrYrMVJ=d69`JdyaDH%KM;EBWqDaVo0Cg120}_U|7>g3MMPY}xi9rA6b>olZ-FKc z1#zu?8N?Ahpe1|A_B{_cQ2Q@uqPQ!_P@kLh(HM}aaq*fRC=oe;D~@ zI0FsHhkqFP0J2hn(9gd}o_MtMH96)#`p)2ji<-)=B)NZ?M3V678*!O#0Nwriu3DX0RUYpX`ih#gw zX3Fu;#42Uj00FlHY;?Zyyf|`8O^x{1fQ`)fj|d2;Q;O4Z(;9=#tSg=I2Hrv&&X-C= zL=h+-^2am%g>^;3o4enh(r4S$aw29`?)B?vw<>)^H<)8vH+yzZ$1}D;^IaSs^2W=A zpQfQE%CjpIg&N7Qa9cCR^y}!}DKmbrf?Xy&(ujP}V-(8X+&3~a!-3(Z(}kY2`pAox zBW?P2UBv?1PBX1L$$Re~Kj!pPAjgNKpzX`1OXjRe50jxs6Z)A*a7z<#?HRONS(w|- z4`044B}PEv|G!yq(2{$PpE?y4MO3q|ty3aAleox_jZN1tMQPN8&2D~9D+%uexcYOA z9er(#XQnq(8Bbd|25rr&o_)()Ft0WyH<2yCMJ$SDriwu}5;b35P+d9L*^LEC<_zm-HMw+=w^a(92ZP|+3c7mkDX7_!O%{Wp7_UH84V&Tjz< zY3P%mf4il9ZOb(lIokBh%>MK%E*ExQeUr7|?>a@jK;x6?W$*JE5!J@y<1Asrr|WTY zv~jLhplI)(wtY8J&fi~gYpZ!nytuMl66JpJV$O0(!dxXj-el#UxKD~F9yAdFWs;fzt=k#mP{x~oaa5y(ATeC-!(#(XCJTRJ-rT^)&(b$g=M~{Tcoe= zdHsm;WY^tYdV&&8Z#R|JTAaN$xW2e{4grP1gNN#S{0y6#-ZRZKmIQc6JoiL^2O0af zPtwwcH{XfQMKBuwdhWP3DEsNbfz#2gts6gKO7mTY#AQ||48roOB2 z-grXZ^`b?md(BGq-<#%Ak#L`J;^BUjZtSy(53i;bsp8e_dlEc@@BAOf6eovR{?4Xs z^acGOCLGN?yYp4QhF&A*zCCuhobeI!CSn$iW%Oz;O#$6+>y@{qvPDsNXhGl7Cw8^% z-!5U*F$$O}Ny50HGXrQG<=#|`Rj28yGo}6Z+b>^2iGXN_@1?+zn+P$$5s^EaH)|lc z0zIzYV3L~(;32P$M{UTYZNF*9LG8{9nFEr*w@gx_1 zTJWrLh|cAl(cr05x&SxaXNlZ%3NJ36)2cM)n_|f9mt9D{_vtc6u<;COg^j?-dM#Ck zvFUn?Q_}9U>6x?%zdY`Uj{yrqd_BtpC$tD#t72E5Q+)={pNteqJC-)m>&+n~L;%wd zc%dQnG)PqOL-gzuJw3Z_mDnHCgoHL{-N~NFBL|S|oMZ^7ThG{Na|zQex0ugyLz+=` zVda3^=No;{$*DOY(5}qM&X&e$XE_W$?*)<< zA}aEX!7sy4KQP4zRkIaKX>&zw{}bYTiZpUN7&}aGRyi&-i%q?-?pslublU zohd4;t--qlFg+a{uqXm=ovj}Q)jjv_&wI8pGBC(ZrFpf8s@vu1M~Ue=7xlkdq!-zh z1l;EneqCh3q1SlS;c;7=&eN{0mcU{VeKk&i=H~XDO`rAD6k|AldP&W8B2Lc5VbuV= z1F1=t@p>-psbtfL2_)dm%roj+uUJYo$l7<@RqrUv8%?{(ek)oQQ2ZR^;_QsrsUuF+ zyR-tfyEONrTgf$Fz7E@`#`B_)_*aCPorlgeHdwqi6!G-w?FX=1QY#6d%1JFt`lYx8 za1Ae~JrZoDD3PHuZ`4p388SUh+BgABv*_<{53ejI3AlK{*obl3D~tq9&J6- ztxqSo2z)g(qW2z5*$cxiWJwYZ0^y&|CstWkR~DsoaquWc`_I*{0x z;wkf$D?x?pL`6X*ro#BBHPY4xTz06&=VZkjGZ8m z%^DUE7%YB$uNAed0W=o)Zis-fke~mXu6G}Ex!GCHgtPZUU-S$F0&MekfG0dnvkH4% zx`~#V(9MNf7BmDh2DhnliCb`gZC9D03{++z^~IY+|Faqik%RfSI#_>N(@R8Wl2I;x zetgS8>qIAaZEZfAn|iTrt-yGiUt3oB^uXhsQAfhDmj>D`M9_2YG9<7s#3d}9B9Sy+ z9MCGTa$LJm?~fp;=PqlI4%k;F6P{%)6(2utF6n{{jS4yE$CnWW4&<|2PD_iqQOTl< zu=6yI(abbNd1!V;bh@Q%w%@I7MoU6cS}~0bc%W?bZa2>>XQivmDs&Pn`PTM#(V&or zOC?Ho2EMswiP_?pj#&+0(Ad5!_~|8_h}pbpZ0}>0h8PhIsYw)TxF{-xmuGDNX=>SnQV? z5c-;WbH45l2~~Bs{);c?*V|Mfe#}~?b5=9vI4|B@b*xXV9dJdl03>L_1&8* zP?p<2s7G%-weWVqUQiAs4FM9BTUdakyZYFXL5<=xFuV2nsf-|rq=QU}wIVu7qUr<} zsuRWroIu`mbJ1tqeffshe&hMVq8r9`c6Q&5e^}i-TANKe!(t2y+$S<1FN1=FKocqU zkzww);d`sLJ|Sm{AcLW}$eo)HqCK(PBI%F$PL8HT@*Z)#+K1y0nsB$-K?zw~RaCP} zEFPYkp2p?3gFk)*sS;I77`9(~rC+cy+#O{%J;Y*WZ646_IH;b-VL8Io(9Vu{aH)AD zsTft{@u2iKHn4u|F=^cI!u4WDtT4{PMwTewrCsAr888TX$75XfJ8gIPb+Q__m$wC7 zcN~v4iE?jOp%vHq-`NG_%Eqr;p8!a6p_;m67L{6*cE0+c(f30|q1h|v1o-5-;3Gah zF^=kM9Gnf^%#3w5jEwV8u_k`9Kwns1G+Cv)e#c#lXWVm_0Kn})s3e>+?6eIOC~zOo z73iDUXkIrqGdt220{#GSWm-`6iw>LuWV<W_&0EdaNOCYpxruyk1)Mm;IM&fnI_}a}ViA{b$f6?sJr4NUF zkCR3m-UC7gAsZlb^+r6Pb+27%o=g&e%p1U;$B+3#u&}$I@IPI(&q(PGVTOuOjVw&C zm*T;KMN`5uvW*`K3dVB%o5~}UuGYKiA0-bp9qc_xnsk`jAMsEE-6f5(U|(`FG*`}x zQ|6}fxNP{fJO#h(`oe3tOY#6`X!<1&E#srKIXoxQq zcn1gg;?{~X{>f@s*uVD{ujSla#tNK@q~qf2RVO)Mk?@?2q_gGCrlaV=L`gQ@Q zM+VD->ObkmZbf7yA>yZ(yL(vGZpv2|ts+S8dg}Y+atd@V*P>pysPv4(@7d(%@BG|d zj0=WJ*MJ*Rd}Eqg_>nk7@1gTG0MtOg_3BO4INRucSie!CGyBYC7;nA|Ttx$S-^KDl+v1S*pRBkab`GLSXyWQ;FPWPX1 z=~J&}gsGd3+1XWDpD6nw#d3m?Sy$9`$9d^}78U6mD91XOr>>36vSe4Y`4@ z58F~y#9cqwSWY0#=`~(1#?G_c^?^Zjn%NW}Mz}@%cv|?(x^tFM)!co>wO8@yM(sWh z09sV&b{ei62zi>1ARGbh8JQnR_ZTPOR$H&`U)jR16a$Cx*iX($fQ*=iCInniiw-2M zGtJ_qGwR&t2Y+Am_;h8=)lIv940|Ity~wKNm3&3QRD(U~*Y|gBUi4SP4MyiE;P5v0 zrw|_R(Z$tu>O$w>;z&yimQwW3lfohXx@))NG)-=6srBY@%YfUdokO;z^19%@Ph#kN zcfZ*DDD$Gir9u5;!v7}})8z!hk>=tT4ZdQl1FBMYOzw{~$r_f#IOn=7P_?E72B+h? zQ1#8QX5J(FeSNonehUo|UA2L3(FQXi&UN=t=iXnFKr2#+SQ!=lczHSbp5^3rVZ9A1 zIW3Ju#MP?w`kSX!7k1RAC$pD2P{MdgZ{|wEZ z;?OY==sHBuvI)~E5CjP4x)*d@@ohgl48_DrboDOZ6N+w0pGw5~`@3{s$^G={JYv94 zgYC6aTzqrkg5)`jDm2D-Pg&#BZ#LSgUc9m7 zd-n-mD5PcP+SUv|XN!(ak~LAkK|}j)YSS&mbLoFvk<74z3 z-BJKE7uDFv!MfuDqmyBW{Jhdo|W&pD{eJfLEuyEOJ%C^zb{tVh)iCQ%IGz^ z*CKOWy9~#1{*Bb7mkq0_57=J5d>I)Y?iBr|qvm-`>qZmpx>4u&u{5{wpNH-2)e;fh z5?V`3i)M)dr-n`?zH!rqkX2ht$2y}TDbCl-9PKzU3giQFS6>@>bqkK#A98TNy_au& zXamKf1dYG{RM(%KolGL=cX94|i36dAZaMn?erd{KR#xX!*HkJ@%#~3LqlWo0d2!iY zOZ-%PWyDv=!g!KPaNuoSnf?*8k2tyXv1mtQ1&?e93Tu z>2!Qd>&t|ME2Hx+DC4a+t3!qEQ29XvO4gu>b;=zPT~5vGH{rQ7#u=yPyLHE~awHHI zDPWfBgd82|d@1puhPJgkvGhTm^R$tna{qgcdAJclh_raUb_$Z@BqbSOgaKF})XcWP zcx`%w_LPmSJQMNLp~3mBTC4mztNiJ`&DSLdOKByWAc6;ze>#JY!Y=Xw_g&chD zw-f3hthf62gI#c_M<#J@SUkX*Yr7V#G(djhh(Z~ko&@gg%|v)JIQBMWe`{^8EgHOz zjli4~opJ{u82HP}8#$kKFPsr&Y<|o2r8SZxMlI5ra#5XV9|mhec@f40UuV z;mrgU>}(BeWaIFd`<=E&zrHQ^txsxoj2rb9`S?v2u;1T{39)}&ect-}P=oO8%iJH^ zgU0!xq0kYY^1L|J==p!aHzZJ>jaEbQ`NIcd%;4ZU7iDFRo3_J*8NL1UJY%bW?G%Np zD!1UFB23K8^p2*nMk71A$BA3F`3jtFrYn`A``1SL0W++GYgA=)kOU6 zI72>KO;67-6`u{Z?D_ykC(}F^y~@v zX_SYm47hQ!`h`C@wzaf3R=7XJ9kCp!z*F@+^kbMozyB!SPUPi$O2)x~@I~mVW<^3s zFU)P=NNa|h#xRram8CjWt(JZlZ_<7+waUV|&KnvP&2_wsI#2ezerNU~Juk%pC2Vyqb@5o@lhnc10B_XZQj~_38yv)KZ)*eK$^-Z&^sQR}D1_kFM zbR=)sO3I8aF=cZ`cB=Y5i)xKgK7y0dJ0A!}pv&FVG+avIIRi4e?SaK{l%d8NG=q5K zAvgK^n5pp3%+g9pm;l21@-~l4PrVu|0S2#L$Ab2xQ#5p=Bt>P98`OL?dB_YyM=fZh znwdW*nsHN+;+~>S54M}}Ug?_;80Xwq`uD?=4up;ReWn%bNEel5>F;=>AA^*8>+smj z9MY7cOG2et=<#x?{(4Cc!{-o6sErGj0>NOFw_;suBE?Tvt`;4A{m|7B6yf(HP8-H5V(>2^((p!3U85`nw2dcQH&ZKeyl)d%_!l6@9!ru z%@hAFK4^r1U^{Qbs?Np31MBP8g5cHqP@?A=oHkY#;X=Oub~iK(V8d>)IkU-`WOlh# zvBtKp21~s?SAu1FG&e`_P5Se5YJ88q<7dH>a%K55&tJIsl#ak2yKDBD1?FlOJt9EB zMcnTEM!W+zCz+v0Q7o3YlZmDbSx|U5e&z!<=qm}W51m|Gf{LKSnA)elI+sV^zE;4P z2&W3z(Xp-1Gz%YbgkL2qq~RE~5m<2%p^F^Ib4hMJJvjCmTD=LD>*JHhH6K)i`%V2z zulNKDW)vvnaL_2Hhw&nDZwnl1njcs?zIY`}O*qn>X>Hp1mIe2e9?lPpbduyAimA)` z@};JQjOB%pMRcaV8Pe4|9;qvWV&Ts)mTx3KKd)bU3kNAK63Vk(PYi1MZ~bc0LkYqE zY61ScWGPeN-f=#5o1~1*1aADo95Ga)jnWt?MWdcDD!#shI{ zGJ?X+P)Q^nlSp>EG}rc)a?_3M>ILJvAR|K{lBTlzbLFkHMf1<`J$ZBK+8y%Z+|ttX z?*wdR-lcj9Eq1+lJ7yzoI>)M094k3zg( zye#LnK-9AOlQYdK@^l|Q46F2X4J~pMd{mDfpThRy80SGqRg+j2{{OPzjbU&wSntFH z?6?s5V9tb%tmE&bzT(!w7(29F%?-`6zAWx0QQ zkBuQqy~1j(aFLJO`#`C?r;PIQl`B)<*(o8anHtJp>(cC;)iY+`lA=;d(=hI?Yy8&U z8uf#VnVGDXL6ISpL4XS1XuqEwR7|qg3JO=Jem$T2BP-nX4}5` zd={Cphxd5T!+fuyHRWxwyLP#dJv@^^Pt6zE@Z`}j{gdkgz4SLQ)&5@N6mB|2FRoG} zh-Bs@(PhaTwfezfh74CLaF51vl+V|)a%~p|67k7Hq=N&Z-y%Fs+Tw;j6=(V>Xra%K85mTa~rwFVZIF)x4RGc8HR_U(^ijG!CCDV zs@&3gK0RGdFu@w}`|`!=v1ue}lZ40bJTn`D?Ww6o*|0ZE0s^W-#Us{&t~pqd0~#L} z2w1PP21$Ji>K(3h$^%VjtpRayZ%@x%buIt7H>OH)YWS5^p86IR7H!Z=JVNfZT6uEx z#}2x}eDd!XZkw>3J4(#+4o;QFLuo&XCnKD^!jkdyGxyxw+%vr>wRbmt0&X$=;vL5d zMEm;UN;L1%u z%_qUQd^w!-HZ1@Al@v8$&jQj)@KwCLeDL+qkd!O_v7D6(CD!?IsSN7@b#>h-8xxE7 zS@Ip{UG|QBrmEm#YMQKszUed(DN9c3>M=ukhGIy~ti!W85@C(YG|sLIT>QiUXS5+q zNM;|kok-(+3~;y(4$t#+wMULm=p}s6Kk~lK^oCIsYRX@qU@E-6#$gn5JENES#*u5X ze&)&bEC1VFoSh1V9(Sy&j!#G*g6JxcI9(I66J8?0X&^Lez}XCyI+n8Gz{4c&oT!uh&-R#SW-ulBEaWV5?F`lQsc+BwQC?h`z!v^?!+fYMqkFA*$6P5v zC9E+lN5;p;^+x&k?-ma<)QK9Rxh$wJN`5&gE7RNVUnY1F{Jjj&?%2=jnY}-ACSGIeV#kIu3a!tCOJNbQ*qC@bTLl#kDpr(6ayiZR)nJ zL0G}{0zswkv%dd?(wV*iwM@byB2a}J>dE$Z6cCFEsSIoBrSk;+v@bvEUl|>o>a6e6 zay1^D%Q)bl>wm~4Yrg1|sm_M@O)%E1jU9FkQ8DP0^_dlo^)LQ-Z(X@G!uQ3bNQUUH zY}Nv$^2ZN4ooV{Un1syqd@rB-k2Np(SSc$?l`oX z4nk~nAJw5_wjzbXF`ue~L{xnkhRI>F8Y{Q^cX9-YYR1SYD0eVgfI)itQNMomddF+0 z^t1o-jY95umSaP-lwwx8j zZ!*o$c3n#Q9rN5!d;64RY1d@z#Co8ZN-!!B?G{QTf5{V$!>6XTF1=1W%>~gm`vBuo z_x-xno1rr)`0+y8hZG+atyb=ntgkOD5L<)OH7t5$U}NrInue*RH7td2{}$>s<5vsS z`5BICv*mBOb}dDJs>zf7pEbf#gf$XzS!)bsw5^LTVys_$?vtRA(QnZB>xyQn(Rm8a zIJ^W6vLX(G2uAUPb9z3r1l``Srt7|W3}^qH9*yv6mbsm9xBuNYbD^gRR?L*=;l)yW zu5hhX;%KMf3NIfarlf$BJ8UJ|tzCU~ScHc{PEJpy^+AHz(jxrWB%O16R=btEt`{Pxhj4IRMl`jwNOp(nYgfO7^!ktr zOK7^e!cm|Kk{mY#}z0c`p*x4Asms- zy0FuxT%RqaI`8+K0vgo?6j>8mc!=AcrG68J{yuu2n8xUb zk%r2Dg-CVnt z*F>s(UYAzh*Dv8t7?iVrV69{!EwAZT8~bJM0h3rQ(jJ8*HoF5AW;#{GjJsSiUrw zM;}qr34*xdu;)!-Z&Fnh6)9~(6Sd7DV)7}`QDMFC{OM_UOrU#JN`^LF~qDP>6o>W zn<*uD(c*QRhXd;c?k)5reJDM>oPEA@Cf(42joUf}dl3uo0xqMH9P_K!^%$n)N9ulbW10z;f%Zyj2W`9_{=kV^eV@Eaj|5-0F|7a z%;55l{E;s2?`zk-b+iP_T&nF(4P_=GeKr5RqodY2>A>ls9XnM}`B+4yXG3m6qg6=# z)Gffr{BmAssi<(m=xh>vECb#&!@kVxR%2i9^l=p)ysw`k4knPsFoRszMf~~hE!|6o`kq?8kc3V$u z1N$xfbvQ%2hv*CO3A946xJ`Je*D99r?ndR$Rl0VKj$W`&x>mcv_FuTX`_>5Rl-QL^gpjc2mAUZD7S zk%cAe;S9`G)wjn&K3iJwcncey^Ej0 zsH>?#GQ0WPqtfi!7+#wxAK)7eJWCdqvN2P$dCi3{4RDm`B$BygNlgJwCryu7m35UiS&PA2wKr=EvM;!3cmg44dm zKZ%dO)2}}2(c`pSqVGfcdr7vF*{3J;d{1UF{boUe+yV!>uZP1f@ zVJW%aNh)>ifIR5|?(NHdoR?{#Diff?hT(!3x1CbTjbH4!hQ7nKt(-^LPqVVFEWaXK zqon!ZP(B7V{87W>^IKCOajwfZmS+x`L-z-va_7{f|3WKQY|LtXmA9usejEV7GSz+I z6w@$Erlx$oBKXalxjb*5YQ}jB3z?Yx%P_3{Kt~gS;h_|%OHgH1$+)QUF=x;Uh{ZvIWtp`b|-5DOj5y<@0%SXwz#{{ zTkWEdP`+cI4XSp2OLi3O%Lm*~F6Q|%M7aNCR|L`UC!y8H#)7(muGt$oTs{P=tBI1d zzTEu-Hwc&Zl-n^*r6+sd-Y2sVFb)dg{o9jqx_m+0o^2kA*spYzcV)bhe0T5Z&uGze zmrGd_xpD8apx@|+La%JQ@-e%@qN#;$=+N+l5um?{@yMyfle|xYo>&E@?Py5&cLgu^ zK*#`%*T=^>Vpq03@;wI$S4PTd0fg?llEFlUQ?u$)zi36qQAB$O_V<)Dw*6jLtsecL z5zko>b%;V*fS&EGd-q5ogMXyGYS@gA73j8~MwuG9J+LG&&CqGaYuNMi8se9p-lW&* zDk!9_Ix{rBZaDhWR_YyZ@k8%GNr{exeaiR_?-zEAfV?TwO4JT;y!#+P^`YNl%F3~B z$}D(doyhWVw_0o>OGp+5^kP4z`)7lWgZxN9<^A<_bw=p86V@1S=b6zOaay&{xmLP0 zFs@>&>FnaNvt+*`8|FUgi{mv`)Vet#FkU~GEs|QiKdj0q`T3&PjsIM4NdoY9Nd{F~ zQ34jf5VAUN`5lBYeZi2IhUxX4?jK83(Y^~&4>)6?HfH@pn1l>nXjb!Qj9{HW})4ASoR+yV?!l|-hCzkTpIKYd@9jm&+qOhNy&BK zvc3+_7daQ0r~O?`zlesjd03pj7g#)t{F?6;UjKE%PR|aitB?4ST~K4c%tfII&m{>i zYzUOL36zKQU2uFo)*6G*gH(?PZ6cUQh9c_^;Y+rCigwT^++m=kL{Ag3jM24Y1tx-NK{2C1wdi_ah-M1sLYBiAic% znMFwkzmcweBR`e$)pO`*R-+p&Pc;t&UK!MchI~eKYaTP)>wO|=8&4P`Om=5U>Dx~l zH!+TlVu7>pqtuYBVs%RK`aiDmE+sVk2Gv`W^=@l(b(Dy0wU(2w}-moIO!Hve71nqmW0xCsyKckmy@L#sQ(G0_J?Xv0qsfQxW}^ zM#U{OF)zC`U+x|GSdCX;F#3MQRKHP_`Q-~m@H{A((i+IE2IPxPAB1TCZ8(+2(=3G-b2RG%R!MWh#pi!%Y9+xSWE5 zLxVTweko9A9u3}%J{9K)<$p5<>GPzWBWsF+ILfNnXl8Ep?x9|R(Y05vo$HDrnR;Vg zzH#tweX4J7zRxj{Nt!-QRI)zy>gN7i%d;oWKv2bqLf zoE{PI^7g3R)e4+#r7+xA$4h?Ee9AZarN^B0`ZwAa`ydF#ys2&3;0?!RP`8|pP5oZo zjI6M#bYr|{#h~-zH2cdprWcAa{1NdzJB*ze`liKS1%f^)I+?#d^;&SdSY3ogF&-bi zH|lnLqtc`Lul=FBbXjQsen7q0GsU;U#|+)Y6pRGDN`I|AD~+RKeIA3al0O;(<84BI zxB)S8Hbi&VRZBC@xZfd3S=6R0% zxEOy|uweN4;J6z$SH<3Xi6VYzkNJ(g(QJX~#Bv*1Ngtch9o5rCOws+mq(i=b?%c{> zlx^?$?hjS1M&=sKuN`A}g!js$->voor~A?1rJ_M<2Ru;Mg3kP^Rv9 zA4X6Hr@bG{IXoA2eAE)eP7T_RqXkc*nYm7#ShYhlmDq=q%@W7keiBK@M&IkGnRHqW zf^V9G6HWqz^x_Q8r=5(4oNHAxZ-Sb`ToXIq@sYue#6CTouFOe}@|-x4-fNkuZtON@ zA&ZYy$*T3%uflU3^WjsvYJ3DuWch!_$Hyax+)RzH3aY3`G6Uxl)ds=dkc><>f6=uN zPh1}R^9KJl^YAZ?lQHhrOtHC{Rnu$LV`~3f1~{gdi>(hCu9q#z9UZuK?ywzUJ8`HV z)P?05O?{=^Ji%VZHV?_)_db!7kmDBoed7uZt@h;B;bzvv35ovk4_D8k@cc%jMuF-r zR-f&6PbPPFPu{~6B)8d#to)-N+Spf)1p2%ZFleI}es6nMq{^#aBF33yi8{s-7;~|$ zo09mje7tj*aT*ZZYSZ8^Eq^GAeRjJkikSaT`UDo7f8qB*bkJvKvEvNNjV_c=(11oW zaocD1pWE}*RY4=`?ubfk`NYf^^w6GqQhkKsb&Ml_7X`E1MGy9DH%IkPhUa+_Jx{KP z?rcqLmrWG-`jAYVZgL%Z={(O_sUbN!dZ;?Z$aRY9gb2cB)NYFsYD8Hu1o{5DmzSY` zXeVe$doxs2GRMj-#p|Nqwr&h@`9yvH950#B%a!OxQ+>3}hao(te|mz;aN4+z?bO!V zzkaeo2T5>*Pt;aa>}go#A>q|gAE-IlYkz$@xIT05u?cq68LB}4BERaOXnlI@1|w{d zzZ@4c$)D?RxoRu>(6j%6DK!580&4E zeUvk!HC=Q*7YoMSn9YE7uhY#SHa-tgm|HC9EoEYw{;W9nQ8BS`GsW{Y&%*?wX{-?=dTGws#ubqZS5?`XVym4*6rLyr zYoy94TZ=(_)okl~sw0&8RRl~l9jI5v{8X$1iRDQSkTL57f;q51Fe zdEf7U-dW4F1kTJkbD#U{eeG*sd+(jYw(CoB>XR*!2jV@-dhK@i!N9}Dj|0s?9{{QX z4_HtCdgT5{V_;MT%%hib6}=)%VmH!qK~&O@PaWPIxZml0(!II}YHtnA6j+j0&Jdb8 zwPRt97kf&1NC|@gO+v;(j^WFFY>>DoD^T4(JZsW(_)0*1D%^fK-&^I1y85!(dY0Yz z&o0j!z)yiN{&z0{14LUmVfEKuhiA(|lP4*F4`E5JIANRguj9@|(o`%0T%)FR#b$EC zIbINteR9khNLY*JA$qgzURxOw8vOoQ;)VQe6ww)&3s6Cp_kpEzFR;5Zwqj42oU2Ca7%j@YX)rdp|d4cY&Y@>{Jx! zAwcfT_(J<Ub8n|J-A~|GmfBb5~6nRe|s@uQeFKcRWRgPOy>NZ?^}5O+WL+e$fwc znR>3pW)wv&xoQc7+Nm zZLm7!J_p;6NHBE3IX{2b)`q`#Cs640(ve1LKiJtB#!QHFv1KXo6(BulSo`H}^Se}X zw3i?K@a=!52i?s$a(meBah+0S2|M@Nja7PsEdPB;zBeP$@gc>?n{F$hL*kxi+H{75 zs{u5o=}o{k52NyUNL9HlwzZAVe=K)xZf}$JkQwNMd`i*l z3`RRG4b4uQ=(Ymf(PvA(|8xm@!VT1mXo!UVcQ<865bUgKSx;%>(MlPIet$&gBN7nf#T8YMuP-oB2<9 zOpx={uADtF%paONN}4d4UMI`WXQyOPc?P6J>N&KxPx)^QvWEZ(b@zidRa19G`@kaU zzjks3)HvVzYQ-y=t9%183xh2?z2Ll7dSL)EfOJd(Bp{*WyBm)OL2DP%`EI*-Pfe{a zw8aIIWhExw3Zms(X^+9@1jE{L2D#M(o?{d#W?(?TLVSN$bLmgcBqT(JZtJrI;x_(9 zylKj?gg!IEEEVIYil_X4HRC=eH8{9P-QENGjH%Z8hQB=pf+|W&Vo%j1?!4yUC zADVlY&N0+t#D`G*d(Mk}4|_p(+=l0AMoNroC|i?y-FtXg=e$GZIh1Y#LtsuaJNwzAuUmm6aaVqvc*#1o7N$q3)%Q{Mb5+zyNkrJOeDRAJDO+%izc4zQ z?bKW7%04hU*#mh)Llzwx z4C^;j-KZYnO>;%B>@!b!z~ez&X1zdx&^Vawe1Q+Od`)t=mvo_=P@16Lr}kS zn;@BCj+2Rr#C5}s{kY0`m5CdMg!7T%)9r|k*tjc~G;?YimJ;Rul9Y^jb~Jq3G|Gsm z5pUTwf&W?V&q%(xw1kXE@54&MhN*IIk}M=L_&noRGba+Z15%v;&N4C-K^Jj@m?zJh z8?(L9TeJGVTXS9R^Tbk?h+}t@wVD&Eji6Wm#?kvrbJ?n`bo0D(JLHK1ga8YhzRP7! z;hjDs#jjQWs|E^FEC|LD!LVqogy^9kw5JU|qz6*%XFT-^p?zlCu15Ah7Txlkn_y&r z1*UleK=tD`!;|iV<>zB`zu$_NmO+}+4uE)uIROz7*-hK}o{l$szt-0_(8~dF`t$Y5 zP~&;JxG5uAF`QSkV)wJ*(pxdK>!k=mfoixF_CV1_k@2U&CFdsn&efw+zdt^0_hFf3 zC85WDf?N#Jv3+Wl_mF9NSPmtr+Vl^w`v;V8N#chmkoIY~pwr~q+OE+8l7Uc6`zenM z_TEG2)EMHCp_=JU{nt#8uMSFfIvZEi37~Nds`HJo%Nkcfd?iZF&=BL`0BEJDV?S#x zGNYG}JMceG_qu)mTDaHsPKxtucnd?pseK1_A85wl)gLCl_7L(kJ6-nlL!KXQisH5~>lpyly^ zq3%n_2;#W&_qM+>o13*n$6|_8RY94fXGrcqZp}~>Ss|oZ(xFX9oLfMEfQ-xlBW`3# zhxflrHak1(wDjy^%DBK56vRnM`OkU4hum-bFeblx;Na=u(JB6-;|b7n3wq^TCyl)l zlN{ZM-1Nh%_%WH{os^PIePF8U=YMHP3WN-qgbtRL@H>sZdY6v$9Ri#i!#Do|33Bft zP4(5-YgA*ZedQ+s+{QUSf5}yIOY@a?(7B-O%L4*#*n~jvZ3qv~7+oFV`6#L*ZbZ~a z>hl=>Nh+@w^>rVepvMJo47CVZhx3iBK%~G+rP%hBugX?7Tl4PG3k`b}uJ!I9L`S%H z9Pm^_X@A!N5s93C=HJFiqaV5;j|`BKDGjx{Ev46>$-0@jC7oPaa8VIsUA@o?f3OGY zbTg~`b6xJEtBOa(Axq0>Mw*L1--EPF#b|`ylVpg+#&me#_;LKBl9)38bLtc7>6cnVD41@M6`nIGdLt z971HO;kT$`Z{y3d+BN){Dv*Fb-!$bXR|NTOWm{h0i(a(AqBk}ePyE`ekbt2eS42to zAUy;w0wjQ>8FV6F1|0bK_=lmPp)dYY(iw}-nmEN!|v3ipXZSa ze>a7A_u}z$kde{nAW0wAV&)~q<0>r7Z?7cY5exWMs{G_*BH?Muv>}vf#dS>0#|MRJ z7TG;lW@FJNh5{-qdN7Lb2UgI#DmY_2P;Ze&TZ2ld&clb~UTEo?eKh48b(SQ9Y%w3P zSxS6RcJXC?x40Ka>@%lmicLM%%*+fBiWWnmQnFzu)&1)(#p*W3B5q_FVCpM54=G;f zx=X}aSbznRaEB)c+BqfJ~mF%4UUwD#AOT) z>z&}%fL<5RXj8ftY{Di?!oAwV#3g`00ras<%dY_~d2fYvVE}Hk?#RuGPj`HL{OcaU zH5*RS57c|ziqKb+#~tP1cHC!m-f|OO@(XFR8V&?%LZ3Ej@B!c6OkJ#IHj)%%X466H z=#?j21s5~?C$ddh2ys$hS-(_N41w*00#TK%t!-y7DB|Txe>GxL2R{cWBp4NYbp4zJ zR7*ceG9W=d^w0Xs%3Ez#1o+zjyu3|7r6>rdfPgd!$nQ-MUpc1zj5@*i3PO)GWszpL zk_i?zeJ;yqH{L2qobvo+$>fLBMktm=Q$4LHbKIWr0sskRDeUZD<#2QNx?ikqYYe18 zK*%03Q&h#(Au;yP6YBiekXX4>M0Q6ps}-48{APPuXb|{?;MNV$?E4|hP}cofvS`LR zC(||6%aRhAIUg8Y8r62zuOLZkyqw4IW0>>9wCA_Z?!29cy|Kpdp`A|TK^gS9jEvTu z+`JXG*O{X4%(V=n3kr6PYN&+W?wzA{uqpIdl1%!E)VRG55nL;!Gwm-x$HgNS33 z#da}4_k$PT_xZ^077agr-0sCtOc~! zyxAK=Ev*yFrKst_uUVFqt z=1t|V`GvGUd-OJ%Vlr~5yDtHHud_(Z|6){FrLe>5m-O@8?*X*16jvn>#3k!V(CmNW z$?e4?^NKe2K}BVg}-ri+oR_QsNQx{v@ue|%isbT#zY_}%!$dr3C!syi%6C%)fS z_umZfW(vB>_{B9Am_3!Z97N|i7sOh)eTVdo7t{In-XOQVJDWyFN8e32w&OR7_}pWS z+Y4!Og`>eAG>BW@*1q z<58fy3Y2qoeaP>)@PS_z70Zwis-v1yz z-rxh5+LeZq;_~MP1~*+?RvIziZfu++^^c838KVHw{BkLN;q~w@zq!G!-nwuip}Gr= zxfKBMZSvZ?jQxYA=AhgWJ<;D>1O0BSM)rJn6ooupQ7093e!5Te6gW@?T+_G%w#PJN#KjWG)&FrGD+gG6EYRk7pKLR#AzK{k*#;`SU8Re^B1 zHBEYfaqmy8CNtWJBc;F0YwT21G_|(ijK$G~JqTbsJ;i*ffH>>6d#rF0njR3~{Sx#&Nq>S7 zch$-W;X+GPv&DJXzCzqGnY0X>?zyDl^~O*U?WnONX?qX41EU!2BMK@|G}FqVaEuWm z54^jtj|-HaaD#VxwNg_Oq&ZrBq`PH*EBK9N-MODxd=8<*?cmIFp*nw2D9%r zkLO7~4q~h0AP`NKFBPLnxwg{F7*;NyO|7#_iwp%5JVo+@?eOac0=)nFwWt zN|&L(SkcVf<6DsEo%^ngg9f-!Jn#SI$IrmXN+gV&ba|9bsIx z&#z;rWeZh}M^_5(+zL|ZxRwMh_o{3rj`LiB64hjTx*80!aQbdaf7Uj#VTZ^{(WPn# z{I#}gLtu}8dnjwCor@jZbnAn}s=fY^OJK&{sk7V_apb&Hv4#B|3Lwru&w-knnlpHc zU&@WjQnpk%@gDhzEqMF7Pd8PnmQ`CVo2+d}U-JdX$S}SaI|~o2GY)TdtZGmBo0ljK z1c}OnLlM%omEnDKFj4>~_f zhdgt3#gm$xrz_1SIGPF+(oqLd7sSf#yyyEIjqo@??72uS6A zlyc?kSNBWVe)0 zU<3d$S7-*Q=VK=@g2;^4FiXTuZm+)|2b7OSCry<jykwF#eK2d zvbDtmzFqDYug5(~Plz$^OAWunHO|I8hk>XDX(z;H!E_~RpoCXFVjlFOh_#02~en|$E|R!u`(_m^Ci zx$V?8o3(dpfyJe#N2KvsVk^u6Y4&rLBpE#OqA>LqH{nd@ z6j7QjlttjtaVj{SLW%)<@HL>7L4zP{-!dvtFMzwZKCVs&EL>QdCo#J&U|>a!VGfPU zb4}!ex_WVW0y$MV_izdyytYKyX2<7|V0KEu!K}sa%eMbvV>xsam=r%yKrSX6v)+NM zoq?wxzeURd50Mu-OF+#dAt4H&ZFb9gC{U~d5`HcK6{LMRi#vkI*J84D;9s4D?MX?Q zZqr2BUu+J3aaD{}Ya2AFHUa6tCz(QgyV|4Qae3Q2Jj4Qy+8n?8{Y+^_OXN@~)Dg{r zCeHT*kehUyo0~7xT&MU*J`aQd3dqc&DF2ZJNzeF+2IFn1Rv_NKxJrX_`y%mv*5omd*50DVH}HA}m#2WA>c0dhknHhXgQq*@YBjEImBXV|@t!7sn*UW|>kbx%|J<^U9V%=cFnZyH)< z0IG@HX<9kalDy zbWp+YKmhMUzD5tjgYxV7HvG;3&cObr1bG7MAQ&7}gg{!_Zh}ZRiO8}m3pTQ4*5bMI zws-Zpr6rK-W40P{0-Vi&^YIApI0UPQL!I&F0|HnkL4{mwbEzY{1f5)D4hR?5jRr+!6XYt$4IQw%O)n0q8?#a*M z%F6eepC8_c1csWMm9w_RGD}|5L6y_){Z7r^3inw9(5zFXmBuae$)K8KE z1eSfY8Y?CtL1#X%Tw{k{tOu5e@( zLp}kO=%Z3q06e%|El|+b!3|=+DvxMoqU!pIn3>v^8<8ya%m% zO8d5WQNOmNpjTy1<}|{{LGZ|?CDPxzlnPHdjxm~WE&eAeC63O91m&I+km)tpJzxP- zSpx7p=e%Q`zKOH4>Jg&L2ibA1GsWE>he_M683-#Z20sxyFV-+< zNq(OA`a9w(e;Am7lNJBP?-E8{@(Bp!BlVB&87X06hDf>>EwE9{WlR;A{W7C{0!N*r>sVAiJR-%*sm{IceQGd3 z7>Y#=*>@EIAInCJyM;i!fJRSIwCSol4&Q`W)x+Wv3nT*qFzR%v0DqGxC-?Cg#z7s)^M z?9roOgb%rZL#q>Ls;EZz0xaY+1%=vsHb98o=_?M(w@y#zNlL(U<>;ZI*Q0(2n_+B> zXF<>Xs)dg}S=-s&8-()E|ClAGdqsZMzH5KNT>jqr{iUz#tCRt3CEpfhb8sDbNd3ED zPPj#I@DAF|l}(V_ry9!1$$k4Co)EkPpm%7dNl-FyBt;}esH zKaMaqOY39JN=VP0GAwRe@3 z?_I}s3<=HnK7a5u^<7mQv)+9an_!%9nfnB^!QtGsURSohV$!BUex4%fF$?}P!WYOy zklr{89piYSqW~2kaUzT@aW0@Vgge4|X{V_ELIp zp2-bC+I=&u!n$(H%U|Vd_?smRS5~j~P>e}Shny{k6;eycf~`_FV4od->Rkt8eU(I- zkp<7Q5QkwvAP~1okj}CGvE*hy+gji4p6#hZJpttqR48GVE3K%Qn6wwEcevaj zF1ypL?>b=)X004FvpstBY)aofEzAEZ$pTevbL?|he3{4(EU2FU$$sLl8fW5blDBg9zQ%z8Y}2^v%Q z7&JKc%Bu+?w0RKy8G5ZntDisRmn8Js{#nA<%AS-Jd+?BOQS9}6bGN(CpY7m>p$(*V zNd;h(7Gh1!(q?-)PM&5&Y1ue;wsG(6!sXJKkySxfGP_ZU`G6J+Kflb)Gn58c8c-5< zd^kzP?zp`XF~BJ-Np}mZMvUPth_k-ybgJ7_Tm>O2Kn0>(ae z0$q008+9+Q;MXFTuQar@5MQtGfU%jl^ZkU@4CtQA33$&A^g z=w$>4r-#zBrdxa3;z-w56S>(6QR17MZG)n4o}Bo^#PWgyv!tXXo5h8;+2&)*q~!E2 z6BU(F8JMaTA3v%;?G$s!_gfozCiHOU{!cq|K4#a#Dmvf2Cf5$e%H)xSqusG-7Wd&S z18NQW`Jk`e-O@b)4<0^LL?~vt#4{@G&&zb>_Ed)k2b1Rt_K~T&R%^2r@&9Zes_h7T ztK$9opuAz~K`c&D#TQ4I>(7h#e)%hh8?eM2cwIW4_iRLz+ zBCC_C=eixn3K_9ux}US29)H+5*H%^@Y37_~*J;*QNcQpYzJq&L1!`DAF6NTT7)6us zY%0ql%<^l1ItEW7L(wwJIYRtoGmyPf&(L_PF|ysUfyl!WOdcJtS>HK7Slwwfgyu?N zHMBkkm+KT&-O!5TWOsl<31BL@xVpR=7^G#|`v#&rn>u$p2QkOFYi$Dq19KcfFQX1_ zv$#Em@eQ2Rmj_lNx|*6r(vj^dA$nXR7PZVmLefl`yx{EaF(vU@vMw6l{ey$tx@3%WzCsUHr|Ri-zt`+H7!cS!^PHq@e)oX`?gnT zR$R!nq}Ltd5yXys%)~P>Ja1u7wj~Kx`c|(g`&g5Ro=Y$7<$*yuBFCdUKh%40UK!hWg;!zBt*VqxOPkDKd-H>Txv76k@HMo|aT(w~-TGRE`hnknDXq5Y#8c-@2ZLNVx>X4wRx>Jt{EoqwYxieqPZ z`g6eL87l*yhMZhq&-Ci*!*M$1CdD0Zy?oC-aT$e4KKo)H^J;D0m0&51xKEU^$htx6 z0ls|{N~>7!tMOuc8|ce%+|*9LzMdA8cYJ)T+vpJuB8SR=%U_AJwV!|M;!%sfKulGr zC`O}}L%3>_EhRDkp4la%P|V;0^y;)!10Mb-J{RMgb`$`@Ak^IHu- zAP{0KugK4>$s=q`85$aj%j<0W;-zQ7^wh(i*v9{A0en!q`B`l~6!r@C{28HlDRSF< zQM@sO3RY8k^^#g2N}BlNHr`m&_xHEnemvh~R0ioY1Edpxq0DijklU@*c{95R9PMo7}_#-Q(uv_M_yH+F}X25>YmYD?xD7k z5p-q6L@pX$QeLhOnqh=Vb`E*0F5Jl6xolF_G_+8U2YnVbO4bJgmHTp?&(F^h2Qyma1OD?QyTk6z&ebKVP6`3xmbGp8@YMSbJ8KNX zzMw=dy)$nR6SCv6_|3x8*mzl{UbfG#?Z(ZUiq}PSfH?pdr1yN7SJT6U+Su{CcWL(9@=4*WV>h)`G4Z+zq+s{*%;}a9sh)MR@X7|YVK|$`5GjMXE zw?0M4BQh}U>MjpvhrGN()V&Z+;>hmegT#b{itX}piz!by9*A4@>KPtAuHQ)?pPCw2 zb|Pix1weUK#ksN`%-^jKxCBjuJ2ai0=iP>y-~%@G{WkS1LJSjdKI;L0(C+z-u4gxn zYb3T7t4SY`woAun3aHVuXKybqE?#Nio)f$jC_-6oACkFnhvjYQQGK`ZAxKJ2PVJfc z6m8?2?>eg z%{a5x%F0Sjhf37aXETR+DhdkLz`$!w%<;L!NM8}n6pY_NQNO{c(20qOK8sp12~IFF zWMX6_=g*%WWlhr%#YUTY#i8Tn3wd;73CO*Ez3N_h z=#r_chFN2M0=mUk*O+w#DE9i8>5kn5J7-f{vrI!t6e-)?ErSS2G29#RzusSf9c7eR z)>~)rC}kH7i+f9TG%XYK5A9zT4o%7{%Kg%Vib1nV`s^3@0l4NAMSU5{a5fK%>dshO zqxL!N{_Or6>L~j7d~eHQIKAZK$eVd&*ll6A4zhC|_x*CjabK7#ugmw5WC1}uflDOI zWtCrHfNoR6{CTRV^`|SZ;cM%Ki;xP3=s8W)!l}sRdI=ogmL^~J?v%o?MB$e&smWSc z;L2lE>L5MN17i17)z!^xs5YrDic3oNbfK#0*bbb-0R&3%Xi2iVBhn- zmjZ3Yg`F>6nCburUQ()q+TAzoIM&qBVQzs5h}t6j!ep@UUQQjUDG6LDxZ!G^{Ay7$ z$`>=&(>>8;BhGXxJ~Q(0NUo{Xqq!G1>!Ao5guO}%$08tKac}$j_1Rqt{!X_+dgf|b z0w^LSF)>wA&|Un7kbN7$9L&G@whle~+=F1h>2@-DpI1-=^UG|;>$d4MCe~1!_9*?l zcJ!#p`t_La6WVX*O$ndiB9(IHf+9bPspC;9$L^<*bnQ#d%t{-;5%tGC%G2zjCSt7rcy(TO8%6&&_ z9Tx*|@bC_%J0@&27TYfq6V0x=JzSSX9NE*`!d+SdVXE>^gc2G?owfLt{jX<_(vf zvluL=2itTDIp>?*1;m(wuiTq%ceI_dDOoH4U6Szrb+8|iVx8{ekobCcT@bnw7d!%gYj;wb0hn4_Zcecz7cs&})TS%R##- zq=3F>h@tPg&guDinI|+cS-|QuXgjx+9T@n^STTaS&ivfdFz_8HdIKBVR~_;lZ0tAc z)AaX#o!O{F2i74E564bPe!6MO2&*q!oF34$Vqv9URr_vMEk`K5RMs#rq-SOoQ4pD% zCF8$K-_zawTZ@N7b>rRT)=XLBeHR-mtC9X}%~YiS$_X~Wa8nKTdKw=Cl?w|Qz)xDS z1@vlf*_mLT3d5;I_C|Wem8*FBLNHP@OY{0^j&Xx*asTLhMtWt}RKm^N6X~|`an(vv zVZyK%J?@C2G!nzS?QJ$95+W8}HvPE!_qXB_*?@gi%-|=5fv=1B$uq11TrL1Qr2x;( z><~r7#HcI=Sj%XXpPl)vudn;iSX1oX^py@#(O~AT4m&&A`CR_9MxVS8i?Dn8Moq z&zX67)q$d8Yoe^t`HH@zPVNIAooO}}WvPW_?Wy&~&&b5g%)-`IeM~GY=EsjEvBSf0 zu(2mBvj=$^TnUWjv$8*P52{D_A&3EV0+p9`|{X|2c9iI4(cR z5+rz;$wkdRfGTT3Lc)TR6LcvU;t~a*d7}hf*By-8w{C5&C~%C$P{D|(s7%RyK?J6f z$v&x|UAx`@i=H}i3gCFD+N4LZ3%)AZ7=?hHvVWVU*KAv1MMp=6OblhkV1@t-8=L;> zYf49)M6`Rq@qTwsYVG&$n?w((Ol|a9tjA%23QkxL++4!v%_awvPRTV2g9ytl39-n|_;(Wo>`Jmnbu z=MR^d*Y%$JJYNc;WiN0%elOV;mF3?rqP=u@@uI$Z-U*t;>~lF`S?>;ejSi(H*z`&+ zZ$C{+N!dI0@9pXFx_Dh%4}h;fM`U=+LDQ@FPDv?3QqqxaVa37%`rq)1_KrIr3-93?1k6NfRxBD`U0wNX$NBQ@ z6omV%RuI%%_09xK9wJSapWyM|*>ypK>&L9G>Z#-V;kv2){ax5dS37(QV1W z#`~h9{X%ju%RN^$-al}Z5?Ct1tb4#x^|dACu91ma+e5fm58vKjiu*(qrmqnOXsbH2 zzQ<75#N;H4fPn1&{!nryxP&4bfx&1voIL|gAf~2jtA)_@kuidjWL`tP3QcL*-XDOV zI{9;7e6bg~151pn9)=%G7umbxW?WIYB^g zJ5{baoYfY^C23|>@R&|4P$fA#+p+S2_vR-s2f_MP!pBc7H0?%PwM2G$dqD;*9;7=@ z*oh-w3tOjGm$$ag)m5JRBdC8^17lfZzKAGDC`yxZbkRIIM`l2yP-IgT8D~g^!_$S% z&Q8LOhSnw=%Uz9cy3JwwtBUgS$l@F8s(N~5dvleAD0#C%Ehg8@#l*yMi$%*uhxzEq z{CKxNIVk>|wA)D58TLmrZY|r4v@qnH@6{CsIq$S@{jYo zV0k_m9Q=YxG?gjv8nUWmeb&?%7#QlYGi!Yd`W{Tj0r2E_cU8xEsI6aTtRZvv+})7| z=GId5lz>uMU*D8<^5o=J)6)P&iIy{hmnfa*s!tpHlMC)rv|b<7u=l#9WCxBA=E15> zeGxEx-@0tafR>e&#}x)Gy7@AEnzfNJG29vz08Jm9_yJvB!dYPG&Un=Zw z%G$++6F~=`mj6?p!?!+2H_b1#Gj`NTMpNYm>?Ma;gI%KwrjsBrIjz}q?>`!g@@6h6 zkyk0T&ZG&@-Wu&}1}1fp(;$y$Sh)8KKfwLe6C4>0dJaC(Kw1dU6c-T*Nm)U`^q0o; zmSnI+Au$d>egtZFM}zlGkG}dh+71lE>V1dB*GUL}FMYeQ4kvjcI(N#@1;Ur{3cd1` zmTv1c>@Gse?U|A#r{mqE(v~Zy1Q6*7+fSd=y0{!BCS{gw+rdfv%Sy{8+Vnnw@Or#Bjb}2+4nNBm0Ph{k2vi<5b+xAY-cuokZGi@PEL-!07M)sV-^q z{^C-sgH}gVvoxB5-|F0B7#Yq1fI7}y`|=GnRn_hK+4xA`q|boQrVhMte7)FiEdwd7 z*r7F;^-F}{803;XT0lSXSM2TvATp@4 z9CoNMYMdnGu&I8a(=POBZQ-D{VsA_fVtKfs=<-8Hj#ZRR|K0QFMUF4vB&j#qcbZTp zettYNDDA;1v#wD0h!0V`@BQ$@q|(xE*LjT!G#}N>47T?cF0xO4Yt_%>a!H&b{(5?P zyWSVYp;p{?Ne;sK5->u_StsEzYw@S$PC8$ix}H`Ufagzmd0)MI_pYbOou-WEXxn@7 zMAgV>Z*-`xqSvn9!PBu<}H zwbtEi&Qz#MelLrdf6j053V_+qk@mW^K1n5K2A|GrU7vhKq=Vd$hK`Ok&Qwbyt;8o_ z4Tv1r-x~1S&n+F+7UVoKLO;6?dzH8@F9wDsiWwqFezzWSI_XWJybaIhO_E{+pEEOy z5m8dw;Z#hHj~8z%v+fP~@xu^KF-?w(hW@ABHxyI3U;oz4@nVHc+6CA(BZj&9N4+rtHZO_lhxgPm*qrZFn z4Iu2iMj&^od2`m2Vz~kX1Ea}>%GZgUUs(Z1PzG&7xO(e$i2JO)6KM^-re_uudwrgX&D8s_{O8K>@NrXCk4PE~uHn7_+mT3(f&Ch+trLFV0_| z7%}`dU&-5sKhgP`9J{%6d^{^XVC#1e0=4K1E8ZZapkM;02f7N<3gtGCkN{gi-RUDw z>r&|*^G2=I8`M;^>=hl1Na}UXX!NkNYtrTzG8|(7s7eS;}o>u}%72t15p-{);24FwH`&GeE=WUM` zdHINp%Q?{5Ro&}F0nWjphR%!&Ze>Hi#B{^tI8}v`65LW&MMVYI)+4Hp*HWXuL*o2^ z(?!&1r7N~A8v#;n#AVqxI{h1IK;o^pv9;ANI?E|^cs*9sE2Z-6xVvIuF-oD*zQKJL zsVD)G8zb<8N{7Mb=;o!)vJ3;u!`W^bcO}TzY6gKR9U&n`5MbpvMg!myaw-Du&Xr>U zWF*dIpf&LRrqy%IXG>4uhR@5In`g)StLu~AQsRfnM?`Am(NP@K=vI(B7x$07yCk#6 z@jlu~u~6sLZ?QPOPiCY5@}?U4`g28G`XECR$sQ+?KJOr)L1r5RV*ErsXWYGB7!Z=dgV*s3wqnN9%G?AhTN zN=fS)!`?9rq#!?YieGQvi9&O>khhhC!^4x?2L$k;sSuu_xNZ|`XCnZVtw2K%@f3iz zp9l&T51OL0su0IJkQ=g1U%pg6gp`++fy|0SO9Q(Qj@}40?i}k&VM=@=Vq&)ytGA{K zcKV;rkUMbhz^*g*{-OS@;QLhm_;C1*bP{s%QUE4kt@G8>GE{#rAZCPzuW4p|K&yOG zqvKR!K5*C`q=$RqK0x_3YJj>dneo57x!7p%uWP8zS$czcJB+jff)n#5LxwWL#MC7E z{BvDF@Y3y(cP1t#(JX<0NbK+Hn*{q|w#ikNDHg9c2oR)o=7&Z6j#`V)%)uBk@M^`z z#nrI0ivof~|H@jczNhTEHLrL;(p(DbGb=+=7%+|+&MM)^o#F8wMF~V#)1jW|b&skVxp%qM$^)xsM<3;7y0eW=@BinO zxdS*DRyN+X57eupvb!3}%1igf&~)G1Ra}f`|2+yqi2@R#gvlyU-;fp*S5&NALnV6aa0y5BNlVkn_#wy~LjsEkae;J})UmX8NP(4Fi5Ia@E8F65?x`YXF~?#%4$#c;a+`RfQ- zG33LlE=Y%$YnB0qMMF(39|TUPr>D#y$^gcZ=)r@$;P2EdENsduDsjV?U|G6*dYJk7 zUxQ}5fC*9s1l90yP>_^a?F_vfXi8aHS{k37o&CV~NcqjP9DpJw;`SWi* zh%a9RO`8Eb1F}Rtwm{Gl5#a*u1tgu?t5;FL>k{6(m$OyMqM@G1Dj{J6An9N>nBnlR zm+ajeZv`E6*oY0hMuE2da13d$H&Nm13Buo(@yOlze6beK-vtRuz*xo6+s}S^E^&F3 zZ%qT-Vmg;|4aniql}+d?9|EBT`e6isS2V_d;j}{)Y^&-;V78;l#d@YeePvMlxkI(b z-mJA9&m;ewo@k1_<2F3fkChlVe??CLPUp;P_jZvxSTwZ$fL1D$1+dGeG{ArB?yo*Y zYdFra(ImfzN*fw_QfUYY&4K}x;^%k`__bFs-3rZ2L5Egm2q^`{ z=Sdc}KX%xn-UsT(J1HBk6aY%H56o#h({0}|z6G83g-@cWWmb=9;3COOm z581p2-++)N`%#}xljB&?-6DSrOY<~CCI%*oWeKn`K-5|a$js6*sFvA_0##L2KBtj4 zL~FiSxBq7YQ)b?Qtb8F_CH}70;ZOl|IqItVcDEpbAkjrcxK@^zCkgO7+7^KAN^iaN z^_$FzQhfW_7Vi4S+RON-fYY)!sE~;!r<0T4jx!T>7=tYJX9oZ^PX@i*H`;IVN;GC{ zWzaH#qDK46nN;!9HMOYUfK#i`X)B#UkuQpUOC171lSdo;>?}EOia$)MpFI6Vc886fT?1@8kmBI=`;Ohy zAkyGC_N`S^r$TeJ14M8=2S0wiRAXJ9{?fBLIXP(q0*D?&^Q^FGbImUY8>;Ogf0~Mt zSuKMx(rty8FV(Lxexv0eP$^K^{;$`jD*AEP1jc~A1U!Tj6B_8FO0NNO{;}-zgoQRW#2E*`29X0L^`SK=Z>Vrp-AyUlHvW zmp1`Awr(AAl!kDbE*eHt2pGl#d%$b`ixAi@6?7!guUbb)5utv$Sh6X26`Q?be80w>;t-888>DbU8!{Ghd3I6GB^%>|_aFqY6!3uaK zfMAit{-)%S0JXcgM4MAF4Hb*xLc=k>if>FHm9>|ykPpE}Z&M$O+pGa@oFU95coR07rIo`wQc^avvN z;<>tnY4+JM0-89k4j>yvZUqoe$`j7WPP<3Pc%ZmG!HTkRoI!dr4W@*kpxXojZaU z^Y(2-dF`-4){R%!|3x|* z`Qd}Ii+t&nDLp+sItsPU^7Voi7rz7+)-VO62S7VG^@SJG{0)yPD=LnUiSN$0^a8e< z2cZXYe7+%V&PML+d$|ApW?x5xaNdGbQsN+ih3|K09I!Z48_%6=uPpUhUS7tzbLXR( z!$d|xW+B+;r{^LmAgy80)FcEt%!0Jmix(^$l^Fny)maR(j5*JjT@Vqko$G5VFST7l z>HB^O&g9F+4~fG?0kf-sAGV$3QE_1%VtouEU}bIXFKD{q{Y4N9JG%<_$%mc+ojYtq zCGDK2{`(psF~VrEAK?Gv#!2fU!^44B;2z|`JUF1Z=?yHKM8%29Lng&IdbGa->^D%S zQ1?0$9L(79=g(KtuQ&2QQoWbnuBOp32F8|4gHw5)SUuZd0}B0U>Li?V*fM^ zgUKJ>cK@?FOPey_zVp#-lfcQ4wj3WD?O~c4>grZMryl~^|NqhUo?%UGTi9r@p`suv zAbl%MrS}fHQ4nb=y#v?O=Nea_iu z-*bQ5AK#bf3BrChVXe959OE7Dc*htkB^VGuuApm-0WZ>83%Fd$XFPmzawdSf0f^QJWWJVnPTOluX1!{8d>{Cw zXV0H8UApuI6uE;n?{r1HZThYOKJ*6p`?9WbXl6#w-9F&=8rs)E^%1Wo47M|8HS1sB z9D(v(TBqT#5;9Uf{-O<_+20o;H$OK&f7jD@2Jc{NYkPXruf6XcYWm;=#LBbtP%-Fa z_opL&xF-Wu58ymTN1Gggb-AbMQF7N{d{pfp_WjpQs^R>{%|T*h{<-`A|01d@zojUD zf7T6_Taa^q{|LSd6L|$r_&;8j=l<_Oy#Het)X>A#SW>((gl2jTO}(_#O( zBgp?3B6XkvO;7%Mg?bDPN&kj%4VeHUD+I}Dq+8Yy9k)}r$I9(9m!9Cg2iy<_&d%EQ z40O9KF5_FJDk;R5yo;a%$-9OIm_RHwdX%d^_jf$eP^mgjdJF1OzYOH)4RwmDOpG?k z=LeU#zbkH7)E%fbP3rjrIHrEk zUqHR`ZFTjl;va+T88qUya1DnO$tt)){e)oz@>3R%qQ@=j?Sy49{r&vh#{(A=WVdHv zP}DMruSR%?zB}&J@F0qm5|>>=s5F(uxcmHd{SbGlQs14wR)qRhL2L5+VGq|c%}4i3 z#6y0(`j{?vp8DT!7~eR4gZd5i5Pt60gmJD(z_2gpPy*&wUZq7 zkmI;6#PO?8Azf(WM{^`q?SIoV}FDHtH%_{^I1@yju zzj;^puEBm-DBz*E@WUwCFO?&~R@9U;G2_gN>f6tG@p=XT13JQIW*(4gT_QF%Hki1W z^MMX#35_(4#BO{pu7?KgED!8()-Z8g%pM%%-NvJ9T2|=oIcj_f10WG<2z_MyAokey zYI=V1!WU+w;<%T&73KrzwFdr32wQSSj!Ion#jX$#Lc5^rwGJ3;z{mmJrtmWc4<0-& zn9K#%#mFcobh1KCTH5EXrtV&GShMF8|idDguI0G%dG7+iqJL^gG5^K0&&7bC& z>W3w)isumO@J18K`uH({_<)%^o6%DTyLu3vtJ z|8gvwtX;NaXy{FB73tBsQjsN6lYzX5P_NvmaZ@n@x!JgEkV;YBSdiQ&uoHroVOw9O zsY#S5A9JVGTsm(wH`iLSs&Ch+z?oiR(Ah1{9=QrvbY9RZ%)n{bWy{2O2q8L5A+0L3 zwB8C50#CW-ux2mypyNp08iA5p9AM(`ioEq}B6Y8zv@XVPF5jmb7aQx?)-#c_2eQe5 zyOfD(ANHhf^NPh(yqmGFZiZv%le=+T0aHCj%1z+$-Z0jnd-(5X?LL@?C~zCt2WVCS zU)vciW(vq2AZXF_H2Qqdso%SpAn%3@g!ya>b7Q967i49}ADyP0Wlbv{8M&m{pVMvb zGi{4VW;x%L$y`XohVE;hK; zB210Pv%h`w9Ps7zaLo+dw+dWJf#rccI{2RV^ERHRWAAVx6!+Y0twoj#?F_c3q$nx+ z+98h3?dHvou2m~4b>v}MXe<(>_0t0;=hSx*;0CZ(LzI260kB!`jx+ z)*eFzm;FKJ*ecH%crq7ksfw8hG!>tt z(hIgGWVzWlRs3;$)=DU-vQ}K#RHU0XffA$*82U9Q(ei=@8OMQ6US>NlnPJk#>?on(HbTRb7ek>T+rs++czOiZ^X1ZNB}qMGW12&l z;#waUA9M#CjxEO!2?CvF|8pV*swg8mFiwQ_%^>EVtOg-~cdhy6wIPLn0|zP`bpECo zF}{~qUa%izukO&Pgy^#m3-x1TCq+A0M-H98qjFrv6l1!&oGtxFeOjwv2jwuwrqtVJ zheH-c;Idq+*4eP*Dr6MQceg72VDZRVZM^|vq{v)DY~4*pRV+Dg{8 z^ah`T$5GakLnqhLf8Uf*NP()dcM`Aty?(f8gPF573@FUXcMGb_)=5W%ceiw`$(@J_ zl`Se5_cr_+Cf-Owdf~XN_klt&j>-%Hr@HWtcJ^2cU|O4koG*Dhw&4=iWOw_# zW`Fa#b(D`q0u7&IQ>(DL$#Pn0noB~1>0w<-?YD0~zxU&oBKg= z+0^89aa~{{i0Y$Us9A29D&;*d)pm}R*_uZZsP-Q4?1{WopLgZT4?fLM8MsKz?h#9= zO$(iLC8)G?v>^+FJ%?!Bej?*qFrf(M)ZbjPL8bjbu(%k5cKZdIZSrcm)oy>hzPv-P zjHH@mpw&r8jkD=u7Z3irT7_lS>=7#r8u}5dLhibFQJJ_raFK2144eAx+Y3KOS@4tz zznb378ebB>W{>;aho_|IJ-{yGpB}&vpgIhBt?cywJXfF>bk z$C6?HqGlYRN{7}x`@3;Qhh@XbxYMD+q-g=`2|kRp5mAvcKES6*r$R9U`Q^AWI~VI3 z)U^w38G>`t=x&@RBbLF-hQ#X$S zo6%z(N;Uk2g&QXJK!X(J+p$`4SUZtizh;c{4^ia_XOJ;tML6a#6-N#|k^T{dXxM%V zP1&q?6PfN34a7GYp))t@#BuVLpk9wtB8Gw9P&-X5G|Hn69)oMaWe(QHLI=P*erV=U z@{vY5dU1gNT78gg>>kLj`UJtEhmIN-nYu+03ng;`LJ%lRuPVlKF4seDsA~4yeMVGX zV*$|3R_LI6sC26}4Y##*fgx~$nQDX+cYXc~7Sp3%T+nd(u`6y?5&YSx2#WBsxA+J! zQM&JvW~y9hR8G25o>~(uuJoB@SVQJy@BvSeS?Nu51))DCy{4|%+{j3Tua$dvy}|`! zt8E1g^3s6f5I!&mw;ItREQGzph7b9Or^2!$+ROKJD!_7K^ zk+IZbK#ZvQHO;$tRGULQ+U(KC%h2cM#XmjcBn{@H1#cyms1772O*5~uDg8R|jq?WR zUHxEuy!QFhkYr0)@K^KCa(;Mv!}$1YI+5z1IIu>j-g=AR&R`% z^Jy}u?nhA_EcI{>=%!|CUTA&NwZI70e`DixR%%8;QMoKgFuaL*Bh`)n;-%=^{s#ix z(k2^zq|__z=1BE^U{VSVM1M{!a<8?WQihEDpej1^41eMqYHY5Qo4 z1*Bv?wHC9Zf6lDTCZ(TtYas4(&*`VRnSl@BZDU9`QN-p%0dvmoNv8e10PE>3K@4F>j-`u2&T7)Xc!#S-o zCnqs_KzS3QLeQz(+JFZVNqXS^je*nX4j?I0-vD)F!IVg^P;X+v>NS?U_&cy)a0ieN zoV>X1-ke`=-wwOjlw67*k}iiDI~FIny1TzEu9^3=^y{7*gZ-f;Xp9(O=rme-9!t&z zV2p}YfXt!G{$ybhbdP{m-z5~Qj%RQ7$XhB0@?LtHd)z9xfZesKKrMz(leE7hlYuJ zMEKs^zj0keJR)C~`Qk-T-e_?DJ|h%`US)2L0`f)^*K*T3SJ@9RE9=0Cp9tI1K&#%C z-iB@1V|E$ux1d+IKDf#La2@k9D%JtM&6m*ei-nHm8bANom!Bh(9=C4G8f|+Sjye^^ zC?FGMEP7WbW~h4y+$R8e=;dm(-||M4(B=9Xu1X5Anv#Job2-oj2N()YYC83rITiiz z;pVHuz=OMx8o@$`iG10kIDv2edO1WiDD9<%M=6=+W`?Ao=Jt-ijLUxe_MtV@Alv-a zHN`f(FC6K-nQRQAIl}^!6UYGm?C6f4Eu@#h9+pzA4i$!6!izw^b>TzV**Ju2d3vow z$)8IGk6mH9J31euEn@) zKCL7?-mN~Km%7YF9L zGU-~$2mFOhPUM@rsmcgO#_6Kda+~f*9UWC86Dl=?)+kNgjhG+>wl6vxvA{BV5zij6Tajh#cD^lDEQ`_dy^E`guHaI6>O$H?^*>$!YrG)zUmz!f zU7~r^SJE1m!}!xH?<=}|>E1%FAHu-89()WC?B9t~IhbLO4FL&+B>>uS;+QAp3l)l7 zzkm#5hM6?}cP`##^>bt><5DtJj4(O#gYpbqrsTw{)1{H2j5LMY+d_}7kl#U-eRu)JB znxUx02IT`cp0{Ai1p_Y6e(VzXE7mXeQ%mh8_`54-%}7f#PD;Z>kPRHU&%-NkE^TaR z%(){cQom-Q+5d^Jvn;sf3Bo#X?Om>S_jUuS2uZn5jwr^zQ$f~8amj1PQQdzXX|fH9 z3Rp^EiNbYR2E4SC6sa@RRXr*_!9RNrXYLXI-Kof%RX*F0)drSwX`m4P9`kTECVr?dVz^mrCM4aWk+F`oq+=C|o`Lg2sczAAgb+sMF%Hhr{@nIw; z-RT$`2>XVM{Z2H*ynwq_-i<2@(hIk<@`((ctX8Ae-R9->{WQdH!P&{wWE%lhY6t2& zyso;>p9g1sT8$PypB}J(EeBP6-6vgGhTn{c*@VSqZ?jh{gu@9klR>7YRb=AmpP(%t zGp@Qsyn1^cQ|3qkDb;EmJ#J@nUUaYy7Hj~vMqGA(zXXX;`m!3Ep#j1KKAAeVI{EGQ z*IKvSTx-=pi2uH6x=^ah-YuLlkX_aF{rwJtd#lI9P!c;$j}xN7GBbo+zO;nrlUGB= zD(y!x&eSZu(PFx^aAuuz(F@zIMv8}vRiN#w3wHPSTN%$}jB!WABZHo5vf%knt65Kz&yeygPgw4rJ z0LY?jf_h!YtwOV?OExF(h6is!X}*rK$#zCH>3mH^bbPMvpd@7%$!qT;m4r}*S&=5p zRs+3AZgy1bDU<*11h_~zEug(g38*85p5mq`l1qo03#dR({l6FAW4dfThCnW?MFns>DqiX+Io5k@Pb zK(eQ&y8eOePHY0n;KAc8&?0aRFC!wZDdv`32eVP3W0$e7A|v}0-D^Midws9k^70}n``Vx3=^nZs(Z&@t;eNnOR!lOokM zn?%_s1Bouwzq8_}@&z1`U)VY*h=f4u%ctERJT$=NGW|zN(a7k5-8NnTtelI%o`mqh zNEp^6y3mMWI^?F$Zih|fFplvMa>POTUGcEQ~R_}NmjvQ{xA@1@x1cu zj7BY3^(wm-qQ_*aSFuhCMo9yD%9^4i{I#qxc+jpJAinnZH;F#2jsigwzSZW2)s6xI zAbyyB@v$}Fl8Wm&l7Eq6)u2&R(IOWi74Ev~HW;HMDddv%W6YSE@D~dKWo}`q!TxcOm zs(9~Orn_=ZKf2tdFqf73SGX?s4IQHX zo^fVfcL=O#DaVwww>X+5*g)AY*Gc;MvzLv7qq!j?q7*ITon|>wZG%- z?~k3vuISj<$bG-r&9;09lES>a{P7tXH~syuf_T9G@C*}6(mB||$=fY0Wo~FTRaK07 z5s%`*vDca%v-5KoSQ&LY6Ce4UUY6de^Wo>=iEp0GdY|~dKgZ{yu-PC9R+ErqE*H%E zZh4u*>~;k&Z*~BW(e*1=$~CpLj{b4=ODOE!2N58(S@$XU@Z-Vo6poqEgI^dq->@(^ zco70}^Wf$9_%!6rD=C%Zkl%9_Zr$pk2j9-d&RZ}*o}7O8`~UgJmv@_QkA(fT>i_tP zyZoPz_}!uLUtfCEsGt8oue1mYcr`@+pw%jnm0#P3&D_lF$Ft*`(c3^X(_d(MFS>1Z ze*PPnnO(E8GFG1Jl_Ub5)RnKMl5z3znsT1WAZz>%bWoA32sxnlUK*^@l|HgOUiG{w zf?-Im)mcXJ(GR95Hs$c!bSxvwoj-r_ii=a5djnn16Q$VPTu^Vx@X@+W_t^2{N8hFd zq=AzCub~rWKy1#zh04>n2mNCnmKHq&($>w6o}T$ea>y(Wr&v3gOeb>e;rgeSK*z3F z1S+!0FJ8X%nraLM0waAa?i^zWT;kEcwE+KEG)BgEoA4uHus^YFR^c56NXWxSkG@}{ zX?#@Xh^}b0e()e>>=;Cc{{mLDF3JNdB3%sDb4?7B$Wv=R3nTB= zlb}YpULfSXmkXI{u@a{j+=jgfKB`W|FWZ=u}Ss)P;!eYhn4_#%si zKO>kKET*TrEhjH84=J=lCXxmw2eZDIy}$MSjE#8lZ1ibN}OPP=D|w--oOT zZSL%3-M%9?sS?Ve==(lu>%Bs(s;2|@@#9s}F^I_LvtxD<;_1 zD|k648Z6cw56x5HVnF}vyhD5y=^``pm?dST#2da(B%s^k_#)SKcILlFkb!v;uCg6- zsXgqcQ$Hy#Dw>oTdiXRCg=v>Y=}uGkgSyB9~ziU zpNqoG3YPXpB(tz1*ZEa%=gqh7=ymBRWuUeXU}R*~3=OT<*+o>pq{B&W*05&he9o9# zat6GpFJbcd4gbzWnS&E&*`hKVRM*#OQ=~V|b8)-Attbwa;N-Bd8z;_i7$ER07cZ`X zjrleuMf27z-lHeZl#Mp{uCUQ_Dcv~O;k+c}@U>)OU?Bc=Jim2`$?iNHh+)2bLHYd4 zHvVncW)HI=Q>I35-O%5AO;3IexFaWQHWL2p`tvYcJW$eldVX79U%z}^VQe}%EsXeWkOJR0<9XTm@(H$>35_$!>PvKnaDjSyy!lym$rfmW)DityWXxTC)i zR#Dycz{A)DZ-TObIg5ZH-rCw)n#$#Goj~vLaPQk^UVi?;gVg`sX`v6mPE(wJ_!FbA z78V1BWw*u1uYT|=M%T(ShaId2y`>YWd>a*kh<&Y8WOn|1;pO^am$8u*EltfweLs%x?(KQ(F&Up@WbJ6bp9PHM z49W_oQiT7{aP@y%{Pw+$@;tg-aO>@JBPChBG!0Amo*yt)`XA4A=7!NZpde|<9Rp^d zzmA@;DeNUr2L*=&zh)JC3m$>jP;-H%j?UcFQ2ftAQP- zp?PW|G#9Lhbpm=QC&|fyfeW&-vcSyW(J3M+-qDnQ1599NC%dsRicRr^0_cJTR4w1Z z|K;cBclYjH=bc`-Yy{{*BN@DVN5OCP&8V~8ydUO)g@pwI|L;5a&%f<^Iy8;^_gH5O zt{pR(sA47`#T!(CULMmbqHb<*pU9RU_L(6+zS(MBl5-FPrN2B%N@;6r?%`*-!7K(D zOmC{A_h}_|3(JY9xzmx-!3(Ra-$%4svE1hxYpcAX?tQAMQG~oaeq2}8%Lf!P10ORz zHy2$~6I6FJjQTS(^9&Y?6@!?Vnf*j!LYqL1h~Aw$C(#uxj4a4&__3dpwQBg$e zChZBCrp`|I#)c;-fyY}~J$xt`931@BM2PA;IZ8oQ)%h3>a3oSOxb7mN^xtRcU*F9h z+Pf|tA$Lji>&y8re;FX*p6ntnXXoaYdd{6DAN=eDM(TX&XxEqfS@6OP@W+AI+yE!^ zK3EUX1IOK~)b~`GiBOu{yQ4R5-Lfgdy>T8o9k#q&IFLFfcm4Y5u&%Bywph_?<-R9? zsM140{eP~2TzL`V{J7`OFxdOG%z^?zC=^;*t>7k8^^i;edc$)}Owk=S3Xwyjg2KXl z;^I{E3l3k@ilX1@u@9C9JLMT!qz-XK-(|TXwrU>&O=E>i>ag+u{FyX;$Qs8zdX$p%gi-W#Hl|+S$Ofm~n2h#f>`i%gJ4eZ28m7thyuw zbmfPDx#%&&MQAzYdbPF~3-|B0AQ&=NiIHBo8PP= z>VrmXhK0>&P_X@=TK_a$n5#!`ZqqLUIUFWOHz)AX10;MynsKkN%ZP9k?CTz z+o#)+58))xuD1|c`cyfH!Cgr*(se>XeErRO;~udq({1~R^P6bvw&FToKF*f5HaLiV zIK$*OnM(pXea*rnJn_Q%sg-xB*CwBI4RSSiE}Y%%Q)T7IbbS}LZEvYS6mnHi5PLwd zm+)CSOYKd|A@?=2`Nc6$PtTKQ&wkd&i2z9X?ydU^Cc(t?gfUPbRtfBFflP8^FDmx! zuX{?$${p?PQ~3C8W8w-DbMDeeRK?2JdRJ-hyTsI=J(g6g;*B3pfBW`cBO7xX)rXNZjHzkGHyf*!E;$W!Jk6e@o{;5hsqmTz-^SmO z4}1@x!X0$QiUX$pc?s~fugaZ_HYfZfuL=vhlm+Th75wn+@o@`!ZiQQq9~_}$=@I}j z(rPm3`ZMW|HEe}S#7sA7oM&TJcQ8pVQ56t~VCqaNai0$U+1Z&6Rg{u?4|@E;H~9qw zO6+^NhKo&I{3!o9kF(3Hmj+NLA+G59NE-1Fju`Xm;OLTC_dd^Dn#T8o-sjK9(_E5% z?0(c(&K2=6eCP&$wBn-2A@6p(!VuU2b;&8b>kAbjsM~D2)*idVT3DT2Z zxJgYf$O6pK+hh^psW#*V2@U7kPq*3b1ysFcDj2^1;K7gMSrMbhaM0ae^V$P44zfH^ ze_B*j4{qK2*`6G`6C+|;{RW<^3Ta#>sN}#JpfU%U!Sj4sN2d^_EB3|b!SMqwkLKLP ziw2$T`<>n0EhrF6)TScEl+Q0l98cYE%oU4 z#BI-deaJoP!}#l!ohqIc&WLnjaYD5{Ffp-Vd1G4ggcD+^;P*%NZLdUxMd!CUr)1A= zLtmU(wKEe0D^djkW&21~dHI*mBVybS{h5VRX$L;4vHz)NHWFPBTe!>tP_Bk=wP z#XH^xfJW$WwE%+z05qyckH(NH(rBG$H22Uf1TxiKqi zo0~=J$-rsuEGyr5;CcGx%iAv^UjF*5r4bxb>(a_}k@4GmUB#H=r0 zlGAH;;!+cJ(K3Bf4D>&oD@dzATL8*|V2RfORtF9GX&i=yeocGP3N&djG5H4tvG-PH z*(gRWR1MYYFbUT&rC@2%iz`;M=u>EaQu;M zaVm#OT)SGVQfJPH9DJo-WpX^Q^CEetF++fx|`<88k~~K*fJ}2r^Ud;1`VOdz0R${b;8XII@PY=bp~N zQ)b-9!Af=rBI@WGS6u|x)+@q)>f)5)?nBXlCEVPHWoB8zhn4o0BU?*}n52wH8`-Bo z#K-PK+9Ks{txP-zlV;()^=Xc20++={EA1htXbUH_(v>$8z!`6});olEn@<5_*g{HOrMZc~xoo*bH)zoA@Eypi%e zpYTOyJ3!QqBA3*b8A=moX`Y0Bxy!Fz`)*flIBf0^V>jYcSV#GoYx31W{^;ZVHBuCV zQ;`nU{`H99V7ImZWeUMRvwC0r5U#Bo`)A=UJD)#uTN5)#kSGrEWRPTHJE&+~DPyg< z>|0QxrhE4pHdA5viX z0lr}R>Wc`(uEhFJtHwMxzLvMBwB8lzO9OAsN0ybnUr*AL{s9AOWc3kV(S|S<@+LF4 z;>q+D7j(-IN=Nnw46xK&1QeYWx7)@Bo&S0QGJr_x#Ty*G0kkHp(FI?=Vk+DyH*?1Q zk&N_9L!||M;?67kCazVan;UeeonwGo{Qe%kD)R#duEv`%Ji0o5zv#-sWKpT5Twd!~ z=h6fRh5-l9?nN5tCwY>Aj;64;^FnW}!v!0~p~cCgVGOF|H$hzf<0mOY zIXd{O`$YWlM!(Wf54oIApPr>)%!!r(dwf8Opp7Z@!9PwBTUU?xUa{0O8=AJ?#T}*k zqq#v_^7n<8xm>VarYv`+XjiSf0xRk4r2HHssIjyk!zJhcN)t8yWSj@AkV2W86PPQ8 zCsa|~^z`RvgL5}SGwG2E-jo7Dka)1kkZOU9^Y~-0Vt~n_*SH&jlXKolN=#(?PSkH& zrg~&g*L(l)lWZVd7pd}>0$d2%_ltRX;L(R?W44z25`0~$WNrb6LXtPsK;uyUWT+3_PE^h<`7s|}V?_TAE*LPT3}C^oiyznkkS-mi-Z#o4VbE04{LtXQZAafH`|46oS2Iazq#%{p;su zFX?$VeqNG-WOarj8&6^niQB}hqR2~a9AMRaWK9&G`8Z$_nId5}r2MKb@~X8=5xmz0 zsZBHWl2Y4(@G4BFpOFtdfh=a zO16|9=|hDBFb3Vk#ybgpk-g2$i+Pk|6AdJ19~MY{P&<6j<*h&n$88CFUr$S&UZ&xQBH6*?Cq=eun>_m3A^Nhg8Nk@?}PN7=Lu z-Sy~Mgqa9jKWae5jH)4&Yfi?8>NYl=Y_V0o8%&Vpk*c;wBOY4g^i;%L88~Bmqp8*& z)3eVS=EQH+gS4t^1IW^2ahEQAcyC-X_O1KF3t+Geq>yv@dgk8GRhTsBsyV%c&tb=m z%4SkxUEoRIoTr^-iuTfjR#Q)yD6ZD+{zS{P4HJp^mnZw0v$M1_JR|NCaNG?Y72R5< zhX>j-GQ#tT@x9}2UMw36SPE{91MEyi&&5hQO}VcfyHJ`LVzI1>UhJyn6D6|uWaPq^ zJ3MItOR5FebITD@uxSbSwhP*iy)#SwDJn~FU6?`=AJF~Kqh?Cd`uJ$hFXvfgh9 ziK>}BVqs|kxun{|_RX|%#CLy~uhZzLnBAb5H9D~f9sLy*C5oW}vDS+TcBLsD@%(Fp zScW5OEvV9^K|@jT#j8%kW=-K#1RhS$3SztMG=Mp4iNjj0BTF}9mVPw-X>xcVME2aC z^Tv<8{`HnQ+KBM zH1yQNl|L)oV8J@MG=-U;B^-9vb1@@6FG@{>YAMq!kTa|tYRKYri2v%IF%5oG9@|M= z82OlQZf;O;QiU`n%_FrxSSmVH;ACgn4R-nJ0ltXp-d-g>Y7HWEfvbs{vzizBilzWn z+|l6}7qt^@kh8#r;72ufd+GEfZSKK7WnEd{*~rJ`7S%AQ?2Ro%?M|QwlFkbd?Bt6V zQn+baf(?KTVdbSzTl?DZ-8uzMZo>j1S`=doLS6N`?juM2=U+!8`_K6|vb~xtC5AO^ z4iZVOXL1jqQOc}Wq2HVny7!nxzL84{Ha6WRtJ9;R@{5xS^g^wGXKAhZ9d6*5|B(RG z70(`fUuTXq&D{|e6to`oboxSg)@S&!{#_F-&2WrW0!=*CO3pDhoiI$t&q{p{kkt1{`X_c#=(14-!v&@bA|<2H4jT!N32EaaU%mI( za`pW)&c+v454yrZ#F?dc;-+A(R*^UFu{FY1PlTzzFbG%DUDzgAsxmIOR+C?8{Lp@y_k*EgP(3BA6;*)$V2H!WK1s|IdWL# zl3IRX4Zsu-D-`Gp`$*4?y{6B#E`FVviD2|S^qtp};XJRUrIiBAF=SlKHjeRz(<`D- zzTq)h?W$^MdB$r~fn0Ge3Axsj`-WhAM*tx`X>Tr~m--fm7s7Z)&ovn58WK7VRQw;R z^7sclsUv1Ao1NUTT)RF59-)K%1~iIQ`eN9w+No9oKy^>WSGLOF#nO{|OO`ZAMPGGK z1@|RStBV=_MlQm|I+kJoVSHb;S5f^cIE!~Qb?iyu-DkK)Vv9T!qZfH1jOgB;iCT0L zLYN|7pGtyug-4r1oLI`2o@V^~qjgpJfYqn3*$n>*T~RQ+_yI(t;6*Eoir+YL#p*QuS@wr`)hG+a2*4j?!HT8zNsiqtz?RHJPZv)dAb zzqK+AkQX#I&3zn7Xc9H~+U_AHfV*XATm>>UU{FMK2RNWcx;d|0Sh-F&f>2HdO-sMf z8IvAlQWdC7#CXAV8gl|q=IIeuqwke?DF?~Xe|lPe!DQ}$u|_@ySZXMKui9s&8L;gp zH7bb=D*JEn2)Iq~FoQ~ouKWaW4_WH;G=E&Hy1q728nJ1gZ(oiR78g&sd30Za)7)yJ z+FPjzTb$v~S{k~W0O*qn=ZTvQ^~y9RC7$W)P^eFfoOQ5Tt-W%!pS;sFXb%{S^#aGd zX|dAoDUB4}nXjY6;7QsW0C}fwTe&Nzt&p+qfW^dOE#~Zs_GBcOi9wCi!A5c#cC`Ue zxX|1!eN`R+`PB&pFJS2XNk#t5BGB*6f^A+iw?yENi)fa`hn^AsLLK-2+nhH)1vYf1 zRMh_4lkO8-m44NIjE=xO96Pqlj;*Z)v%&%|X(bjvZpru2uH1S&Tv!@@T|MT~W9`h- zUjY=fuKE_Kuk+?jB;EkX21D9GC}fpe5@Qf_3icf7MNQ^{o;N-|&f&@}?tG3L z2GH_jY_e~gns&9Pk_-A)>Ek&Co=Yqo9Jda9i`a`?HPVi!U-wz;fA@ZHOF@Um0!Zy$ z9|C9!oUm!R-BF-Te2gouYkmI}i2)3`9kLdYIe+9=gO%u*0UcbrIS9rl~q;ZV8a4$L<3~9_TXW)8f;sOvb_Z9mBIGQ zwdCQ5t`y{}nVIuEhqS|M6~9AV_`ekiRI-rK>i%g(an@e0PShwlD*$YmzbN@+3`@fFrYbB z1ExIow^uZ8b&CCICM8>Kr0kDbkWlka0GQK+ZZeQw)n~3h zny9HUq`P|KUj2uEYXLwVi2{eG6kpNs0Ea@_4L~-fts>I)kzQx5b)`L<&wVnx{q}8g zm%UY&P4m~A!5e$Xu=1L*grVx0?HLO@MaK0b`ncr*bbP|jYp3d8@eq|Hu}J-`t7I(E!qevw=`n)9HG$erh!jIb=95DUcXh(?OEitQBaOi@fS%ett*7~pD?vL8PYx$t z$IB87on#=xc^M=UiS2Nc`qb_;$pul|K)U7MuURDtv7FeF!-K=m%af(tVfT5$N1{1p zyn#?X)?UJX@=6SM?=k1x(IA4bp%oCnm*mMWPXx_fW{C=aMpdS@a+CQ&tjVhDm6 z+Y32>Emv9*(@{g2LtP&M$PA9e9YDqursq?oNR;}mGo=j&m18)wqb5xT&rg^s>T$}) z88~qQqN-Bil$4Qy!Qi47%Ev-&H{|;R9`9qrj_x5LwXE{NVhj^7+6MBPXU@e>Ag z_MfvAI7+=xlV-gakS@6cA$g9At&)?7*v)GX_2yD4tg%(cJUvDW_!dB62$_BRk^Bt#F%+@18DoU-8<>~N#qO*YEHy6( znV<%HX6qoA#J$fw3=y&K*&p?frOjMk#VyVJsMHdHJnZ;pC}e7Pme)$k&i`o05$X|g zJo69INbcOZDLqPP9mIblg@xwT6Q-MrwE86#F|M}_1o0QsdJpkTjcl`TUY$g;qH>M> z8rd!$0{)&JanRVLcVXgkxNDup1JGl^DLv1zEy~u4Hk~jTjLS0Xoz_-EImy8NL7b7| z-(7UL(gzz`A%HVbl9mYFu6nE+%1{c+=p2?icxVQ!H#mKFydy5TR?b1;Av83GmIXVj z%2Q<()iF+Yw2~0hJ2e#g8-Qq94?>lKAi%e!XbMm;Gfx45VcKa>o9pQzE;(i6@6$tw zT%m@R8>2~>p}-73)!k=Qy2C{jb|n=$A->@%J$h= z07Iru3rdalQlHZ+Ao&Dx*ILoTI7KC)7b*gonc>y6_E#jn@u}&a2(zb1#S-i(CmN;W zMUg>z)JIoBnp-**w#^EyQ5l|2w$C_V7;uHXI^YUEkBryVIzAHubUHxE^>t9kW>O*Dp`1B2JWlPKl9?Vn0_pqZ_Gl4UKBYI`1fZbYG zw|sY2QgnUKSQ5|@G$y&N!7JSi$)o`b$SPpv;4uz82H_WJGJ?p`K>%jbXTwLot3dmodnnxmQFkce2`jVVm#qq+QT zABEm+SyBRE-rgmos{s^bj`j5fjAO}`jbAGWtwzR?)obfJ^EvFrC8IKcH~Gz)lTebe zkYW3PpE`b}z9B+DefK^w@!K_-7^mWf0e=kikQgsBz$-hbEO#M6pG21N`^Xqqvu|^* zsJeC6(!qJaE#)p+W>_QuIZ6J*YhL(MVJ$}($Vg@!5DO0L8x`u7yJewH-oi@pm;%WF z4YwNGH;n!D_{p~2={EV<*|ZOUg9$mnR^grsMA^^OH%#93Hn7pjb$S30X&6ZrF2W)C z!!BfDiY$W%928I;R(wj zFmd}Jsv-C~2s15Uo5~PyxY(z)!)ge%qshAEaY;!6SW(udaZJ)z-;hGa=4$7|+lPd1 zmL=ul%M)VTPe6t@V7`h18D4X+tt_s_=W5SXR7xR^!RuMhhqW*GR^dV(@H zz*|IiY0z_bJtrEz^z5A_E@@Bpy?qM?q0ZH4Cwof* zmqy*89&)bxWqC@6Q`QJte%8|MUg-^h zOc;@q5-pX;p`&Ujy_9A@tA<$gwQ}GAT9#8X#ezp}Sex7KB3$5CRf363TtT~B5vX8% zIZQHS%)oj{8{+485Og0cXDr)BqojdTNI-X3D=R5Sy8u!y_;67+Oqyc{kUMLu=As+D zxs)DZS*W$Q(7_U%+kfBY&R3CV&r{b|j0xf(O0!0t%pd0H-<1~(17D#eqJVRN%Y3hg%w*WoDbd@CH$%{T36J!+!lGtBTYhp zL)|Xldy#P{>r-CjUpk#VNhfyBlQ)cvhE1!W5%j~VR|81hu{}Sx(@t#*y7c2C+cP6O zmfzG^x$7rgzVcWAp+6c0N^&^14Gq9Ntyt#2%fQNnl0wT?9s-pGxgP0B@FK`Y^1U{B6UN zEHURR)6zPP$9DG=b>b&HKuzq6iJ%?q+?*yr&QEF^fDx2Xs9Jer{^*$0K!2=<82RMQ z?jx^b-ZXa>tX>w-Uz{f!WqPFn3j?fT zPMH**@Bj#3pJyt{%CcA?PhS_ZJsaxE$Y|g1=|s`GtOJGtS$(6Pt$)2>5TF>8_Ejwq z1t~WLUkCI>2>CjLHje#1y=ah)}Ex@=?rEP*XFLayYqC$Ix)BFr8gPKKavN3Sg>04zPf@%{If8 zrW3uMAzjgU19s#n3GbtAO@R*aelh(6EEIfp?Cc8IBvd!PhrI{+`Ys`XS=#5+@2h=4 zXN;7@LofgS!BYVQ;%5$j02)C)?(HpagY525ATI-*4QQN9itDEvy!t>>l+mvqbPy2S zk>oMazl8v|W-W3l#=rB?|5}0mV`tVS$iw{6xEJfA~7R_w*L=%ZyA?Wx3!NhKw3gVx)r36?k=UfOF$Z= zJCs&JMY=(xq??;gk(Ta~?ru2K=h^%H?`OZ~d^q3EhjagcTlv9atuf~ud0k@+71_`M zS&mw+1AmYNETK*1F=%=QUN=OE0D=D31^)RZU*sQoynjbF|BpcSf4FD=z7!wUKOgvC z&+bJ2&s+W1#eWNag);uStABj?;VJt!cIMw#{rmm@H3I)nPD@s8^H&Z!fGE4oFh52I zJWlI(?_ENgP+}$$zZTpMN^-fpX2my*=`vAn8|Nz7o@qmC3R% z-&pchgzj(9LG2zm-1PJ&Z9%8v&wBKxc3rhyHai})80N0r zBES>vQRc1vm~RxYgAV{e@giprHa@;XB?5?)-PR@2lqt^1ZFjQk-DR_~y1Gjo!(RlG z|CG249(04tk=W<5IUauyr;;H58UpYlGQ|(qGADbm{pBs|+wZs6-E1x!L$t*kgS}?l zxOk(p+5lqe&}RLW_H_k1(4wuqGs%eyeu@BJuNME`Vm`{vffmyf{s6pabU}*SKXln0 zmu&9S(1E6c{?t^NajTE%)Wn1qT+6Yn;U4OEiJsMWz;MGAxrd)2+X7$HB!)zbOjK@{XPd`VLJLc9x2Qib2PGYKg1$e}FQ7 zi}`5%&ztbLks)wk!^0xFCMKeTf+Wn$$-DdeF&rq2O#8x9NI~CN zx9%kQ*I?!bDk^IC*jQ|Y>86?4S2bPTS3KkG?FdS&+ZLy1XJu3CySs9t#vG=N4Gk#` zvjrBM0s{@iyY+C2;hOxnV=>)Sn+S zi}N{Bhk`1Js;1^^cOPYC=OjeLm6h!eAEtuA*89=ZL%lNjyrnuOEjO2dJS`0XJ>O8% zf$?x`x|Jw2cZBI|$4sR_xZCPk%}0RK8pP2*~FK0Y2h%IZIqY4_MHDy!@Y`L3iPxnPa)> z%+)uRl?HS6#01VwYx}y@$NC0#Mmb~xZU?{QSU;zw?H$wtXl7(#Nt&%KAQvnGz5@+A z`{!PkWJvVYE9#m#H=7l|Fg2IW>A>ES8=xaJ(k;%5cXwuB9~g`4yC%=N3h!w}Lt?l;l$2Jp&lh;J z2gk7+8htOe8>0!gMf%g;!a|V=3czZQwjJuKk$hA`&!dL|*M={T+4X)Llr5?|L!1t|CfAmXvSq)T}pKxF+Uo zzYpG=Ib-fDtem9$V@be&)=8Yz2q>MJyteXl6NP>24KA=U!0e<300OOaSeUn8$X^mE z4T0aUT~P!uSwM>(|0dDRqR+L-pL{@}E%BB{+E9C?3?RUkr|D}ZgYO~Ge!gxo>rg() z$2V}?o5gY=6Md!2$O`uk!N$FQi&{^L591y#s3zj~pPzRXfAGfD)wCn8;Cg>;t*d|J z4=f>eVtd9Rqu;SeuV!U@X5W?Y4q;;oMo}~8C_+x2hIu~2F`TVsWLgBG)i1xFBtLqN z5aP7^C3zRn2EZg8`9>4|#_NvBT@p^S2iej_^5z#<-{-Dbi2M=oAZ3LnMmt$@-t*PL_X)c_xNAZp#ts%ABIFIruoKDX4h2|nSgea4-uFKsqfes zTU%ehyuICP;6B&CaCi3cISU)x$6nUvHtoUQ-an9A6ZXW~tF4}(&`^?V`ELbmqf=}? z9l`2|r3{mmj?7>@#R&*P*7_xEk+lkobSjLK1B|`A7-p*Nvr0=p+Ru3pR~sO=NOmh4 zYz~#7U!U(HQS#A$(qN2-76A}H;H}2F^WYwtnVGt)Qr}?3F88D|=wF+Hgo{PNFS_&1 zm5Y3#QN{uK{5k5Q6K5i5(jq%*Uq{i>{VG$_;&l%0%n0kdJ_U$a(_^; z%;W>SiDDi5V={o}=CJP5W=PLW*tu&+QEWl}FUQ5xhRzWB*3!=ICg? zn6cF533RdTRKq9G64~oKoT^;IkkG@jCw33X=feNwK}sN<-~A<*hQhZ4g`7-~aF8ZiJ2!k67-0bNGrRTL zR_~41cS7CU+v_T0Z8#82=CMX$cPXC5O1@4?Ru>Xt`J=7#&vCYR*OvUvyafycYtLHIxa3>%6)OjNxR%0-v-jTi^q_v%uKr

*ZkQsZu{K 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%0DZ^ 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

K1=eHSYEJSo{)V!(QhruL58 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 diff --git a/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- single country multiple id_types -- disables country selector, allows id_type selection (failed).png b/packages/embed/cypress/screenshots/verification-method-selection.cy.cjs/Verification Method Selection -- single country multiple id_types -- disables country selector, allows id_type selection (failed).png deleted file mode 100644 index 13c8e841d142108b9166a77f1e855411426eac01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254706 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ŮBJ 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%0A3qX17GS8}yhF70}6Uo_8Teu&wqn{kwVVtn{j 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 J+jrvEe*v$1i+2D3