@tonconnect/ui 0.0.16 → 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tonconnect-ui.min.js","sources":["../../sdk/lib/esm/errors/ton-connect.error.js","../../sdk/lib/esm/errors/dapp/dapp-metadata.error.js","../../sdk/lib/esm/errors/protocol/events/connect/manifest-content-error.error.js","../../sdk/lib/esm/errors/protocol/events/connect/manifest-not-found.error.js","../../sdk/lib/esm/errors/wallet/wallet-already-connected.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-connected.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-support-feature.error.js","../../sdk/lib/esm/models/wallet/wallet-connection-source.js","../../sdk/lib/esm/errors/protocol/events/connect/user-rejects.error.js","../../sdk/lib/esm/errors/protocol/responses/bad-request.error.js","../../sdk/lib/esm/errors/protocol/responses/unknown-app.error.js","../../sdk/lib/esm/errors/wallet/wallet-not-injected.error.js","../../sdk/lib/esm/errors/storage/localstorage-not-found.error.js","../../sdk/lib/esm/errors/wallets-manager/fetch-wallets.error.js","../../sdk/lib/esm/errors/address/wrong-address.error.js","../../sdk/lib/esm/errors/binary/parse-hex.error.js","../../sdk/lib/esm/errors/unknown.error.js","../../protocol/lib/esm/models/wallet-message/wallet-event/connect-event.js","../../protocol/lib/esm/models/wallet-message/wallet-response/send-transaction-rpc-response.js","../../protocol/lib/esm/models/CHAIN.js","../../../node_modules/tweetnacl-util/nacl-util.js","../../protocol/lib/esm/utils/base64.js","../../protocol/lib/esm/utils/binary.js","../../protocol/lib/esm/utils/web-api.js","../__vite-browser-external","../../../node_modules/tweetnacl/nacl-fast.js","../../protocol/lib/esm/crypto/session-crypto.js","../../sdk/lib/esm/parsers/connect-errors-parser.js","../../sdk/lib/esm/parsers/rpc-parser.js","../../sdk/lib/esm/parsers/send-transaction-parser.js","../../sdk/lib/esm/storage/http-bridge-gateway-storage.js","../../sdk/lib/esm/utils/url.js","../../sdk/lib/esm/provider/bridge/bridge-gateway.js","../../sdk/lib/esm/storage/bridge-connection-storage.js","../../sdk/lib/esm/resources/protocol.js","../../sdk/lib/esm/provider/bridge/bridge-provider.js","../../sdk/lib/esm/utils/web-api.js","../../sdk/lib/esm/provider/injected/injected-provider.js","../../sdk/lib/esm/storage/default-storage.js","../../sdk/lib/esm/models/wallet/wallet-info.js","../../sdk/lib/esm/wallets-list-manager.js","../../sdk/lib/esm/ton-connect.js","../../sdk/lib/esm/utils/address.js","../../../node_modules/solid-js/dist/solid.js","../../../node_modules/solid-js/web/dist/web.js","../src/app/state/modals-state.ts","../../../node_modules/goober/dist/goober.modern.js","../../../node_modules/solid-styled-components/src/index.js","../src/app/i18n.ts","../src/app/state/connector.context.ts","../../../node_modules/solid-js/store/dist/store.js","../src/models/THEME.ts","../src/app/styles/default-colors.ts","../../../node_modules/deepmerge/dist/cjs.js","../node_modules/is-plain-object/dist/is-plain-object.mjs","../src/app/utils/options.ts","../src/app/state/theme-state.ts","../src/app/styles/global-styles.tsx","../src/app/utils/css.ts","../src/app/components/button/style.ts","../src/app/components/button/index.tsx","../../../node_modules/classnames/index.js","../../../node_modules/solid-transition-group/dist/solid-transition-group.js","../src/app/directives/click-outside.tsx","../src/app/directives/key-pressed.tsx","../src/app/styles/media.ts","../src/app/components/icons/arrow-icon.tsx","../src/app/components/icons/close-icon.tsx","../src/app/components/icon-button/style.ts","../src/app/components/icon-button/index.tsx","../src/app/components/modal/style.ts","../src/app/components/modal/index.tsx","../../../node_modules/@solid-primitives/i18n/dist/index.js","../src/app/components/typography/h1/style.ts","../src/app/components/typography/h1/index.tsx","../src/app/components/typography/h2/style.ts","../src/app/components/typography/h2/index.tsx","../src/app/components/typography/h3/style.ts","../src/app/components/typography/h3/index.tsx","../src/app/components/typography/text/style.ts","../src/app/components/typography/text/index.tsx","../src/app/components/icons/ton-icon.tsx","../src/app/components/icons/success-icon.tsx","../src/app/components/icons/error-icon.tsx","../src/app/components/icons/loader-icon.tsx","../src/app/state/ton-connect-ui.context.ts","../src/app/components/icons/copy-icon.tsx","../src/app/components/icons/disconnect-icon.tsx","../src/app/utils/copy-to-clipboard.ts","../src/app/views/account-button/account-button-dropdown/style.ts","../src/app/views/account-button/account-button-dropdown/index.tsx","../src/app/components/notification/style.ts","../src/app/components/notification/index.tsx","../src/app/views/account-button/notifications/confirm-operation-notification/style.ts","../src/app/views/account-button/notifications/confirm-operation-notification/index.tsx","../src/app/views/account-button/notifications/error-transaction-notification/style.ts","../src/app/views/account-button/notifications/error-transaction-notification/index.tsx","../src/app/views/account-button/notifications/success-transaction-notification/style.ts","../src/app/views/account-button/notifications/success-transaction-notification/index.tsx","../src/app/views/account-button/notifications/style.ts","../src/app/views/account-button/notifications/index.tsx","../src/app/views/account-button/style.ts","../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../../../node_modules/solid-floating-ui/dist/esm/production/index.mjs","../src/app/views/account-button/index.tsx","../src/app/components/qr-code/style.ts","../../../node_modules/qrcode-generator/qrcode.js","../src/app/components/qr-code/index.tsx","../src/app/components/typography/Translation/index.tsx","../src/app/views/modals/wallets-modal/qr-code-modal/style.ts","../src/app/utils/web-api.ts","../src/app/state/app.state.ts","../src/app/views/modals/wallets-modal/qr-code-modal/index.tsx","../src/app/views/modals/wallets-modal/select-wallet-modal/wallet-item/style.ts","../src/app/views/modals/wallets-modal/select-wallet-modal/wallet-item/index.tsx","../src/app/views/modals/wallets-modal/select-wallet-modal/style.ts","../src/app/views/modals/wallets-modal/select-wallet-modal/index.tsx","../src/app/views/modals/wallets-modal/style.ts","../src/app/utils/wallets.ts","../src/app/views/modals/wallets-modal/wallets-modal.tsx","../src/app/views/modals/actions-modal/action-modal/style.ts","../src/app/views/modals/actions-modal/action-modal/index.tsx","../src/app/views/modals/actions-modal/confirm-transaction-modal/style.ts","../src/app/views/modals/actions-modal/confirm-transaction-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-canceled-modal/style.ts","../src/app/views/modals/actions-modal/transaction-canceled-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-sent-modal/style.ts","../src/app/views/modals/actions-modal/transaction-sent-modal/index.tsx","../src/app/views/modals/actions-modal/actions-modal.tsx","../src/app/App.tsx","../src/app/widget-controller.tsx","../src/errors/ton-connect-ui.error.ts","../src/storage.ts","../src/ton-connect-ui.ts"],"sourcesContent":["/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nexport class TonConnectError extends Error {\n constructor(message, options) {\n if (message) {\n message = TonConnectError.prefix + ' ' + message;\n }\n super(message, options);\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\nTonConnectError.prefix = '[TON_CONNECT_SDK_ERROR]';\n//# sourceMappingURL=ton-connect.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n//# sourceMappingURL=dapp-metadata.error.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when passed manifest contains errors.\n */\nexport class ManifestContentErrorError extends TonConnectError {\n constructor(message) {\n super(message || '' + ManifestContentErrorError.additionalMessage);\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\nManifestContentErrorError.additionalMessage = '\\nPassed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n//# sourceMappingURL=manifest-content-error.error.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nexport class ManifestNotFoundError extends TonConnectError {\n constructor(message) {\n super(message || '' + ManifestNotFoundError.additionalMessage);\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\nManifestNotFoundError.additionalMessage = '\\nManifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n//# sourceMappingURL=manifest-not-found.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-already-connected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nexport class WalletNotConnectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-connected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nexport class WalletNotSupportFeatureError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-support-feature.error.js.map","export function isWalletConnectionSourceJS(value) {\n return 'jsBridgeKey' in value;\n}\n//# sourceMappingURL=wallet-connection-source.js.map","import { TonConnectError } from \"../../../ton-connect.error\";\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n//# sourceMappingURL=user-rejects.error.js.map","import { TonConnectError } from \"../../ton-connect.error\";\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n//# sourceMappingURL=bad-request.error.js.map","import { TonConnectError } from \"../../ton-connect.error\";\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nexport class UnknownAppError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n//# sourceMappingURL=unknown-app.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nexport class WalletNotInjectedError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n//# sourceMappingURL=wallet-not-injected.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.\n */\nexport class LocalstorageNotFoundError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n//# sourceMappingURL=localstorage-not-found.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n//# sourceMappingURL=fetch-wallets.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed address is in incorrect format.\n */\nexport class WrongAddressError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WrongAddressError.prototype);\n }\n}\n//# sourceMappingURL=wrong-address.error.js.map","import { TonConnectError } from \"../ton-connect.error\";\n/**\n * Thrown when passed hex is in incorrect format.\n */\nexport class ParseHexError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ParseHexError.prototype);\n }\n}\n//# sourceMappingURL=parse-hex.error.js.map","import { TonConnectError } from \"./ton-connect.error\";\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n//# sourceMappingURL=unknown.error.js.map","export var CONNECT_EVENT_ERROR_CODES;\n(function (CONNECT_EVENT_ERROR_CODES) {\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_NOT_FOUND_ERROR\"] = 2] = \"MANIFEST_NOT_FOUND_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_CONTENT_ERROR\"] = 3] = \"MANIFEST_CONTENT_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_EVENT_ERROR_CODES || (CONNECT_EVENT_ERROR_CODES = {}));\nexport var CONNECT_ITEM_ERROR_CODES;\n(function (CONNECT_ITEM_ERROR_CODES) {\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_ITEM_ERROR_CODES || (CONNECT_ITEM_ERROR_CODES = {}));\n","export var SEND_TRANSACTION_ERROR_CODES;\n(function (SEND_TRANSACTION_ERROR_CODES) {\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SEND_TRANSACTION_ERROR_CODES || (SEND_TRANSACTION_ERROR_CODES = {}));\n","export var CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN || (CHAIN = {}));\n","// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","import nacl from 'tweetnacl-util';\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = nacl.encodeBase64(value);\n if (!urlSafe) {\n return encoded;\n }\n return encodeURIComponent(encoded);\n}\nfunction decodeToUint8Array(value, urlSafe) {\n if (urlSafe) {\n value = decodeURIComponent(value);\n }\n return nacl.decodeBase64(value);\n}\nfunction encode(value, urlSafe = false) {\n let uint8Array;\n if (value instanceof Uint8Array) {\n uint8Array = value;\n }\n else {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n uint8Array = nacl.decodeUTF8(value);\n }\n return encodeUint8Array(uint8Array, urlSafe);\n}\nfunction decode(value, urlSafe = false) {\n const decodedUint8Array = decodeToUint8Array(value, urlSafe);\n return {\n toString() {\n return nacl.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(nacl.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexport const Base64 = {\n encode,\n decode\n};\n","export function concatUint8Arrays(buffer1, buffer2) {\n const mergedArray = new Uint8Array(buffer1.length + buffer2.length);\n mergedArray.set(buffer1);\n mergedArray.set(buffer2, buffer1.length);\n return mergedArray;\n}\nexport function splitToUint8Arrays(array, index) {\n if (index >= array.length) {\n throw new Error('Index is out of buffer');\n }\n const subArray1 = array.slice(0, index);\n const subArray2 = array.slice(index);\n return [subArray1, subArray2];\n}\nexport function toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexport function hexToByteArray(hexString) {\n if (hexString.length % 2 !== 0) {\n throw new Error(`Cannot convert ${hexString} to bytesArray`);\n }\n const result = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n result[i / 2] = parseInt(hexString.slice(i, i + 2), 16);\n }\n return result;\n}\n","export function isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\n","export default {}","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","import { concatUint8Arrays, hexToByteArray, splitToUint8Arrays, toHexString, isNode } from '../utils';\nimport nacl from 'tweetnacl';\nif (isNode()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nexport class SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = toHexString(this.keyPair.publicKey);\n }\n createKeypair() {\n return nacl.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: hexToByteArray(keyPair.publicKey),\n secretKey: hexToByteArray(keyPair.secretKey)\n };\n }\n createNonce() {\n const buffer = new Uint8Array(this.nonceLength);\n return crypto.getRandomValues(buffer);\n }\n encrypt(message, receiverPublicKey) {\n const encodedMessage = new TextEncoder().encode(message);\n const nonce = this.createNonce();\n const encrypted = nacl.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return concatUint8Arrays(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = splitToUint8Arrays(message, this.nonceLength);\n const decrypted = nacl.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error(`Decryption error: \\n message: ${message.toString()} \\n sender pubkey: ${senderPublicKey.toString()} \\n keypair pubkey: ${this.keyPair.publicKey.toString()} \\n keypair secretkey: ${this.keyPair.secretKey.toString()}`);\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: toHexString(this.keyPair.publicKey),\n secretKey: toHexString(this.keyPair.secretKey)\n };\n }\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from \"../errors\";\nimport { ManifestContentErrorError } from \"../errors/protocol/events/connect/manifest-content-error.error\";\nimport { ManifestNotFoundError } from \"../errors/protocol/events/connect/manifest-not-found.error\";\nimport { UnknownError } from \"../errors/unknown.error\";\nimport { CONNECT_EVENT_ERROR_CODES } from '@tonconnect/protocol';\nconst connectEventErrorsCodes = {\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_NOT_FOUND_ERROR]: ManifestNotFoundError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_CONTENT_ERROR]: ManifestContentErrorError\n};\nclass ConnectErrorsParser {\n parseError(error) {\n let ErrorConstructor = UnknownError;\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n return new ErrorConstructor(error.message);\n }\n}\nexport const connectErrorsParser = new ConnectErrorsParser();\n//# sourceMappingURL=connect-errors-parser.js.map","export class RpcParser {\n isError(response) {\n return 'error' in response;\n }\n}\n//# sourceMappingURL=rpc-parser.js.map","import { SEND_TRANSACTION_ERROR_CODES } from '@tonconnect/protocol';\nimport { BadRequestError, UnknownAppError, UserRejectsError } from \"../errors\";\nimport { UnknownError } from \"../errors/unknown.error\";\nimport { RpcParser } from \"./rpc-parser\";\nconst sendTransactionErrors = {\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\nclass SendTransactionParser extends RpcParser {\n convertToRpcRequest(request) {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n parseAndThrowError(response) {\n let ErrorConstructor = UnknownError;\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n throw new ErrorConstructor(response.error.message);\n }\n convertFromRpcResponse(rpcResponse) {\n return {\n boc: rpcResponse.result\n };\n }\n}\nexport const sendTransactionParser = new SendTransactionParser();\n//# sourceMappingURL=send-transaction-parser.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nexport class HttpBridgeGatewayStorage {\n constructor(storage) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_http-bridge-gateway';\n }\n storeLastEventId(lastEventId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.setItem(this.storeKey, lastEventId);\n });\n }\n removeLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n return stored;\n });\n }\n}\n//# sourceMappingURL=http-bridge-gateway-storage.js.map","export function removeUrlLastSlash(url) {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n return url;\n}\nexport function addPathToUrl(url, path) {\n return removeUrlLastSlash(url) + '/' + path;\n}\n//# sourceMappingURL=url.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../../errors\";\nimport { HttpBridgeGatewayStorage } from \"../../storage/http-bridge-gateway-storage\";\nimport { addPathToUrl } from \"../../utils/url\";\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n }\n catch (err) {\n console.error(err);\n }\n}\nexport class BridgeGateway {\n constructor(storage, bridgeUrl, sessionId, listener, errorsListener) {\n this.bridgeUrl = bridgeUrl;\n this.sessionId = sessionId;\n this.listener = listener;\n this.errorsListener = errorsListener;\n this.ssePath = 'events';\n this.postPath = 'message';\n this.heartbeatMessage = 'heartbeat';\n this.defaultTtl = 300;\n this.isClosed = false;\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n registerSession() {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n const lastEventId = yield this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n this.eventSource = new EventSource(url.toString());\n return new Promise((resolve, reject) => {\n this.eventSource.onerror = reject;\n this.eventSource.onopen = () => {\n this.eventSource.onerror = this.errorsHandler.bind(this);\n this.eventSource.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n });\n }\n send(message, receiver, ttl) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n yield fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n });\n }\n close() {\n var _a;\n this.isClosed = true;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n }\n errorsHandler(e) {\n var _a, _b;\n if (!this.isClosed) {\n if (((_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.readyState) === EventSource.CLOSED) {\n this.eventSource.close();\n this.registerSession();\n return;\n }\n if (((_b = this.eventSource) === null || _b === void 0 ? void 0 : _b.readyState) === EventSource.CONNECTING) {\n console.debug('[TON_CONNET_SDK_ERROR]: Bridge error', JSON.stringify(e));\n return;\n }\n this.errorsListener(e);\n }\n }\n messagesHandler(e) {\n return __awaiter(this, void 0, void 0, function* () {\n if (e.data === this.heartbeatMessage) {\n return;\n }\n yield this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n if (!this.isClosed) {\n let bridgeIncomingMessage;\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n }\n catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n this.listener(bridgeIncomingMessage);\n }\n });\n }\n}\n//# sourceMappingURL=bridge-gateway.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../errors\";\nexport class BridgeConnectionStorage {\n constructor(storage) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_bridge-connection';\n }\n storeConnection(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n const rawSession = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n const rawConnection = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n });\n }\n removeConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n if (connection.type === 'injected') {\n return connection;\n }\n const sessionCrypto = new SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: {\n sessionCrypto,\n walletConnectionSource: connection.session.walletConnectionSource,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n });\n }\n getHttpConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read HTTP connection source while nothing is stored');\n }\n if (connection.type === 'injected') {\n throw new TonConnectError('Trying to read HTTP connection source while injected connection is stored');\n }\n return connection;\n });\n }\n getInjectedConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read Injected bridge connection source while nothing is stored');\n }\n if ((connection === null || connection === void 0 ? void 0 : connection.type) === 'http') {\n throw new TonConnectError('Trying to read Injected bridge connection source while HTTP connection is stored');\n }\n return connection;\n });\n }\n storedConnectionType() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n return connection.type;\n });\n }\n}\n//# sourceMappingURL=bridge-connection-storage.js.map","export const PROTOCOL_VERSION = 2;\n//# sourceMappingURL=protocol.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Base64, SessionCrypto, hexToByteArray } from '@tonconnect/protocol';\nimport { TonConnectError } from \"../../errors/ton-connect.error\";\nimport { BridgeGateway } from \"./bridge-gateway\";\nimport { BridgeConnectionStorage } from \"../../storage/bridge-connection-storage\";\nimport { PROTOCOL_VERSION } from \"../../resources/protocol\";\nexport class BridgeProvider {\n constructor(storage, walletConnectionSource) {\n this.storage = storage;\n this.walletConnectionSource = walletConnectionSource;\n this.type = 'http';\n this.standardUniversalLink = 'https://connect.ton.org';\n this.pendingRequests = new Map();\n this.nextRequestId = 0;\n this.session = null;\n this.bridge = null;\n this.pendingBridges = [];\n this.listeners = [];\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n });\n }\n connect(message) {\n this.closeBridges();\n const sessionCrypto = new SessionCrypto();\n let walletConnectionSource = {\n universalLink: this.standardUniversalLink,\n bridgeUrl: ''\n };\n if (Array.isArray(this.walletConnectionSource)) {\n this.pendingBridges = this.walletConnectionSource.map(source => new BridgeGateway(this.storage, source, sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this)));\n this.pendingBridges.forEach(bridge => bridge.registerSession());\n }\n else {\n walletConnectionSource = this.walletConnectionSource;\n this.bridge = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n this.bridge.registerSession();\n }\n this.session = {\n sessionCrypto,\n walletConnectionSource\n };\n return this.generateUniversalLink(walletConnectionSource.universalLink, message);\n }\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n if (Array.isArray(this.walletConnectionSource)) {\n throw new TonConnectError('Internal error. Connection source is array while WalletConnectionSourceHTTP was expected.');\n }\n this.closeBridges();\n const storedConnection = yield this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n this.session = storedConnection.session;\n this.bridge = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, storedConnection.session.sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n yield this.bridge.registerSession();\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n });\n }\n sendRequest(request) {\n return new Promise((resolve, reject) => {\n const id = this.nextRequestId;\n this.nextRequestId++;\n if (!this.bridge || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n const encodedRequest = this.session.sessionCrypto.encrypt(JSON.stringify(Object.assign(Object.assign({}, request), { id })), hexToByteArray(this.session.walletPublicKey));\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n closeConnection() {\n this.closeBridges();\n this.listeners = [];\n this.session = null;\n this.bridge = null;\n }\n disconnect() {\n this.closeBridges();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n listen(callback) {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n pendingGatewaysListener(gateway, bridgeIncomingMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.pendingBridges.includes(gateway)) {\n gateway.close();\n return;\n }\n this.closeBridges();\n this.session.walletConnectionSource.bridgeUrl = gateway.bridgeUrl;\n this.bridge = gateway;\n return this.gatewayListener(bridgeIncomingMessage);\n });\n }\n gatewayListener(bridgeIncomingMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n const walletMessage = JSON.parse(this.session.sessionCrypto.decrypt(Base64.decode(bridgeIncomingMessage.message).toUint8Array(), hexToByteArray(bridgeIncomingMessage.from)));\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n throw new TonConnectError(`Response id ${id} doesn't match any request's id`);\n }\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n if (walletMessage.event === 'connect') {\n yield this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n if (walletMessage.event === 'disconnect') {\n yield this.removeBridgeAndSession();\n }\n this.listeners.forEach(listener => listener(walletMessage));\n });\n }\n gatewayErrorsListener(e) {\n return __awaiter(this, void 0, void 0, function* () {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n });\n }\n updateSession(connectEvent, walletPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n this.session = Object.assign(Object.assign({}, this.session), { walletPublicKey });\n const tonAddrItem = connectEvent.payload.items.find(item => item.name === 'ton_addr');\n const connectEventToSave = Object.assign(Object.assign({}, connectEvent), { payload: Object.assign(Object.assign({}, connectEvent.payload), { items: [tonAddrItem] }) });\n yield this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n });\n }\n removeBridgeAndSession() {\n return __awaiter(this, void 0, void 0, function* () {\n this.session = null;\n this.bridge = null;\n yield this.connectionStorage.removeConnection();\n });\n }\n generateUniversalLink(universalLink, message) {\n const url = new URL(universalLink);\n url.searchParams.append('v', PROTOCOL_VERSION.toString());\n url.searchParams.append('id', this.session.sessionCrypto.sessionId);\n url.searchParams.append('r', JSON.stringify(message));\n return url.toString();\n }\n closeBridges(except) {\n var _a;\n (_a = this.bridge) === null || _a === void 0 ? void 0 : _a.close();\n this.pendingBridges.filter(item => item !== except).forEach(bridge => bridge.close());\n this.pendingBridges = [];\n }\n}\n//# sourceMappingURL=bridge-provider.js.map","export function getWindow() {\n if (typeof window === 'undefined') {\n return undefined;\n }\n return window;\n}\nexport function getDocument() {\n if (typeof document === 'undefined') {\n return undefined;\n }\n return document;\n}\nexport function getWebPageManifest() {\n var _a;\n const origin = (_a = getWindow()) === null || _a === void 0 ? void 0 : _a.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n return '';\n}\n//# sourceMappingURL=web-api.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { WalletNotInjectedError } from \"../../errors/wallet/wallet-not-injected.error\";\nimport { BridgeConnectionStorage } from \"../../storage/bridge-connection-storage\";\nimport { getWindow } from \"../../utils/web-api\";\nimport { PROTOCOL_VERSION } from \"../../resources/protocol\";\nexport class InjectedProvider {\n constructor(storage, injectedWalletKey) {\n this.injectedWalletKey = injectedWalletKey;\n this.type = 'injected';\n this.unsubscribeCallback = null;\n this.listenSubscriptions = false;\n this.listeners = [];\n const window = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n this.connectionStorage = new BridgeConnectionStorage(storage);\n this.injectedWallet = window[injectedWalletKey].tonconnect;\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(storage, connection.jsBridgeKey);\n });\n }\n static isWalletInjected(injectedWalletKey) {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n static isInsideWalletBrowser(injectedWalletKey) {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey].tonconnect.isWalletBrowser;\n }\n return false;\n }\n static isWindowContainsWallet(window, injectedWalletKey) {\n return (!!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey] === 'object' &&\n 'tonconnect' in window[injectedWalletKey]);\n }\n connect(message) {\n this._connect(PROTOCOL_VERSION, message);\n }\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const connectEvent = yield this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listeners.forEach(listener => listener(connectEvent));\n }\n else {\n yield this.connectionStorage.removeConnection();\n }\n }\n catch (e) {\n yield this.connectionStorage.removeConnection();\n console.error(e);\n }\n });\n }\n closeConnection() {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n disconnect() {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return this.connectionStorage.removeConnection();\n }\n closeAllListeners() {\n var _a;\n this.listenSubscriptions = false;\n this.listeners = [];\n (_a = this.unsubscribeCallback) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n listen(eventsCallback) {\n this.listeners.push(eventsCallback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n sendRequest(request) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.injectedWallet.send(Object.assign(Object.assign({}, request), { id: '0' }));\n });\n }\n _connect(protocolVersion, message) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const connectEvent = yield this.injectedWallet.connect(protocolVersion, message);\n if (connectEvent.event === 'connect') {\n yield this.updateSession();\n this.makeSubscriptions();\n }\n this.listeners.forEach(listener => listener(connectEvent));\n }\n catch (e) {\n console.debug(e);\n const connectEventError = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e === null || e === void 0 ? void 0 : e.toString()\n }\n };\n this.listeners.forEach(listener => listener(connectEventError));\n }\n });\n }\n makeSubscriptions() {\n this.listenSubscriptions = true;\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n updateSession() {\n return this.connectionStorage.storeConnection({\n type: 'injected',\n jsBridgeKey: this.injectedWalletKey\n });\n }\n}\nInjectedProvider.window = getWindow();\n//# sourceMappingURL=injected-provider.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { LocalstorageNotFoundError } from \"../errors/storage/localstorage-not-found.error\";\nimport { getWindow } from \"../utils/web-api\";\nexport class DefaultStorage {\n constructor() {\n const window = getWindow();\n if (!(window === null || window === void 0 ? void 0 : window.localStorage)) {\n throw new LocalstorageNotFoundError();\n }\n this.window = window;\n }\n getItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(this.window.localStorage.getItem(key));\n });\n }\n removeItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n });\n }\n setItem(key, value) {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n//# sourceMappingURL=default-storage.js.map","export function isWalletInfoInjected(value) {\n return 'jsBridgeKey' in value;\n}\n//# sourceMappingURL=wallet-info.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { FetchWalletsError } from \"./errors/wallets-manager/fetch-wallets.error\";\nimport { isWalletInfoInjected } from \"./models/wallet/wallet-info\";\nimport { InjectedProvider } from \"./provider/injected/injected-provider\";\nexport class WalletsListManager {\n constructor(walletsListSource) {\n this.walletsListCache = null;\n this.walletsListSource = 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n if (walletsListSource) {\n this.walletsListSource = walletsListSource;\n }\n }\n getWallets() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n return this.walletsListCache;\n });\n }\n getEmbeddedWallet() {\n return __awaiter(this, void 0, void 0, function* () {\n const walletsList = yield this.getWallets();\n const embeddedWallets = walletsList.filter(item => isWalletInfoInjected(item) && item.embedded);\n if (embeddedWallets.length !== 1) {\n return null;\n }\n return embeddedWallets[0];\n });\n }\n fetchWalletsList() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const walletsResponse = yield fetch(this.walletsListSource);\n const walletsList = yield walletsResponse.json();\n if (!Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n }\n catch (e) {\n throw new FetchWalletsError(e);\n }\n });\n }\n walletConfigDTOListToWalletConfigList(walletConfigDTO) {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n };\n walletConfigDTO.bridge.forEach(bridge => {\n if (bridge.type === 'sse') {\n walletConfig.bridgeUrl = bridge.url;\n walletConfig.universalLink =\n walletConfigDTO.universal_url;\n walletConfig.deepLink = walletConfigDTO.deepLink;\n }\n if (bridge.type === 'js') {\n const jsBridgeKey = bridge.key;\n walletConfig.jsBridgeKey = jsBridgeKey;\n walletConfig.injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n walletConfig.embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n });\n return walletConfig;\n });\n }\n isCorrectWalletConfigDTO(value) {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n if (!('bridge' in value) ||\n !Array.isArray(value.bridge) ||\n !value.bridge.length) {\n return false;\n }\n const bridge = value.bridge;\n if (bridge.some(item => !item || typeof item !== 'object' || !('type' in item))) {\n return false;\n }\n const sseBridge = bridge.find(item => item.type === 'sse');\n if (sseBridge) {\n if (!('url' in sseBridge) ||\n !sseBridge.url ||\n !value.universal_url) {\n return false;\n }\n }\n const jsBridge = bridge.find(item => item.type === 'js');\n if (jsBridge) {\n if (!('key' in jsBridge) || !jsBridge.key) {\n return false;\n }\n }\n return true;\n }\n}\n//# sourceMappingURL=wallets-list-manager.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { DappMetadataError } from \"./errors/dapp/dapp-metadata.error\";\nimport { ManifestContentErrorError } from \"./errors/protocol/events/connect/manifest-content-error.error\";\nimport { ManifestNotFoundError } from \"./errors/protocol/events/connect/manifest-not-found.error\";\nimport { TonConnectError } from \"./errors/ton-connect.error\";\nimport { WalletAlreadyConnectedError } from \"./errors/wallet/wallet-already-connected.error\";\nimport { WalletNotConnectedError } from \"./errors/wallet/wallet-not-connected.error\";\nimport { WalletNotSupportFeatureError } from \"./errors/wallet/wallet-not-support-feature.error\";\nimport { isWalletConnectionSourceJS } from \"./models/wallet/wallet-connection-source\";\nimport { connectErrorsParser } from \"./parsers/connect-errors-parser\";\nimport { sendTransactionParser } from \"./parsers/send-transaction-parser\";\nimport { BridgeProvider } from \"./provider/bridge/bridge-provider\";\nimport { InjectedProvider } from \"./provider/injected/injected-provider\";\nimport { BridgeConnectionStorage } from \"./storage/bridge-connection-storage\";\nimport { DefaultStorage } from \"./storage/default-storage\";\nimport { getWebPageManifest } from \"./utils/web-api\";\nimport { WalletsListManager } from \"./wallets-list-manager\";\nexport class TonConnect {\n constructor(options) {\n this.walletsList = new WalletsListManager();\n this._wallet = null;\n this.provider = null;\n this.statusChangeSubscriptions = [];\n this.statusChangeErrorSubscriptions = [];\n this.dappSettings = {\n manifestUrl: (options === null || options === void 0 ? void 0 : options.manifestUrl) || getWebPageManifest(),\n storage: (options === null || options === void 0 ? void 0 : options.storage) || new DefaultStorage()\n };\n this.walletsList = new WalletsListManager(options === null || options === void 0 ? void 0 : options.walletsListSource);\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError('Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest');\n }\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n /**\n * Returns available wallets list.\n */\n static getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Shows if the wallet is connected right now.\n */\n get connected() {\n return this._wallet !== null;\n }\n /**\n * Current connected account or null if no account is connected.\n */\n get account() {\n var _a;\n return ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.account) || null;\n }\n /**\n * Current connected wallet or null if no account is connected.\n */\n get wallet() {\n return this._wallet;\n }\n set wallet(value) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n /**\n * Returns available wallets list.\n */\n getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n onStatusChange(callback, errorsHandler) {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(item => item !== callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(item => item !== errorsHandler);\n }\n };\n }\n connect(wallet, request) {\n var _a;\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n (_a = this.provider) === null || _a === void 0 ? void 0 : _a.closeConnection();\n this.provider = this.createProvider(wallet);\n return this.provider.connect(this.createConnectRequest(request));\n }\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const [bridgeConnectionType, embeddedWallet] = yield Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = yield BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = yield InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = yield this.createProvider(embeddedWallet);\n }\n else {\n return;\n }\n }\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n });\n }\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n sendTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n this.checkConnection();\n this.checkFeatureSupport('SendTransaction');\n const { validUntil } = transaction, tx = __rest(transaction, [\"validUntil\"]);\n const response = yield this.provider.sendRequest(sendTransactionParser.convertToRpcRequest(Object.assign(Object.assign({}, tx), { valid_until: validUntil })));\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n return sendTransactionParser.convertFromRpcResponse(response);\n });\n }\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n yield this.provider.disconnect();\n this.onWalletDisconnected();\n });\n }\n createProvider(wallet) {\n let provider;\n if (!Array.isArray(wallet) && isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(this.dappSettings.storage, wallet.jsBridgeKey);\n }\n else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n walletEventsListener(e) {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n onWalletConnected(connectEvent) {\n const tonAccountItem = connectEvent.items.find(item => item.name === 'ton_addr');\n const tonProofItem = connectEvent.items.find(item => item.name === 'ton_proof');\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n const wallet = {\n device: connectEvent.device,\n provider: this.provider.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network,\n walletStateInit: tonAccountItem.walletStateInit\n }\n };\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n this.wallet = wallet;\n }\n onWalletConnectError(connectEventError) {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n console.debug(error);\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n onWalletDisconnected() {\n this.wallet = null;\n }\n checkConnection() {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n checkFeatureSupport(feature) {\n var _a;\n if (!((_a = this.wallet) === null || _a === void 0 ? void 0 : _a.device.features.includes(feature))) {\n throw new WalletNotSupportFeatureError();\n }\n }\n createConnectRequest(request) {\n const items = [\n {\n name: 'ton_addr'\n }\n ];\n if (request === null || request === void 0 ? void 0 : request.tonProof) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\nTonConnect.walletsList = new WalletsListManager();\n/**\n * Check if specified wallet is injected and available to use with the app.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isWalletInjected = (walletJSKey) => InjectedProvider.isWalletInjected(walletJSKey);\n/**\n * Check if the app is opened inside specified wallet's browser.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isInsideWalletBrowser = (walletJSKey) => InjectedProvider.isInsideWalletBrowser(walletJSKey);\n//# sourceMappingURL=ton-connect.js.map","import { WrongAddressError, ParseHexError } from \"../errors\";\nimport { Base64 } from '@tonconnect/protocol';\nconst bounceableTag = 0x11;\nconst testOnlyTag = 0x80;\n/**\n * Converts raw TON address to bounceable user-friendly format. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n * @param hexAddress raw TON address formatted as \"0:<hex string without 0x>\".\n * @param [testOnly=false] convert address to test-only form. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n */\nexport function toUserFriendlyAddress(hexAddress, testOnly = false) {\n const { wc, hex } = parseHexAddress(hexAddress);\n let tag = bounceableTag;\n if (testOnly) {\n tag |= testOnlyTag;\n }\n const addr = new Int8Array(34);\n addr[0] = tag;\n addr[1] = wc;\n addr.set(hex, 2);\n const addressWithChecksum = new Uint8Array(36);\n addressWithChecksum.set(addr);\n addressWithChecksum.set(crc16(addr), 34);\n let addressBase64 = Base64.encode(addressWithChecksum);\n return addressBase64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction parseHexAddress(hexAddress) {\n if (!hexAddress.includes(':')) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\".`);\n }\n const parts = hexAddress.split(':');\n if (parts.length !== 2) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\" only once.`);\n }\n const wc = parseInt(parts[0]);\n if (wc !== 0 && wc !== -1) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. WC must be eq 0 or -1, but ${wc} received.`);\n }\n const hex = parts[1];\n if ((hex === null || hex === void 0 ? void 0 : hex.length) !== 64) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Hex part must be 64bytes length, but ${hex === null || hex === void 0 ? void 0 : hex.length} received.`);\n }\n return {\n wc,\n hex: hexToBytes(hex)\n };\n}\nfunction crc16(data) {\n const poly = 0x1021;\n let reg = 0;\n const message = new Uint8Array(data.length + 2);\n message.set(data);\n for (let byte of message) {\n let mask = 0x80;\n while (mask > 0) {\n reg <<= 1;\n if (byte & mask) {\n reg += 1;\n }\n mask >>= 1;\n if (reg > 0xffff) {\n reg &= 0xffff;\n reg ^= poly;\n }\n }\n }\n return new Uint8Array([Math.floor(reg / 256), reg % 256]);\n}\nconst toByteMap = {};\nfor (let ord = 0; ord <= 0xff; ord++) {\n let s = ord.toString(16);\n if (s.length < 2) {\n s = '0' + s;\n }\n toByteMap[s] = ord;\n}\nfunction hexToBytes(hex) {\n hex = hex.toLowerCase();\n const length2 = hex.length;\n if (length2 % 2 !== 0) {\n throw new ParseHexError('Hex string must have length a multiple of 2: ' + hex);\n }\n const length = length2 / 2;\n const result = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const doubled = i * 2;\n const hexSubstring = hex.substring(doubled, doubled + 2);\n if (!toByteMap.hasOwnProperty(hexSubstring)) {\n throw new ParseHexError('Invalid hex character: ' + hexSubstring);\n }\n result[i] = toByteMap[hexSubstring];\n }\n return result;\n}\n//# sourceMappingURL=address.js.map","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return { ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: null,\n owner: detachedOwner || owner\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n resolved = true;\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (!err) setValue(() => v);\n setState(err ? \"errored\" : \"ready\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && lookup(Owner, SuspenseContext.id),\n v = value(),\n err = error();\n if (err && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (typeof p !== \"object\" || !(p && \"then\" in p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(node.value, options);\n updateComputation(node);\n setDeferred(() => node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n const listener = Listener;\n Listener = null;\n try {\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n Owner = o;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext({}));\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {\n if (!runningTransition && this.state === STALE || runningTransition && this.tState === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (TransitionRunning) o.tState = STALE;else o.state = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) Transition && Transition.running ? node.tState = STALE : node.state = STALE;\n handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if (!runningTransition && node.state === 0 || runningTransition && node.tState === 0) return;\n if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (!runningTransition && node.state || runningTransition && node.tState) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if (!runningTransition && node.state === STALE || runningTransition && node.tState === STALE) {\n updateComputation(node);\n } else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!Updates) Effects = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) setHydrateContext();\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n if (!runningTransition && source.state === STALE || runningTransition && source.tState === STALE) {\n if (source !== ignore) runTop(source);\n } else if (!runningTransition && source.state === PENDING || runningTransition && source.tState === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (!runningTransition && !o.state || runningTransition && !o.tState) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = 0; i < node.tOwned.length; i++) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = 0; i < node.owned.length; i++) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = 0; i < node.cleanups.length; i++) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n node.context = null;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error || typeof err === \"string\") return err;\n return new Error(\"Unknown error\");\n}\nfunction handleError(err) {\n err = castError(err);\n const fns = ERROR && lookup(Owner, ERROR);\n if (!fns) throw err;\n for (const f of fns) f(err);\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const target = {};\n for (let i = sources.length - 1; i >= 0; i--) {\n if (sources[i]) {\n const descriptors = Object.getOwnPropertyDescriptors(sources[i]);\n for (const key in descriptors) {\n if (key in target) continue;\n Object.defineProperty(target, key, {\n enumerable: true,\n get() {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = (sources[i] || {})[key];\n if (v !== undefined) return v;\n }\n }\n });\n }\n }\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const blocked = new Set(keys.flat());\n if ($PROXY in props) {\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const descriptors = Object.getOwnPropertyDescriptors(props);\n keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));\n return keys.map(k => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (!(key in props)) continue;\n Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {\n get() {\n return props[key];\n },\n set() {\n return true;\n },\n enumerable: true\n });\n }\n return clone;\n });\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (false) ;\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n let strictEqual = false;\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => strictEqual ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => child(c)) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n let strictEqual = false;\n let keyed = false;\n const equals = (a, b) => a[0] === b[0] && (strictEqual ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n }, undefined, {\n equals\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => c(when)) : c;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n let v;\n if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n const res = typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n onError(setErrored);\n return res;\n }\n onError(setErrored);\n return props.children;\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref && (p = ref[0]) && p !== \"$$f\") {\n if (typeof p !== \"object\" || !(\"then\" in p)) p = Promise.resolve(p);\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(err => {\n if (err || sharedConfig.done) {\n err && (error = err);\n return set();\n }\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nlet DEV;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createRoot, createRenderEffect, sharedConfig, untrack, enableHydration, createSignal, onCleanup, splitProps, createMemo } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: \"formNoValidate\",\n ismap: \"isMap\",\n nomodule: \"noModule\",\n playsinline: \"playsInline\",\n readonly: \"readOnly\"\n});\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, check, isSVG) {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n let node = t.content.firstChild;\n if (isSVG) node = node.firstChild;\n return node;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = globalThis._$HY.load;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template.cloneNode(true);\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"#\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) {\n sharedConfig.done = true;\n document.querySelectorAll(\"[id^=pl-]\").forEach(elem => elem.remove());\n }\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context && !current) current = [...parent.childNodes];\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n if (!array.length) return current;\n for (let i = 0; i < array.length; i++) {\n if (array[i].parentNode) return current = array;\n }\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value instanceof Node) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[i];\n if (item instanceof Node) {\n normalized.push(item);\n } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if ((typeof item) === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) {\n normalized.push(prev);\n } else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nfunction voidFn() {}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = props.mount || document.body;\n function renderPortal() {\n if (sharedConfig.context) {\n const [s, set] = createSignal(false);\n queueMicrotask(() => set(true));\n return () => s() && props.children;\n } else return () => props.children;\n }\n if (mount instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(mount, () => !clean() ? renderPortal()() : dispose(), null));\n onCleanup(() => {\n if (sharedConfig.context) queueMicrotask(cleanup);else cleanup();\n });\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, renderPortal());\n mount.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => mount.removeChild(container));\n }\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","import { createSignal } from 'solid-js';\nimport { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\n\nexport type ActionName = 'confirm-transaction' | 'transaction-sent' | 'transaction-canceled';\n\nexport type Action = {\n name: ActionName;\n openModal: boolean;\n showNotification: boolean;\n};\n\nexport const [walletsModalOpen, setWalletsModalOpen] = createSignal(false);\nexport const [lastSelectedWalletInfo, setLastSelectedWalletInfo] =\n createSignal<WalletInfoWithOpenMethod | null>(null);\nexport const [action, setAction] = createSignal<Action | null>(null);\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { css, setup as gooberSetup } from \"goober\";\r\nimport {\r\n mergeProps,\r\n splitProps,\r\n createContext,\r\n useContext,\r\n createComponent,\r\n untrack,\r\n} from \"solid-js\";\r\nimport { Dynamic, isServer, spread } from \"solid-js/web\";\r\nexport { css, glob, extractCss, keyframes } from \"goober\";\r\n\r\nlet getForwardProps = null;\r\n\r\nexport function shouldForwardProp(predicate) {\r\n return props => props.filter(predicate);\r\n}\r\n\r\nexport function setup(prefixer, shouldForwardProp = null) {\r\n gooberSetup(null, prefixer);\r\n getForwardProps = shouldForwardProp;\r\n}\r\nconst ThemeContext = createContext();\r\nexport function ThemeProvider(props) {\r\n return createComponent(ThemeContext.Provider, {\r\n value: props.theme,\r\n get children() {\r\n return props.children;\r\n }\r\n });\r\n}\r\nexport function useTheme() {\r\n return useContext(ThemeContext);\r\n}\r\n\r\nfunction makeStyled(tag) {\r\n let _ctx = this || {};\r\n return (...args) => {\r\n const Styled = props => {\r\n const theme = useContext(ThemeContext);\r\n const withTheme = mergeProps(props, { theme });\r\n const clone = mergeProps(withTheme, {\r\n get class() {\r\n const pClass = withTheme.class,\r\n append = \"class\" in withTheme && /^go[0-9]+/.test(pClass);\r\n // Call `css` with the append flag and pass the props\r\n let className = css.apply(\r\n { target: _ctx.target, o: append, p: withTheme, g: _ctx.g },\r\n args\r\n );\r\n return [pClass, className].filter(Boolean).join(\" \");\r\n }\r\n });\r\n const [local, newProps] = splitProps(clone, [\"as\", \"theme\"]);\r\n const htmlProps = getForwardProps\r\n ? splitProps(newProps, getForwardProps(Object.keys(newProps)))[0]\r\n : newProps;\r\n const createTag = local.as || tag;\r\n let el;\r\n\r\n if (typeof createTag === \"function\") {\r\n el = createTag(htmlProps);\r\n } else {\r\n if (isServer) {\r\n const [local, others] = splitProps(htmlProps, [\"children\", \"theme\"]);\r\n el = Dynamic({\r\n component: createTag,\r\n get children() {\r\n return local.children;\r\n },\r\n ...others\r\n });\r\n } else {\r\n if (_ctx.g == 1) {\r\n // When using Global Styles we don't want to hydrate the unused nodes\r\n el = document.createElement(createTag);\r\n spread(el, htmlProps);\r\n } else {\r\n el = Dynamic(mergeProps({ component: createTag }, htmlProps));\r\n }\r\n }\r\n }\r\n return el;\r\n };\r\n Styled.class = props => {\r\n return untrack(() => {\r\n return css.apply({ target: _ctx.target, p: props, g: _ctx.g }, args);\r\n });\r\n };\r\n\r\n return Styled;\r\n };\r\n}\r\n\r\nexport const styled = new Proxy(makeStyled, {\r\n get(target, tag) {\r\n return target(tag);\r\n }\r\n});\r\n\r\nexport function createGlobalStyles() {\r\n const fn = makeStyled.call({ g: 1 }, \"div\").apply(null, arguments);\r\n\r\n return function GlobalStyles(props) {\r\n fn(props);\r\n return null;\r\n };\r\n}\r\n","import en from 'src/app/assets/i18n/en.json';\nimport ru from 'src/app/assets/i18n/ru.json';\nimport { Locales } from 'src/models/locales';\n\nexport const i18nDictionary: Record<Locales, object> = {\n en: parseDictionary(en),\n ru: parseDictionary(ru)\n};\n\n// replace '$key1.key2.key3' with it's value\nfunction parseDictionary(dictionary: Record<string, unknown>): Record<string, unknown> {\n const refSymbol = '$';\n\n const iterate = (subDictionary: Record<string, unknown>): void => {\n Object.entries(subDictionary).forEach(([key, value]) => {\n if (typeof value === 'object' && value) {\n return iterate(value as Record<string, unknown>);\n }\n\n if (typeof value === 'string') {\n if (value[0] === refSymbol) {\n const path = value.slice(1).split('.');\n let obj: Record<string, unknown> = dictionary;\n path.forEach(item => {\n if (item in obj) {\n obj = obj[item] as Record<string, unknown>;\n } else {\n throw new Error(\n `Cannot parse translations: there is no property ${item} in translation`\n );\n }\n });\n\n subDictionary[key] = obj;\n }\n\n if (value.slice(0, 2) === `\\\\${refSymbol}`) {\n subDictionary[key] = value.slice(1);\n }\n }\n });\n };\n\n iterate(dictionary);\n return dictionary;\n}\n","import { ITonConnect } from '@tonconnect/sdk';\nimport { createContext } from 'solid-js';\n\nexport const ConnectorContext = createContext<ITonConnect>();\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $NAME = Symbol(\"store-name\");\nfunction wrap$1(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps$1)\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return obj != null && typeof obj === \"object\" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if (result = item != null && item[$RAW]) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getDataNodes(target) {\n let nodes = target[$NODE];\n if (!nodes) Object.defineProperty(target, $NODE, {\n value: nodes = {}\n });\n return nodes;\n}\nfunction getDataNode(nodes, property, value) {\n return nodes[property] || (nodes[property] = createDataNode(value));\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n if (getListener()) {\n const nodes = getDataNodes(target);\n (nodes._ || (nodes._ = createDataNode()))();\n }\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nfunction createDataNode(value) {\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return s;\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (getListener() && (typeof value !== \"function\" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) delete state[property];else state[property] = value;\n let nodes = getDataNodes(state),\n node;\n if (node = getDataNode(nodes, property, prev)) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) (node = getDataNode(nodes, \"length\", len)) && node.$(state.length);\n (node = nodes._) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const {\n from = 0,\n to = current.length - 1,\n by = 1\n } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => target[$PROXY][property] = v;\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {\n if (target !== previous) {\n if (property === $ROOT) return target;\n setProperty(parent, property, target);\n }\n return;\n }\n if (Array.isArray(target)) {\n if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const {\n merge,\n key = \"id\"\n } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(v, {\n [$ROOT]: state\n }, $ROOT, merge, key);\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, proxy = new Proxy(state, setterTraps));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","export enum THEME {\n DARK = 'DARK',\n LIGHT = 'LIGHT'\n}\n\nexport type Theme = THEME | 'SYSTEM';\n","import { ColorsSet } from 'src/models/colors-set';\n\nexport const defaultLightColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#31A6F5',\n foreground: '#FFFFFF'\n },\n accent: '#31A6F5',\n icon: {\n primary: '#0F0F0F',\n secondary: '#7A8999',\n tertiary: '#C1CAD2',\n success: '#29CC6A'\n },\n background: {\n primary: '#FFFFFF',\n secondary: '#F1F3F5'\n },\n text: {\n primary: '#0F0F0F',\n secondary: '#7A8999'\n }\n};\n\nexport const defaultDarkColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#31A6F5',\n foreground: '#FFFFFF'\n },\n accent: '#E5E5EA',\n icon: {\n primary: '#E5E5EA',\n secondary: '#909099',\n tertiary: '#434347',\n success: '#29CC6A'\n },\n background: {\n primary: '#121214',\n secondary: '#18181A'\n },\n text: {\n primary: '#E5E5EA',\n secondary: '#7D7D85'\n }\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import deepmerge from 'deepmerge';\nimport { DeepPartial } from 'src/app/utils/types';\nimport { isPlainObject } from 'is-plain-object';\n\nexport function mergeOptions<T>(options: DeepPartial<T> | undefined | null, defaultOptions: T): T {\n if (!options) {\n return defaultOptions;\n }\n\n const overwriteMerge = (_: unknown[], sourceArray: unknown[], __: unknown): unknown[] =>\n sourceArray;\n\n return deepmerge(defaultOptions, options, {\n arrayMerge: overwriteMerge,\n isMergeableObject: isPlainObject\n });\n}\n","import { createStore } from 'solid-js/store';\nimport { DefaultTheme } from 'solid-styled-components';\nimport { THEME } from 'src/models/THEME';\nimport { defaultDarkColorsSet, defaultLightColorsSet } from 'src/app/styles/default-colors';\nimport { BorderRadius, PartialColorsSet } from 'src/models';\nimport { mergeOptions } from 'src/app/utils/options';\n\nexport const [themeState, setThemeState] = createStore<DefaultTheme>({\n theme: THEME.LIGHT,\n colors: defaultLightColorsSet,\n borderRadius: 'm'\n});\n\nconst themeColorsMappingDefault = {\n [THEME.LIGHT]: defaultLightColorsSet,\n [THEME.DARK]: defaultDarkColorsSet\n};\n\nconst themeCustomColors: Record<THEME, PartialColorsSet | undefined> = {\n [THEME.LIGHT]: undefined,\n [THEME.DARK]: undefined\n};\n\nexport function setTheme(theme: THEME, colorsSet?: Partial<Record<THEME, PartialColorsSet>>): void {\n if (colorsSet) {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n }\n\n setThemeState({\n theme,\n colors: mergeOptions(themeCustomColors[theme], themeColorsMappingDefault[theme])\n });\n}\n\nexport function setBorderRadius(borderRadius: BorderRadius): void {\n setThemeState({ borderRadius });\n}\n\nexport function setColors(colorsSet: Partial<Record<THEME, PartialColorsSet>>): void {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n\n setThemeState(state => ({\n colors: mergeOptions(\n themeCustomColors[state.theme as THEME],\n themeColorsMappingDefault[state.theme as THEME]\n )\n }));\n}\n","import { JSXElement } from 'solid-js';\nimport { createGlobalStyles } from 'solid-styled-components';\n\nexport const GlobalStyles = (): JSXElement => {\n document.body.addEventListener('mousedown', () => document.body.classList.add('using-mouse'));\n\n document.body.addEventListener('keydown', event => {\n if (event.key === 'Tab') {\n document.body.classList.remove('using-mouse');\n }\n });\n\n const Styles = createGlobalStyles`\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-family: SF Pro, Roboto, sans-serif;\n }\n html, body {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n \n *:focus {\n outline: #08f auto 2px;\n }\n\n body.using-mouse :focus {\n outline: none;\n }\n \n li {\n list-style: none;\n }\n button {\n outline: none;\n }\n`;\n return <Styles />;\n};\n","import { Property } from 'csstype';\ntype Color = Property.Color;\n\nexport function hexToRgb(hex: string): string {\n if (hex[0] === '#') {\n hex = hex.slice(1);\n }\n\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n\n return [r, g, b].join(',');\n}\n\nexport function rgba(color: Color, opacity: number): string {\n if (color[0] === '#') {\n color = hexToRgb(color);\n }\n\n return `rgba(${color}, ${opacity})`;\n}\n","import { styled } from 'solid-styled-components';\nimport { rgba } from 'src/app/utils/css';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const ButtonStyled = styled.button`\n background-color: ${props => rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n\n padding: 9px 16px;\n border: none;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};\n\n font-size: 14px;\n font-weight: 590;\n line-height: 18px;\n letter-spacing: -0.154px;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: ${props => (props.disabled ? 'unset' : 'scale(1.04)')};\n }\n\n &:active {\n transform: ${props => (props.disabled ? 'unset' : 'scale(0.96)')};\n }\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { ButtonStyled } from 'src/app/components/button/style';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Identifiable } from 'src/app/models/identifiable';\n\nexport interface ButtonProps extends Styleable, Identifiable {\n children: JSXElement;\n onClick?: () => void;\n disabled?: boolean;\n ref?: HTMLButtonElement | ((el: HTMLButtonElement) => void) | undefined;\n}\n\nexport const Button: Component<ButtonProps> = props => {\n return (\n <ButtonStyled\n class={props.class}\n id={props.id}\n onClick={() => props.onClick?.()}\n ref={props.ref}\n disabled={props.disabled}\n >\n {props.children}\n </ButtonStyled>\n );\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { createSignal, children, createMemo, createComputed, untrack, batch, createEffect } from 'solid-js';\n\nfunction nextFrame(fn) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nconst Transition = props => {\n let el;\n let first = true;\n const [s1, set1] = createSignal();\n const [s2, set2] = createSignal();\n const resolved = children(() => props.children);\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\"\n };\n });\n\n function enterTransition(el, prev) {\n if (!first || props.appear) {\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n batch(() => {\n s1() !== el && set1(el);\n s2() === el && set2(undefined);\n });\n onAfterEnter && onAfterEnter(el);\n if (props.mode === \"inout\") exitTransition(el, prev);\n }\n }\n }\n\n prev && !props.mode ? set2(el) : set1(el);\n }\n\n function exitTransition(el, prev) {\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n if (!prev.parentNode) return endTransition();\n onBeforeExit && onBeforeExit(prev);\n prev.classList.add(...exitClasses);\n prev.classList.add(...exitActiveClasses);\n nextFrame(() => {\n prev.classList.remove(...exitClasses);\n prev.classList.add(...exitToClasses);\n });\n onExit && onExit(prev, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n prev.addEventListener(\"transitionend\", endTransition);\n prev.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === prev) {\n prev.removeEventListener(\"transitionend\", endTransition);\n prev.removeEventListener(\"animationend\", endTransition);\n prev.classList.remove(...exitActiveClasses);\n prev.classList.remove(...exitToClasses);\n s1() === prev && set1(undefined);\n onAfterExit && onAfterExit(prev);\n if (props.mode === \"outin\") enterTransition(el, prev);\n }\n }\n }\n\n createComputed(prev => {\n el = resolved();\n\n while (typeof el === \"function\") el = el();\n\n return untrack(() => {\n if (el && el !== prev) {\n if (props.mode !== \"outin\") enterTransition(el, prev);else if (first) set1(el);\n }\n\n if (prev && prev !== el && props.mode !== \"inout\") exitTransition(el, prev);\n first = false;\n return el;\n });\n });\n return [s1, s2];\n};\n\nfunction getRect(element) {\n const {\n top,\n bottom,\n left,\n right,\n width,\n height\n } = element.getBoundingClientRect();\n const parentRect = element.parentNode.getBoundingClientRect();\n return {\n top: top - parentRect.top,\n bottom,\n left: left - parentRect.left,\n right,\n width,\n height\n };\n}\n\nconst TransitionGroup = props => {\n const resolved = children(() => props.children);\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\",\n moveClass: props.moveClass || name + \"-move\"\n };\n });\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const [combined, setCombined] = createSignal();\n let p = [];\n let first = true;\n createComputed(() => {\n const c = resolved();\n const comb = [...c];\n const next = new Set(c);\n const prev = new Set(p);\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n\n for (let i = 0; i < c.length; i++) {\n const el = c[i];\n\n if (!first && !prev.has(el)) {\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n onAfterEnter && onAfterEnter(el);\n }\n }\n }\n }\n\n for (let i = 0; i < p.length; i++) {\n const old = p[i];\n\n if (!next.has(old) && old.parentNode) {\n comb.splice(i, 0, old);\n onBeforeExit && onBeforeExit(old);\n old.classList.add(...exitClasses);\n old.classList.add(...exitActiveClasses);\n nextFrame(() => {\n old.classList.remove(...exitClasses);\n old.classList.add(...exitToClasses);\n });\n onExit && onExit(old, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n old.addEventListener(\"transitionend\", endTransition);\n old.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === old) {\n old.removeEventListener(\"transitionend\", endTransition);\n old.removeEventListener(\"animationend\", endTransition);\n old.classList.remove(...exitActiveClasses);\n old.classList.remove(...exitToClasses);\n onAfterExit && onAfterExit(old);\n p = p.filter(i => i !== old);\n setCombined(p);\n }\n }\n }\n }\n\n p = comb;\n setCombined(comb);\n });\n createEffect(nodes => {\n const c = combined();\n c.forEach(child => {\n let n;\n\n if (!(n = nodes.get(child))) {\n nodes.set(child, n = {\n pos: getRect(child),\n new: !first\n });\n } else if (n.new) {\n n.new = false;\n n.newPos = getRect(child);\n }\n\n if (n.new) {\n child.addEventListener(\"transitionend\", () => {\n n.new = false;\n child.parentNode && (n.newPos = getRect(child));\n }, {\n once: true\n });\n }\n\n n.newPos && (n.pos = n.newPos);\n n.newPos = getRect(child);\n });\n\n if (first) {\n first = false;\n return nodes;\n }\n\n c.forEach(child => {\n const c = nodes.get(child);\n const oldPos = c.pos;\n const newPos = c.newPos;\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n\n if (dx || dy) {\n c.moved = true;\n const s = child.style;\n s.transform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n }\n });\n document.body.offsetHeight;\n c.forEach(child => {\n const c = nodes.get(child);\n\n if (c.moved) {\n c.moved = false;\n const s = child.style;\n const moveClasses = classnames().moveClass.split(\" \");\n child.classList.add(...moveClasses);\n s.transform = s.transitionDuration = \"\";\n\n function endTransition(e) {\n if (e && e.target !== child || !child.parentNode) return;\n\n if (!e || /transform$/.test(e.propertyName)) {\n child.removeEventListener(\"transitionend\", endTransition);\n child.classList.remove(...moveClasses);\n }\n }\n\n child.addEventListener(\"transitionend\", endTransition);\n }\n });\n return nodes;\n }, new Map());\n return combined;\n};\n\nexport { Transition, TransitionGroup };\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function clickOutside(el: Element, accessor: Accessor<() => void>): void {\n const onClick = (e: Event): void | boolean => !el.contains(e.target as Node) && accessor()?.();\n document.body.addEventListener('click', onClick);\n\n onCleanup(() => document.body.removeEventListener('click', onClick));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n clickOutside: () => void;\n }\n }\n}\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function escPressed(_: Element, accessor: Accessor<() => void>): void {\n const onKeyPress = (e: Event): void | boolean => {\n if ((e as KeyboardEvent).key === 'Escape') {\n (document.activeElement as HTMLElement)?.blur();\n accessor()?.();\n }\n };\n document.body.addEventListener('keydown', onKeyPress);\n\n onCleanup(() => document.body.removeEventListener('keydown', onKeyPress));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n keyPressed: () => void;\n }\n }\n}\n","export type Device = 'mobile' | 'tablet' | 'desktop';\n\nconst maxWidth = {\n mobile: 440,\n tablet: 1020\n};\n\nexport function isDevice(device: keyof typeof maxWidth | 'desktop'): boolean {\n const width = window.innerWidth;\n\n switch (device) {\n case 'desktop':\n return width > maxWidth.tablet;\n case 'tablet':\n return width > maxWidth.mobile;\n default:\n case 'mobile':\n return width <= maxWidth.mobile;\n }\n}\n\nexport function media(device: Device): string {\n switch (device) {\n case 'mobile':\n return `@media (max-width: ${maxWidth.mobile}px)`;\n case 'tablet':\n return `@media (max-width: ${maxWidth.tablet}px) (min-width: ${maxWidth.mobile}px)`;\n default:\n case 'desktop':\n return `@media (min-width: ${maxWidth.tablet}px)`;\n }\n}\n\nexport function mediaMin(px: number): string {\n return `@media (min-width: ${px}px)`;\n}\n\nexport function mediaMax(px: number): string {\n return `@media (max-width: ${px}px)`;\n}\n\nexport function mediaMinMax(pxMin: number, pxMax: number): string {\n return `@media (min-width: ${pxMin}px) (max-width: ${pxMax}px)`;\n}\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { styled, useTheme } from 'solid-styled-components';\n\ninterface ArrowIconProps {\n fill?: Property.Color;\n direction?: 'left' | 'right' | 'top' | 'bottom';\n}\n\nconst rotationDegrees = {\n left: 0,\n top: 90,\n right: 180,\n bottom: 270\n};\n\nexport const ArrowIcon: Component<ArrowIconProps> = props => {\n const theme = useTheme();\n const fill = (): Property.Color => props.fill || theme.colors.icon.secondary;\n const direction = (): 'left' | 'right' | 'top' | 'bottom' => props.direction || 'left';\n\n const Svg = styled('svg')<{ svgDirection: 'left' | 'right' | 'top' | 'bottom' }>`\n transform: rotate(${props => rotationDegrees[props.svgDirection]}deg);\n transition: transform 0.1s ease-in-out;\n `;\n\n return (\n <Svg\n width=\"6\"\n height=\"12\"\n viewBox=\"0 0 6 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n svgDirection={direction()}\n >\n <path\n d=\"M5.1 1.40012L1.5 6.0001L5.1 10.6001\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </Svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface CloseIconProps {\n fill?: Property.Color;\n}\n\nexport const CloseIcon: Component<CloseIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.900031 0.900397L5.00002 5.00039M5.00002 5.00039L9.10003 9.1004M5.00002 5.00039L9.10003 0.900391M5.00002 5.00039L0.900024 9.1004\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const IconButtonStyled = styled.button`\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${props => props.theme!.colors.background.secondary};\n border: none;\n cursor: pointer;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: scale(1.04);\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Property } from 'csstype';\nimport { Component, JSXElement, Match, Show, Switch } from 'solid-js';\nimport { ArrowIcon } from 'src/app/components/icons/arrow-icon';\nimport { CloseIcon } from 'src/app/components/icons/close-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { IconButtonStyled } from './style';\n\nexport interface IconButtonProps extends Styleable {\n fill?: Property.Color;\n children?: JSXElement;\n icon?: 'close' | 'arrow';\n onClick: () => void;\n}\n\nexport const IconButton: Component<IconButtonProps> = props => {\n const icon = (): 'close' | 'arrow' => props.icon || 'close';\n return (\n <IconButtonStyled class={props.class} onClick={() => props.onClick()}>\n <Show when={!!props.children}>{props.children}</Show>\n <Show when={!props.children}>\n <Switch>\n <Match when={icon() === 'close'}>\n <CloseIcon fill={props.fill} />\n </Match>\n <Match when={icon() === 'arrow'}>\n <ArrowIcon fill={props.fill} />\n </Match>\n </Switch>\n </Show>\n </IconButtonStyled>\n );\n};\n","import { css, styled } from 'solid-styled-components';\nimport { IconButton } from 'src/app/components/icon-button';\nimport { media } from 'src/app/styles/media';\n\nexport const ModalBackgroundStyled = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n z-index: 1000;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.4);\n\n ${media('mobile')} {\n align-items: flex-end;\n }\n`;\n\nexport const ModalWrapperClass = css`\n position: relative;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 16px 64px rgba(0, 0, 0, 0.16);\n min-height: 100px;\n width: 440px;\n padding: 44px 56px 24px;\n\n ${media('mobile')} {\n width: 100%;\n }\n`;\n\nexport const CloseButtonStyled = styled(IconButton)`\n position: absolute;\n right: 16px;\n top: 16px;\n`;\n","import cn from 'classnames';\nimport { Component, JSXElement, Show } from 'solid-js';\nimport { Transition } from 'solid-transition-group';\nimport clickOutsideDirective from 'src/app/directives/click-outside';\nimport keyPressedDirective from 'src/app/directives/key-pressed';\nimport { Styleable } from 'src/app/models/styleable';\nimport { isDevice, media } from 'src/app/styles/media';\nimport { CloseButtonStyled, ModalBackgroundStyled, ModalWrapperClass } from './style';\nimport { css, useTheme } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { Identifiable } from 'src/app/models/identifiable';\nconst clickOutside = clickOutsideDirective;\nconst keyPressed = keyPressedDirective;\n\nconst borders: BorderRadiusConfig = {\n m: '24px',\n s: '16px',\n none: '0'\n};\n\nexport interface ModalProps extends Styleable, Identifiable {\n children: JSXElement;\n opened: boolean;\n onClose: () => void;\n}\n\nexport const Modal: Component<ModalProps> = props => {\n const theme = useTheme();\n return (\n <Transition\n onBeforeEnter={el => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n el.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n el.firstElementChild!.animate(\n [{ transform: 'translateY(390px)' }, { transform: 'translateY(0)' }],\n {\n duration\n }\n );\n }\n }}\n onExit={(el, done) => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n const backgroundAnimation = el.animate([{ opacity: 1 }, { opacity: 0 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n const contentAnimation = el.firstElementChild!.animate(\n [{ transform: 'translateY(0)' }, { transform: 'translateY(390px)' }],\n {\n duration\n }\n );\n\n Promise.all([backgroundAnimation.finished, contentAnimation.finished]).then(\n done\n );\n } else {\n backgroundAnimation.finished.then(done);\n }\n }}\n >\n <Show when={props.opened}>\n <ModalBackgroundStyled>\n <div\n id={props.id}\n class={cn(\n ModalWrapperClass,\n props.class,\n css`\n background-color: ${theme.colors.background.primary};\n border-radius: ${borders[theme.borderRadius]};\n\n ${media('mobile')} {\n border-radius: ${borders[theme.borderRadius]}\n ${borders[theme.borderRadius]} 0 0;\n }\n `\n )}\n use:clickOutside={() => props.onClose()}\n use:keyPressed={() => props.onClose()}\n >\n <CloseButtonStyled icon=\"close\" onClick={() => props.onClose()} />\n {props.children}\n </div>\n </ModalBackgroundStyled>\n </Show>\n </Transition>\n );\n};\n","import { createContext, createSignal, useContext } from 'solid-js';\nimport { createStore } from 'solid-js/store';\n\n// src/index.ts\nvar deepReadObject = (obj, path, defaultValue) => {\n const value = path.trim().split(\".\").reduce((a, b) => a ? a[b] : void 0, obj);\n return value !== void 0 ? value : defaultValue;\n};\nvar template = (str, params, reg = /{{(.*?)}}/g) => str.replace(reg, (_, key) => deepReadObject(params, key, \"\"));\nvar createI18nContext = (init = {}, lang = navigator.language in init ? navigator.language : Object.keys(init)[0]) => {\n const [locale, setLocale] = createSignal(lang);\n const [dict, setDict] = createStore(init);\n const translate = (key, params, defaultValue) => {\n const val = deepReadObject(dict[locale()], key, defaultValue || \"\");\n if (typeof val === \"function\")\n return val(params);\n if (typeof val === \"string\")\n return template(val, params || {});\n return val;\n };\n const actions = {\n add(lang2, table) {\n setDict(lang2, (t) => Object.assign(t || {}, table));\n },\n locale: (lang2) => lang2 ? setLocale(lang2) : locale(),\n dict: (lang2) => deepReadObject(dict, lang2)\n };\n return [translate, actions];\n};\nvar I18nContext = createContext({});\nvar useI18n = () => useContext(I18nContext);\n\nexport { I18nContext, createI18nContext, useI18n };\n","import { styled } from 'solid-styled-components';\n\nexport const H1Styled = styled.h1`\n font-style: normal;\n font-weight: 700;\n font-size: 24px;\n line-height: 30px;\n\n text-align: center;\n letter-spacing: 0.072px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 6px;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H1Styled } from './style';\n\nexport interface H1Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H1: Component<H1Props> = props => {\n const [t] = useI18n();\n return (\n <H1Styled class={props.class}>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H1Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H2Styled = styled.h2`\n font-style: normal;\n font-weight: 510;\n font-size: 16px;\n line-height: 22px;\n\n text-align: center;\n letter-spacing: -0.32px;\n\n color: ${props => props.theme!.colors.text.secondary};\n\n margin-top: 0;\n margin-bottom: 32px;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H2Styled } from './style';\n\nexport interface H2Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H2: Component<H2Props> = props => {\n const [t] = useI18n();\n return (\n <H2Styled class={props.class}>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H2Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H3Styled = styled.h3`\n font-style: normal;\n font-weight: 590;\n font-size: 15px;\n line-height: 20px;\n\n letter-spacing: -0.24px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 0;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H3Styled } from './style';\n\ninterface H3Props extends Translateable {\n children?: JSXElement;\n}\n\nexport const H3: Component<H3Props> = props => {\n const [t] = useI18n();\n\n return (\n <H3Styled>\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H3Styled>\n );\n};\n","import { Property } from 'csstype';\nimport { styled } from 'solid-styled-components';\n\nexport const TextStyled = styled.div<{\n fontSize: Property.FontSize;\n fontWeight: Property.FontWeight;\n letterSpacing: Property.LetterSpacing;\n lineHeight: Property.LineHeight;\n color: Property.Color;\n}>`\n font-style: normal;\n font-weight: ${props => props.fontWeight};\n font-size: ${props => props.fontSize};\n line-height: ${props => props.lineHeight};\n letter-spacing: ${props => props.letterSpacing};\n\n color: ${props => props.color};\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Property } from 'csstype';\nimport { Component, JSXElement, mergeProps } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TextStyled } from './style';\n\nexport interface TextProps extends Styleable, Translateable {\n children?: JSXElement;\n fontSize?: Property.FontSize;\n fontWeight?: Property.FontWeight;\n lineHeight?: Property.LineHeight;\n letterSpacing?: Property.LetterSpacing;\n color?: Property.Color;\n}\n\nexport const Text: Component<TextProps> = inputs => {\n const theme = useTheme();\n const [t] = useI18n();\n\n const color = (): Property.Color => inputs.color || theme.colors.text.primary;\n\n const props = mergeProps(\n {\n fontSize: '14px',\n fontWeight: '510',\n lineHeight: '130%',\n letterSpacing: '-0.154px'\n },\n inputs\n );\n return (\n <TextStyled\n fontSize={props.fontSize}\n fontWeight={props.fontWeight}\n lineHeight={props.lineHeight}\n letterSpacing={props.letterSpacing}\n color={color()}\n class={props.class}\n >\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </TextStyled>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface TonIconProps {\n fill?: Property.Color;\n}\n\nexport const TonIcon: Component<TonIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"16\"\n height=\"15\"\n viewBox=\"0 0 16 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.1839 12.7069C9.6405 13.6507 9.36881 14.1226 9.05907 14.348C8.42775 14.8074 7.57228 14.8074 6.94096 14.348C6.63122 14.1226 6.35952 13.6507 5.81613 12.7069L1.52066 5.24638C0.768635 3.94024 0.392625 3.28717 0.337617 2.75894C0.225505 1.68236 0.818944 0.655911 1.80788 0.215893C2.29309 0 3.04667 0 4.55383 0H11.4462C12.9534 0 13.7069 0 14.1922 0.215893C15.1811 0.655911 15.7745 1.68236 15.6624 2.75894C15.6074 3.28717 15.2314 3.94024 14.4794 5.24638L10.1839 12.7069ZM7.10002 11.3412L2.56139 3.48002C2.31995 3.06185 2.19924 2.85276 2.18146 2.68365C2.14523 2.33896 2.33507 2.01015 2.65169 1.86919C2.80703 1.80002 3.04847 1.80002 3.53133 1.80002H3.53134L7.10002 1.80002V11.3412ZM8.90001 11.3412L13.4387 3.48002C13.6801 3.06185 13.8008 2.85276 13.8186 2.68365C13.8548 2.33896 13.665 2.01015 13.3484 1.86919C13.193 1.80002 12.9516 1.80002 12.4687 1.80002L8.90001 1.80002V11.3412Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface SuccessIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const SuccessIcon: Component<SuccessIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.success;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M7.5 13L10 15.5L16.5 9\"\n stroke={theme.colors.constant.white}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface ErrorIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const ErrorIcon: Component<ErrorIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.86358 9.13637C7.51211 8.7849 7.51211 8.21505 7.86358 7.86358C8.21505 7.51211 8.7849 7.51211 9.13637 7.86358L12 10.7272L14.8636 7.86358C15.2151 7.51211 15.7849 7.51211 16.1364 7.86358C16.4878 8.21505 16.4878 8.7849 16.1364 9.13637L13.2728 12L16.1364 14.8636C16.4878 15.2151 16.4878 15.7849 16.1364 16.1364C15.7849 16.4878 15.2151 16.4878 14.8636 16.1364L12 13.2728L9.13637 16.1364C8.7849 16.4878 8.21505 16.4878 7.86358 16.1364C7.51211 15.7849 7.51211 15.2151 7.86358 14.8636L10.7272 12L7.86358 9.13637Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n );\n};\n","import cn from 'classnames';\nimport type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport {css, keyframes, useTheme} from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LoaderIconProps extends Styleable {\n fill?: Property.Color;\n}\n\nexport const LoaderIcon: Component<LoaderIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.tertiary;\n\n const rotateAnimation = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const svgClass = css`\n animation: ${rotateAnimation} 1s linear infinite;\n `;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M8.00002 18.9282C11.8264 21.1373 16.7191 19.8263 18.9282 16C21.1374 12.1736 19.8264 7.28092 16 5.07178C12.1737 2.86264 7.28096 4.17364 5.07182 7.99998\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import { createContext } from 'solid-js';\nimport { TonConnectUI } from 'src/ton-connect-ui';\n\nexport const TonConnectUiContext = createContext<TonConnectUI>();\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport {useTheme} from \"solid-styled-components\";\n\ninterface CopyIconProps {\n fill?: Property.Color;\n}\n\nexport const CopyIcon: Component<CopyIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.76228 2.09998H7.79998H10.2001H10.2378H10.2378H10.2378C11.0459 2.09997 11.7067 2.09996 12.2438 2.14384C12.7997 2.18926 13.3017 2.28614 13.7706 2.52505C14.5045 2.89896 15.1011 3.49558 15.475 4.22941C15.7139 4.6983 15.8108 5.20038 15.8562 5.75629C15.9001 6.29337 15.9001 6.95422 15.9001 7.76227V7.79998V8.1H16.2H16.2377C17.0457 8.09999 17.7066 8.09998 18.2437 8.14386C18.7996 8.18928 19.3017 8.28616 19.7705 8.52507C20.5044 8.89898 21.101 9.4956 21.4749 10.2294C21.7138 10.6983 21.8107 11.2004 21.8561 11.7563C21.9 12.2934 21.9 12.9542 21.9 13.7623V13.8V16.2V16.2377C21.9 17.0458 21.9 17.7066 21.8561 18.2437C21.8107 18.7996 21.7138 19.3017 21.4749 19.7706C21.101 20.5044 20.5044 21.101 19.7705 21.4749C19.3017 21.7138 18.7996 21.8107 18.2437 21.8561C17.7066 21.9 17.0458 21.9 16.2378 21.9H16.2377H16.2H13.8H13.7623H13.7622C12.9542 21.9 12.2934 21.9 11.7563 21.8561C11.2004 21.8107 10.6983 21.7138 10.2294 21.4749C9.49561 21.101 8.89898 20.5044 8.52507 19.7706C8.28616 19.3017 8.18928 18.7996 8.14386 18.2437C8.09998 17.7066 8.09999 17.0458 8.1 16.2377V16.2V15.9H7.79998H7.76227H7.76218C6.95417 15.9 6.29335 15.9 5.75629 15.8561C5.20038 15.8107 4.6983 15.7138 4.22941 15.4749C3.49558 15.101 2.89896 14.5044 2.52505 13.7705C2.28614 13.3017 2.18926 12.7996 2.14384 12.2437C2.09996 11.7066 2.09997 11.0458 2.09998 10.2377V10.2377V10.2377V10.2V7.79998V7.76228V7.76225V7.76224C2.09997 6.9542 2.09996 6.29336 2.14384 5.75629C2.18926 5.20038 2.28614 4.6983 2.52505 4.22941C2.89896 3.49558 3.49558 2.89896 4.22941 2.52505C4.6983 2.28614 5.20038 2.18926 5.75629 2.14384C6.29336 2.09996 6.95419 2.09997 7.76222 2.09998H7.76224H7.76228ZM8.1 14.1V13.8V13.7623C8.09999 12.9542 8.09998 12.2934 8.14386 11.7563C8.18928 11.2004 8.28616 10.6983 8.52507 10.2294C8.89898 9.4956 9.49561 8.89898 10.2294 8.52507C10.6983 8.28616 11.2004 8.18928 11.7563 8.14386C12.2934 8.09998 12.9542 8.09999 13.7623 8.1H13.8H14.1001V7.79998C14.1001 6.94505 14.0994 6.35798 14.0622 5.90287C14.0259 5.45827 13.9593 5.21944 13.8712 5.0466C13.6699 4.65146 13.3486 4.3302 12.9535 4.12886C12.7806 4.04079 12.5418 3.97419 12.0972 3.93786C11.6421 3.90068 11.055 3.89998 10.2001 3.89998H7.79998C6.94505 3.89998 6.35798 3.90068 5.90287 3.93786C5.45827 3.97419 5.21944 4.04079 5.0466 4.12886C4.65146 4.3302 4.3302 4.65146 4.12886 5.0466C4.04079 5.21944 3.97419 5.45827 3.93786 5.90287C3.90068 6.35798 3.89998 6.94505 3.89998 7.79998V10.2C3.89998 11.0549 3.90068 11.642 3.93786 12.0971C3.97419 12.5417 4.04079 12.7805 4.12886 12.9534C4.3302 13.3485 4.65146 13.6698 5.0466 13.8711C5.21944 13.9592 5.45827 14.0258 5.90287 14.0621C6.35798 14.0993 6.94505 14.1 7.79998 14.1H8.1ZM11.0466 10.1289C11.2195 10.0408 11.4583 9.97421 11.9029 9.93788C12.358 9.9007 12.9451 9.9 13.8 9.9H16.2C17.0549 9.9 17.642 9.9007 18.0971 9.93788C18.5417 9.97421 18.7805 10.0408 18.9534 10.1289C19.3485 10.3302 19.6698 10.6515 19.8711 11.0466C19.9592 11.2195 20.0258 11.4583 20.0621 11.9029C20.0993 12.358 20.1 12.9451 20.1 13.8V16.2C20.1 17.0549 20.0993 17.642 20.0621 18.0971C20.0258 18.5417 19.9592 18.7805 19.8711 18.9534C19.6698 19.3485 19.3485 19.6698 18.9534 19.8711C18.7805 19.9592 18.5417 20.0258 18.0971 20.0621C17.642 20.0993 17.0549 20.1 16.2 20.1H13.8C12.9451 20.1 12.358 20.0993 11.9029 20.0621C11.4583 20.0258 11.2195 19.9592 11.0466 19.8711C10.6515 19.6698 10.3302 19.3485 10.1289 18.9534C10.0408 18.7805 9.97421 18.5417 9.93788 18.0971C9.9007 17.642 9.9 17.0549 9.9 16.2V13.8C9.9 12.9451 9.9007 12.358 9.93788 11.9029C9.97421 11.4583 10.0408 11.2195 10.1289 11.0466C10.3302 10.6515 10.6515 10.3302 11.0466 10.1289Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface DisconnectIconProps {\n fill?: Property.Color;\n}\n\nexport const DisconnectIcon: Component<DisconnectIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0001 4.00003H8.80012C7.11996 4.00003 6.27989 4.00003 5.63815 4.32701C5.07366 4.61463 4.61472 5.07357 4.3271 5.63806C4.00012 6.27979 4.00012 7.11987 4.00012 8.80003V15.2C4.00012 16.8802 4.00012 17.7203 4.3271 18.362C4.61472 18.9265 5.07366 19.3854 5.63815 19.6731C6.27989 20 7.11996 20 8.80012 20H12.0001\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9 12H21M21 12L17 8M21 12L17 16\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","export function copyToClipboard(text: string): Promise<void> {\n if (navigator?.clipboard) {\n return navigator.clipboard.writeText(text);\n }\n\n fallbackCopyTextToClipboard(text);\n return Promise.resolve();\n}\n\nfunction fallbackCopyTextToClipboard(text: string): void {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(textArea);\n }\n}\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nconst dropdownBorders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const AccountButtonDropdownStyled = styled.div`\n width: 256px;\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => dropdownBorders[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.primary}\n \n color: ${props => props.theme!.colors.text.primary}\n`;\n\nexport const UlStyled = styled.ul`\n background-color: ${props => props.theme!.colors.background.primary};\n padding: 8px;\n`;\n\nexport const MenuButtonStyled = styled.button`\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n width: 100%;\n\n background-color: ${props => props.theme!.colors.background.primary};\n border: none;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n cursor: pointer;\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Component, createSignal, Show, useContext } from 'solid-js';\nimport { Text } from 'src/app/components';\nimport { CopyIcon } from 'src/app/components/icons/copy-icon';\nimport { DisconnectIcon } from 'src/app/components/icons/disconnect-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { CHAIN, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { AccountButtonDropdownStyled, MenuButtonStyled, UlStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\nconst MenuItemText: Component<{ children: string } & Translateable> = props => (\n <Text\n translationKey={props.translationKey}\n fontSize=\"15px\"\n letterSpacing=\"-0.24px\"\n fontWeight=\"590\"\n >\n {props.children}\n </Text>\n);\n\nexport interface AccountButtonDropdownProps extends Styleable, Identifiable {\n onClose: () => void;\n ref: HTMLDivElement | undefined;\n}\n\nexport const AccountButtonDropdown: Component<AccountButtonDropdownProps> = props => {\n const tonConnectUi = useContext(TonConnectUiContext)!;\n const connector = useContext(ConnectorContext)!;\n const [isCopiedShown, setIsCopiedShown] = createSignal(false);\n\n const onCopy = async (): Promise<void> => {\n const userFriendlyAddress = toUserFriendlyAddress(\n tonConnectUi.account!.address,\n tonConnectUi.account!.chain === CHAIN.TESTNET\n );\n await copyToClipboard(userFriendlyAddress);\n setIsCopiedShown(true);\n\n setTimeout(() => setIsCopiedShown(false), 1000);\n };\n\n const onDisconnect = (): void => {\n connector.disconnect();\n props.onClose();\n };\n\n return (\n <AccountButtonDropdownStyled ref={props.ref} class={props.class} id={props.id}>\n <UlStyled>\n <li>\n <MenuButtonStyled onClick={() => onCopy()}>\n <CopyIcon />\n <Show when={!isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copy\">\n Copy address\n </MenuItemText>\n </Show>\n <Show when={isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copied\">\n Address copied!\n </MenuItemText>\n </Show>\n </MenuButtonStyled>\n </li>\n <li>\n <MenuButtonStyled onClick={() => onDisconnect()}>\n <DisconnectIcon />\n <MenuItemText translationKey=\"button.dropdown.disconnect\">\n Disconnect\n </MenuItemText>\n </MenuButtonStyled>\n </li>\n </UlStyled>\n </AccountButtonDropdownStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\nexport const NotificationStyled = styled.div`\n width: 256px;\n padding: 12px 16px;\n display: flex;\n gap: 9px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const TextStyled = styled(Text)`\n margin-top: 4px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { H3 } from 'src/app/components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\nimport { NotificationStyled, TextStyled } from './style';\n\nexport interface NotificationProps extends Styleable {\n header: PropertyRequired<Translateable, 'translationKey'>;\n children?: string;\n text?: Translateable;\n icon?: JSXElement;\n}\n\nexport const Notification: Component<NotificationProps> = props => {\n return (\n <NotificationStyled class={props.class}>\n <div>\n <H3\n translationKey={props.header.translationKey}\n translationValues={props.header.translationValues}\n >\n {props.children}\n </H3>\n <Show when={props.text}>\n <TextStyled\n translationKey={props.text!.translationKey}\n translationValues={props.text!.translationValues}\n />\n </Show>\n </div>\n {props.icon}\n </NotificationStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n align-self: center;\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { LoaderIconStyled } from 'src/app/views/account-button/notifications/confirm-operation-notification/style';\n\ninterface ConfirmOperationNotificationProps extends Styleable {}\n\nexport const ConfirmOperationNotification: Component<ConfirmOperationNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.confirm.header' }}\n class={props.class}\n icon={<LoaderIconStyled />}\n >\n Confirm operation in your wallet\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ErrorIconStyled } from './style';\n\ninterface ErrorTransactionNotificationProps extends Styleable {}\n\nexport const ErrorTransactionNotification: Component<ErrorTransactionNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionCanceled.header' }}\n text={{ translationKey: 'notifications.transactionCanceled.text' }}\n icon={<ErrorIconStyled />}\n class={props.class}\n >\n Transaction cancelled\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n min-width: 22px;\n min-height: 22px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { SuccessIconStyled } from 'src/app/views/account-button/notifications/success-transaction-notification/style';\nimport cn from 'classnames';\n\ninterface SuccessTransactionNotificationProps extends Styleable {}\n\nexport const SuccessTransactionNotification: Component<\n SuccessTransactionNotificationProps\n> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionSent.header' }}\n text={{ translationKey: 'notifications.transactionSent.text' }}\n icon={<SuccessIconStyled />}\n class={cn(props.class, 'tc-notification')}\n >\n Transaction sent\n </Notification>\n );\n};\n","import { css } from 'solid-styled-components';\n\nexport const NotificationClass = css`\n transform: translateY(-8px);\n margin-bottom: 12px;\n`;\n","import { Component, createEffect, createSignal, For, Match, on, Switch } from 'solid-js';\nimport { TransitionGroup } from 'solid-transition-group';\nimport { ActionName, action } from 'src/app/state/modals-state';\nimport { ConfirmOperationNotification } from './confirm-operation-notification';\nimport { ErrorTransactionNotification } from './error-transaction-notification';\nimport { SuccessTransactionNotification } from './success-transaction-notification';\nimport { NotificationClass } from './style';\nimport { Styleable } from 'src/app/models/styleable';\nimport {Identifiable} from \"src/app/models/identifiable\";\n\nexport interface NotificationsProps extends Styleable, Identifiable {}\n\nexport const Notifications: Component<NotificationsProps> = props => {\n let lastId = -1;\n const liveTimeoutMs = 4500;\n\n const [openedNotifications, setOpenedNotifications] = createSignal<\n { id: number; action: ActionName }[]\n >([]);\n\n createEffect(\n on(action, action => {\n if (action && action.showNotification) {\n lastId++;\n const id = lastId;\n\n setOpenedNotifications(notifications =>\n notifications\n .filter(notification => notification.action !== 'confirm-transaction')\n .concat({ id, action: action.name })\n );\n setTimeout(\n () =>\n setOpenedNotifications(notifications =>\n notifications.filter(notification => notification.id !== id)\n ),\n liveTimeoutMs\n );\n }\n })\n );\n\n return (\n <div class={props.class} id={props.id}>\n <TransitionGroup\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(0)' },\n { opacity: 1, transform: 'translateY(-8px)' }\n ],\n {\n duration: 200\n }\n );\n }}\n onExit={(el, done) => {\n const a = el.animate(\n [\n { opacity: 1, transform: 'translateY(-8px)' },\n { opacity: 0, transform: 'translateY(-30px)' }\n ],\n {\n duration: 200\n }\n );\n a.finished.then(done);\n }}\n >\n <For each={openedNotifications()}>\n {openedNotification => (\n <Switch>\n <Match when={openedNotification.action === 'transaction-sent'}>\n <SuccessTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'transaction-canceled'}>\n <ErrorTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'confirm-transaction'}>\n <ConfirmOperationNotification class={NotificationClass} />\n </Match>\n </Switch>\n )}\n </For>\n </TransitionGroup>\n </div>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, LoaderIcon } from 'src/app/components';\nimport { rgba } from 'src/app/utils/css';\nimport { AccountButtonDropdown } from 'src/app/views/account-button/account-button-dropdown';\nimport { Notifications } from 'src/app/views/account-button/notifications';\nimport { THEME } from 'src/models';\n\nexport const AccountButtonStyled = styled(Button)`\n background-color: ${props => props.theme!.colors.connectButton.background};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n\n display: flex;\n align-items: center;\n gap: 9px;\n\n transition: all 0.1s ease-in-out;\n\n &:hover:not(:active) {\n transform: scale(1);\n }\n\n &:hover {\n filter: ${props => `brightness(${props.theme!.theme === THEME.DARK ? 1.07 : 0.95})`};\n }\n`;\n\nexport const DropdownButtonStyled = styled(AccountButtonStyled)`\n width: 140px;\n gap: 11px;\n justify-content: center;\n background-color: ${props => props.theme!.colors.background.primary};\n`;\n\nexport const LoaderButtonStyled = styled(Button)`\n width: 140px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 18px;\n width: 18px;\n`;\n\nexport const DropdownContainerStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport const DropdownStyled = styled(AccountButtonDropdown)<{ hidden: boolean }>`\n box-sizing: border-box;\n overflow: hidden;\n margin-top: 12px;\n`;\n\nexport const NotificationsStyled = styled(Notifications)`\n > div:first-child {\n margin-top: 20px;\n }\n`;\n","function getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n\n if (validMiddleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement` middleware', 'detected. This will lead to an infinite loop. Ensure only one of', 'either has been passed to the `middleware` array.'].join(' '));\n }\n\n if (!reference || !floating) {\n console.error(['Floating UI: The reference and/or floating element was not defined', 'when `computePosition()` was called. Ensure that both elements have', 'been created and can be measured.'].join(' '));\n }\n }\n\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = { ...middlewareData,\n [name]: { ...middlewareData[name],\n ...data\n }\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n if (resetCount > 50) {\n console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n }\n }\n\n if (reset && resetCount <= 50) {\n resetCount++;\n\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n\n i = -1;\n continue;\n }\n }\n\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return { ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n var _await$platform$isEle;\n\n if (options === void 0) {\n options = {};\n }\n\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? { ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n\n if (process.env.NODE_ENV !== \"production\") ;\n\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type\n const {\n element,\n padding = 0\n } = options != null ? options : {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n\n return {};\n }\n\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const alignment = getAlignment(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n if (clientSize === 0) {\n clientSize = rects.floating[length];\n }\n\n const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds\n\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n\n});\n\nconst hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n\n return true;\n });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'autoPlacement',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n const {\n x,\n y,\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = middlewareArguments;\n const {\n alignment = null,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n const currentPlacement = placements[currentIndex];\n\n if (currentPlacement == null) {\n return {};\n }\n\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n if (placement !== currentPlacement) {\n return {\n x,\n y,\n reset: {\n placement: placements[0]\n }\n };\n }\n\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'flip',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$flip;\n\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const side = getSide(placement);\n const isBasePlacement = side === initialPlacement;\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n overflows.push(overflow[main], overflow[cross]);\n }\n\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }]; // One or more sides is overflowing\n\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip$, _middlewareData$flip2;\n\n const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n const nextPlacement = placements[nextIndex];\n\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n let resetPlacement = 'bottom';\n\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n if (placement) {\n resetPlacement = placement;\n }\n\n break;\n }\n\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n\n return {};\n }\n\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n let {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = _temp === void 0 ? {} : _temp;\n return {\n name: 'hide',\n\n async fn(middlewareArguments) {\n const {\n rects\n } = middlewareArguments;\n\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n case 'escaped':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n default:\n {\n return {};\n }\n }\n }\n\n };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n const {\n placement,\n platform,\n elements\n } = middlewareArguments;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n\n return {\n name: 'offset',\n options: value,\n\n async fn(middlewareArguments) {\n const {\n x,\n y\n } = middlewareArguments;\n const diffCoords = await convertValueToCoords(middlewareArguments, value);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'shift',\n options,\n\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n\n const limitedCoords = limiter.fn({ ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return { ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n options,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset(middlewareArguments) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n\n };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'size',\n options,\n\n async fn(middlewareArguments) {\n const {\n placement,\n rects,\n platform,\n elements\n } = middlewareArguments;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = options;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n let heightSide;\n let widthSide;\n\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n const dimensions = {\n availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n await apply({ ...middlewareArguments,\n ...dimensions\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n\n if (rects.floating.width !== nextDimensions.width || rects.floating.height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'inline',\n options,\n\n async fn(middlewareArguments) {\n var _await$platform$getCl;\n\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n\n const {\n padding = 2,\n x,\n y\n } = options;\n const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects.reference);\n const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n const paddingObject = getSideObjectFromPadding(padding);\n\n function getBoundingClientRect() {\n // There are two rects and they are disjoined\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n var _clientRects$find;\n\n // Find the first rect in which the point is fully inside\n return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n } // There are 2 or more connected rects\n\n\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n return fallback;\n }\n\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isNode(node) ? (node.nodeName || '').toLowerCase() : '';\n}\n\nlet uaString;\nfunction getUAString() {\n if (uaString) {\n return uaString;\n }\n\n const uaData = navigator.userAgentData;\n\n if (uaData && Array.isArray(uaData.brands)) {\n uaString = uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n return uaString;\n }\n\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle(element);\n const backdropFilter = css.backdropFilter || css.WebkitBackdropFilter; // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n return css.transform !== 'none' || css.perspective !== 'none' || (backdropFilter ? backdropFilter !== 'none' : false) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat\n value => {\n const contain = css.contain;\n return contain != null ? contain.includes(value) : false;\n });\n}\nfunction isLayoutViewport() {\n // Not Safari\n return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways\n // • Always-visible scrollbar or not\n // • Width of <html>, etc.\n // const vV = win.visualViewport;\n // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nconst FALLBACK_SCALE = {\n x: 1,\n y: 1\n};\nfunction getScale(element) {\n const domElement = !isElement(element) && element.contextElement ? element.contextElement : isElement(element) ? element : null;\n\n if (!domElement) {\n return FALLBACK_SCALE;\n }\n\n const rect = domElement.getBoundingClientRect();\n const css = getComputedStyle(domElement); // Would need to take into account borders, padding, and potential scrollbars\n // which would require a lot of code. Fallback to the old technique to\n // determine scale.\n\n if (css.boxSizing !== 'border-box') {\n if (!isHTMLElement(domElement)) {\n return FALLBACK_SCALE;\n }\n\n return {\n x: domElement.offsetWidth > 0 ? round(rect.width) / domElement.offsetWidth || 1 : 1,\n y: domElement.offsetHeight > 0 ? round(rect.height) / domElement.offsetHeight || 1 : 1\n };\n }\n\n let x = rect.width / parseFloat(css.width);\n let y = rect.height / parseFloat(css.height); // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n\n return {\n x,\n y\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;\n\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n const clientRect = element.getBoundingClientRect();\n let scale = FALLBACK_SCALE;\n\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n\n const win = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scale.x;\n const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scale.y;\n const width = clientRect.width / scale.x;\n const height = clientRect.height / scale.y;\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, true, strategy === 'fixed', offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n const result = // Step into the shadow DOM of the parent of a slotted node\n node.assignedSlot || // DOM Element detected\n node.parentNode || ( // ShadowRoot detected\n isShadowRoot(node) ? node.host : null) || // Fallback\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n if (isHTMLElement(element)) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n\n const rect = getBoundingClientRect(element);\n return {\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n\n if (offsetParent === documentElement) {\n return rect;\n }\n\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = {\n x: 1,\n y: 1\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } // This doesn't appear to need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n\n }\n\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n\n if (isLastTraversableNode(parentNode)) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n\n if (list === void 0) {\n list = [];\n }\n\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\n// Returns the inner client rect, subtracting scrollbars if present\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : {\n x: 1,\n y: 1\n };\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y,\n width,\n height\n };\n}\n\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n if (clippingAncestor === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n\n if (isElement(clippingAncestor)) {\n return getInnerBoundingClientRect(clippingAncestor, strategy);\n }\n\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\n\n\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element; // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const containingBlock = isContainingBlock(currentNode);\n const shouldDropCurrentNode = elementIsFixed ? !containingBlock && !currentContainingBlockComputedStyle : !containingBlock && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position);\n\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration\n currentContainingBlockComputedStyle = computedStyle;\n }\n\n currentNode = getParentNode(currentNode);\n }\n\n cache.set(element, result);\n return result;\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors\n\n\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n\n if (!isElement(reference) && reference.contextElement && !animationFrame) {\n observer.observe(reference.contextElement);\n }\n\n observer.observe(floating);\n }\n\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n\n if (animationFrame) {\n frameLoop();\n }\n\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n\n update();\n return () => {\n var _observer;\n\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\n\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = { ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, { ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import{createEffect as f,createMemo as R,createSignal as g,onCleanup as y}from\"solid-js\";import{computePosition as E}from\"@floating-ui/dom\";function P(l,u,e){let c=()=>{var t;return(t=e==null?void 0:e.placement)!=null?t:\"bottom\"},d=()=>{var t;return(t=e==null?void 0:e.strategy)!=null?t:\"absolute\"},[n,o]=g({x:null,y:null,placement:c(),strategy:d(),middlewareData:{}}),[x,F]=g();f(()=>{let t=x();if(t)throw t.value});let s=R(()=>(l(),u(),{}));function i(){let t=l(),r=u();if(t&&r){let a=s();E(t,r,{middleware:e==null?void 0:e.middleware,placement:c(),strategy:d()}).then(m=>{a===s()&&o(m)},m=>{F(m)})}}return f(()=>{let t=l(),r=u();if(e==null||e.middleware,c(),d(),t&&r)if(e!=null&&e.whileElementsMounted){let a=e.whileElementsMounted(t,r,i);a&&y(a)}else i()}),{get x(){return n().x},get y(){return n().y},get placement(){return n().placement},get strategy(){return n().strategy},get middlewareData(){return n().middlewareData},update:i}}export{P as useFloating};\n","import { Component, createSignal, onCleanup, onMount, Show, useContext } from 'solid-js';\nimport { ArrowIcon, Text, TonIcon } from 'src/app/components';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { Account, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport {\n AccountButtonStyled,\n DropdownButtonStyled,\n DropdownContainerStyled,\n DropdownStyled,\n LoaderButtonStyled,\n LoaderIconStyled,\n NotificationsStyled\n} from './style';\nimport { Portal } from 'solid-js/web';\nimport { useFloating } from 'solid-floating-ui';\nimport { autoUpdate } from '@floating-ui/dom';\nimport { Transition } from 'solid-transition-group';\nimport { useTheme } from 'solid-styled-components';\nimport { CHAIN } from '@tonconnect/protocol';\n\ninterface AccountButtonProps {}\n\nexport const AccountButton: Component<AccountButtonProps> = () => {\n const theme = useTheme();\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext)!;\n const [isOpened, setIsOpened] = createSignal(false);\n const [account, setAccount] = createSignal<Account | null>(null);\n const [restoringProcess, setRestoringProcess] = createSignal<boolean>(true);\n\n let dropDownRef: HTMLDivElement | undefined;\n\n const [floating, setFloating] = createSignal<HTMLDivElement | undefined>();\n const [anchor, setAnchor] = createSignal<HTMLButtonElement | undefined>();\n\n const position = useFloating(anchor, floating, {\n whileElementsMounted: autoUpdate,\n placement: 'bottom-end'\n });\n\n const normalizedAddress = (): string => {\n const acc = account();\n if (acc) {\n const userFriendlyAddress = toUserFriendlyAddress(\n acc.address,\n acc.chain === CHAIN.TESTNET\n );\n return userFriendlyAddress.slice(0, 4) + '...' + userFriendlyAddress.slice(-4);\n }\n\n return '';\n };\n\n tonConnectUI.connectionRestored.then(() => setRestoringProcess(false));\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (!wallet) {\n setIsOpened(false);\n setAccount(null);\n return;\n }\n\n setAccount(wallet.account);\n });\n\n const onClick = (e: Event): void | boolean => {\n if (!account() || !isOpened()) {\n return;\n }\n const clickToButton = anchor()!.contains(e.target as Node);\n const clickToDropdown = dropDownRef!.contains(e.target as Node);\n\n if (!clickToButton && !clickToDropdown) {\n setIsOpened(false);\n }\n };\n\n onMount(() => {\n document.body.addEventListener('click', onClick);\n });\n\n onCleanup(() => {\n document.body.removeEventListener('click', onClick);\n unsubscribe();\n });\n\n return (\n <>\n <Show when={restoringProcess()}>\n <LoaderButtonStyled disabled={true} id=\"tc-connect-button-loading\">\n <LoaderIconStyled />\n </LoaderButtonStyled>\n </Show>\n <Show when={!restoringProcess()}>\n <Show when={!account()}>\n <AccountButtonStyled\n onClick={() => tonConnectUI.connectWallet()}\n id=\"tc-connect-button\"\n >\n <TonIcon fill={theme.colors.connectButton.foreground} />\n <Text\n translationKey=\"button.connectWallet\"\n fontSize=\"15px\"\n letterSpacing=\"-0.24px\"\n fontWeight=\"590\"\n color={theme.colors.connectButton.foreground}\n >\n Connect wallet\n </Text>\n </AccountButtonStyled>\n </Show>\n <Show when={account()}>\n <DropdownContainerStyled>\n <DropdownButtonStyled\n onClick={() => setIsOpened(v => !v)}\n ref={setAnchor}\n id=\"tc-dropdown-button\"\n >\n <Text\n fontSize=\"15px\"\n letterSpacing=\"-0.24px\"\n fontWeight=\"590\"\n lineHeight=\"18px\"\n >\n {normalizedAddress()}\n </Text>\n <ArrowIcon direction=\"bottom\" />\n </DropdownButtonStyled>\n <Portal>\n <div\n ref={setFloating}\n style={{\n position: position.strategy,\n top: `${position.y ?? 0}px`,\n left: `${position.x ?? 0}px`,\n 'z-index': 999\n }}\n id=\"tc-dropdown-container\"\n >\n <Transition\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(-8px)' },\n { opacity: 1, transform: 'translateY(0)' }\n ],\n {\n duration: 150\n }\n );\n }}\n onExit={(el, done) => {\n const a = el.animate(\n [\n { opacity: 1, transform: 'translateY(0)' },\n { opacity: 0, transform: 'translateY(-8px)' }\n ],\n {\n duration: 150\n }\n );\n a.finished.then(done);\n }}\n >\n <Show when={isOpened()}>\n <DropdownStyled\n hidden={!isOpened()}\n onClose={() => setIsOpened(false)}\n ref={dropDownRef}\n id=\"tc-dropdown\"\n />\n </Show>\n </Transition>\n <NotificationsStyled id=\"tc-notifications\" />\n </div>\n </Portal>\n </DropdownContainerStyled>\n </Show>\n </Show>\n </>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const QrCodeStyled = styled.div`\n position: relative;\n\n > div:first-child {\n height: 276px;\n width: 276px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n > svg {\n height: 276px;\n width: 276px;\n }\n }\n\n rect {\n fill: transparent;\n }\n\n path {\n fill: ${props => props.theme!.colors.text.primary};\n }\n`;\n\nexport const ImageBackground = styled.div`\n position: absolute;\n width: 52px;\n height: 52px;\n background: ${props => props.theme!.colors.background.secondary};\n padding: 7px;\n top: 112px;\n left: 112px;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n > img {\n width: 46px;\n height: 46px;\n border-radius: 12px;\n }\n`;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '&lt;'; break;\n case '>': escaped += '&gt;'; break;\n case '&': escaped += '&amp;'; break;\n case '\"': escaped += '&quot;'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","import { Component, createEffect } from 'solid-js';\nimport { ImageBackground, QrCodeStyled } from './style';\nimport qrcode from 'qrcode-generator';\n\ninterface QRCodeProps {\n imageUrl?: string;\n sourceUrl: string;\n}\n\nexport const QRCode: Component<QRCodeProps> = props => {\n let qrCodeCanvas: HTMLDivElement | undefined;\n\n createEffect(() => {\n const errorCorrectionLevel = 'L';\n const qr = qrcode(0, errorCorrectionLevel);\n qr.addData(props.sourceUrl);\n qr.make();\n qrCodeCanvas!.innerHTML = qr.createSvgTag(4);\n });\n\n return (\n <QrCodeStyled>\n <div ref={qrCodeCanvas} />\n <ImageBackground>\n <img src={props.imageUrl} alt=\"\" />\n </ImageBackground>\n </QrCodeStyled>\n );\n};\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\n\ninterface TranslationProps extends PropertyRequired<Translateable, 'translationKey'> {\n children?: JSXElement;\n}\n\nexport const Translation: Component<TranslationProps> = props => {\n const [t] = useI18n();\n\n return t(props.translationKey, props.translationValues, props.children?.toString());\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, IconButton, Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const QrCodeModalStyled = styled.div`\n padding: 0 24px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const QRBackgroundStyled = styled.div`\n margin-bottom: 16px;\n background-color: ${props => props.theme!.colors.background.secondary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 10px 0;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n gap: 16px;\n height: 56px;\n margin-bottom: 24px;\n`;\n\nexport const ActionButtonStyled = styled(Button)`\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.32px;\n width: 100%;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const GetWalletStyled = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const TextStyled = styled(Text)`\n color: ${props => props.theme!.colors.text.secondary};\n font-size: 16px;\n`;\n","import { THEME } from 'src/models/THEME';\nimport { ReturnStrategy } from 'src/models/return-strategy';\n\nexport function openLink(href: string, target = '_self'): void {\n window.open(href, target, 'noreferrer noopener');\n}\n\nexport function openLinkBlank(href: string): void {\n openLink(href, '_blank');\n}\n\nexport function getSystemTheme(): THEME {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {\n return THEME.LIGHT;\n }\n\n return THEME.DARK;\n}\n\nexport function subscribeToThemeChange(callback: (theme: THEME) => void): () => void {\n const handler = (event: MediaQueryListEvent): void =>\n callback(event.matches ? THEME.DARK : THEME.LIGHT);\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', handler);\n return () =>\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', handler);\n}\n\nexport function addQueryParameter(url: string, key: string, value: string): string {\n const parsed = new URL(url);\n parsed.searchParams.append(key, value);\n return parsed.toString();\n}\n\nexport function addReturnStrategy(url: string, returnStrategy: ReturnStrategy): string {\n return addQueryParameter(url, 'ret', returnStrategy);\n}\n","import { ConnectAdditionalRequest, ITonConnect } from '@tonconnect/sdk';\nimport { createStore } from 'solid-js/store';\nimport { Locales } from 'src/models/locales';\nimport { WalletsListConfiguration } from 'src/models/wallets-list-configuration';\nimport { ReturnStrategy } from 'src/models/return-strategy';\n\nexport type AppState = {\n connector: ITonConnect;\n buttonRootId: string | null;\n language: Locales;\n walletsList: WalletsListConfiguration | {};\n getConnectParameters?: () => Promise<ConnectAdditionalRequest>;\n returnStrategy: ReturnStrategy;\n};\n\nexport const [appState, setAppState] = createStore<AppState>({\n buttonRootId: null,\n language: 'en',\n returnStrategy: 'back',\n walletsList: {}\n} as AppState);\n","import {\n ConnectAdditionalRequest,\n isWalletInfoInjected,\n WalletInfoInjected,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport { Component, Show, useContext } from 'solid-js';\nimport { Button, H1, H2 } from 'src/app/components';\nimport { QRCode } from 'src/app/components/qr-code';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n ActionButtonStyled,\n ButtonsContainerStyled,\n GetWalletStyled,\n QRBackgroundStyled,\n QrCodeModalStyled,\n StyledIconButton,\n TextStyled\n} from './style';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { addReturnStrategy, openLink, openLinkBlank } from 'src/app/utils/web-api';\nimport { Identifiable } from 'src/app/models/identifiable';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { appState } from 'src/app/state/app.state';\n\nexport interface QrCodeModalProps extends Identifiable {\n additionalRequest?: ConnectAdditionalRequest;\n wallet: WalletInfoRemote | (WalletInfoRemote & WalletInfoInjected);\n onBackClick: () => void;\n}\n\nexport const QrCodeModal: Component<QrCodeModalProps> = props => {\n const connector = useContext(ConnectorContext)!;\n const universalLink = connector.connect(\n {\n universalLink: props.wallet.universalLink,\n bridgeUrl: props.wallet.bridgeUrl\n },\n props.additionalRequest\n );\n\n return (\n <QrCodeModalStyled id={props.id}>\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBackClick()} />\n <H1\n translationKey=\"walletModal.qrCodeModal.connectWith\"\n translationValues={{ name: props.wallet.name }}\n >\n Connect with {props.wallet.name}\n </H1>\n <H2\n translationKey=\"walletModal.qrCodeModal.scan\"\n translationValues={{ name: props.wallet.name }}\n >\n Scan QR code with your phone’s or {props.wallet.name}’s camera.\n </H2>\n <QRBackgroundStyled>\n <QRCode sourceUrl={universalLink} imageUrl={props.wallet.imageUrl} />\n </QRBackgroundStyled>\n <ButtonsContainerStyled>\n <ActionButtonStyled\n onClick={() => {\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n openLink(addReturnStrategy(universalLink, appState.returnStrategy));\n }}\n >\n <Translation\n translationKey=\"walletModal.qrCodeModal.openWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Open {props.wallet.name}\n </Translation>\n </ActionButtonStyled>\n <Show when={isWalletInfoInjected(props.wallet) && props.wallet.injected}>\n <ActionButtonStyled\n onClick={() => {\n setLastSelectedWalletInfo(props.wallet as WalletInfoInjected);\n connector.connect(\n {\n jsBridgeKey: (props.wallet as WalletInfoInjected).jsBridgeKey\n },\n props.additionalRequest\n );\n }}\n >\n <Translation translationKey=\"walletModal.qrCodeModal.openExtension\">\n Open Extension\n </Translation>\n </ActionButtonStyled>\n </Show>\n </ButtonsContainerStyled>\n <GetWalletStyled>\n <TextStyled\n translationKey=\"walletModal.qrCodeModal.dontHave\"\n translationValues={{ name: props.wallet.name }}\n >\n Don't have {props.wallet.name}?\n </TextStyled>\n <Button onClick={() => openLinkBlank(props.wallet.aboutUrl)}>\n <Translation translationKey=\"walletModal.qrCodeModal.get\">GET</Translation>\n </Button>\n </GetWalletStyled>\n </QrCodeModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\nexport const WalletItemStyled = styled.button`\n cursor: pointer;\n display: block;\n border: none;\n background-color: unset;\n padding: 12px 12px 24px 12px;\n\n transition: transform 0.1s ease-in-out;\n\n &:hover {\n transform: scale(1.04);\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n img {\n width: 72px;\n height: 72px;\n border-radius: 18px;\n\n margin-bottom: 8px;\n\n ${media('mobile')} {\n width: 64px;\n height: 64px;\n border-radius: 16px;\n }\n }\n\n ${media('mobile')} {\n padding: 10px 10px 20px 10px;\n }\n`;\n\nexport const StyledText = styled(Text)`\n font-weight: 590;\n max-width: 72px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n @supports (-webkit-line-clamp: 2) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: initial;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n`;\n","import { Component } from 'solid-js';\nimport { StyledText, WalletItemStyled } from './style';\n\ninterface WalletItemProps {\n iconUrl: string;\n name: string;\n onClick: () => void;\n}\n\nexport const WalletItem: Component<WalletItemProps> = props => {\n return (\n <WalletItemStyled onClick={() => props.onClick()}>\n <img src={props.iconUrl} alt=\"\" />\n <StyledText>{props.name}</StyledText>\n </WalletItemStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H2 } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const SelectWalletModalStyled = styled.div``;\n\nexport const UlStyled = styled.ul`\n display: flex;\n margin: 0 auto 24px;\n width: fit-content;\n max-width: 100%;\n min-height: 140px;\n overflow: auto;\n padding: 0 24px;\n\n &&::-webkit-scrollbar {\n display: none;\n }\n\n -ms-overflow-style: none;\n scrollbar-width: none;\n\n ${media('mobile')} {\n min-height: 126px;\n }\n`;\n\nexport const H2Styled = styled(H2)`\n ${media('mobile')} {\n margin-bottom: 24px;\n padding: 0 24px;\n min-height: 44px;\n }\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto;\n`;\n","import { WalletInfo } from '@tonconnect/sdk';\nimport { Component, For } from 'solid-js';\nimport { H1 } from 'src/app/components';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { WalletItem } from './wallet-item';\nimport { ButtonStyled, H2Styled, SelectWalletModalStyled, UlStyled } from './style';\nimport { openLinkBlank } from 'src/app/utils/web-api';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface SelectWalletModalProps extends Identifiable {\n walletsList: WalletInfo[];\n onSelect: (wallet: WalletInfo) => void;\n}\n\nexport const SelectWalletModal: Component<SelectWalletModalProps> = props => {\n const learnMoreUrl = 'https://ton.org/wallets';\n\n return (\n <SelectWalletModalStyled id={props.id}>\n <H1 translationKey=\"walletModal.selectWalletModal.connectWallet\">Connect a wallet</H1>\n <H2Styled translationKey=\"walletModal.selectWalletModal.selectWallet\">\n Select your wallet from the options to get started.\n </H2Styled>\n <UlStyled>\n <For each={props.walletsList}>\n {wallet => (\n <li>\n <WalletItem\n iconUrl={wallet.imageUrl}\n name={wallet.name}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n </UlStyled>\n <ButtonStyled onClick={() => openLinkBlank(learnMoreUrl)}>\n <Translation translationKey=\"walletModal.selectWalletModal.learnMore\">\n Learn more\n </Translation>\n </ButtonStyled>\n </SelectWalletModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { H1, LoaderIcon, Modal } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const StyledModal = styled(Modal)`\n padding-left: 0;\n padding-right: 0;\n\n ${media('mobile')} {\n min-height: 390px;\n }\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 12px;\n\n ${media('mobile')} {\n padding: 0 10px;\n }\n`;\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n width: 70px;\n height: 70px;\n`;\n\nexport const LoaderContainerStyled = styled.div`\n margin: 30px 0;\n width: 100%;\n display: flex;\n justify-content: center;\n\n ${media('mobile')} {\n height: 160px;\n align-items: center;\n }\n`;\n","import { WalletInfo, TonConnect } from '@tonconnect/sdk';\nimport { UIWallet } from 'src/models/ui-wallet';\nimport { WalletsListConfiguration } from 'src/models';\n\nexport function uiWalletToWalletInfo(uiWallet: UIWallet): WalletInfo {\n if ('jsBridgeKey' in uiWallet) {\n return {\n ...uiWallet,\n injected: TonConnect.isWalletInjected(uiWallet.jsBridgeKey),\n embedded: TonConnect.isInsideWalletBrowser(uiWallet.jsBridgeKey)\n };\n }\n\n return uiWallet;\n}\n\nexport function applyWalletsListConfiguration(\n walletsList: WalletInfo[],\n configuration?: WalletsListConfiguration\n): WalletInfo[] {\n if (!configuration) {\n return walletsList;\n }\n\n if ('wallets' in configuration) {\n return configuration.wallets\n .map(wallet => {\n if (typeof wallet === 'string') {\n const walletInfo = walletsList.find(item => item.name === wallet);\n\n if (!walletInfo) {\n console.error(\n `Wallet with name === '${wallet}' wasn't found in the wallets list. Check '${wallet}' correctness. Available wallets names: ${walletsList\n .map(i => \"'\" + i.name + \"'\")\n .join(', ')}`\n );\n\n return null;\n }\n return walletInfo;\n }\n\n return uiWalletToWalletInfo(wallet);\n })\n .filter(i => !!i) as WalletInfo[];\n }\n\n const filteredWalletsList = configuration.excludeWallets?.length\n ? walletsList.filter(wallet =>\n configuration.excludeWallets?.every(item => item !== wallet.name)\n )\n : walletsList;\n\n if (!configuration.includeWallets) {\n return filteredWalletsList;\n }\n\n if (configuration.includeWalletsOrder === 'start') {\n return configuration.includeWallets.map(uiWalletToWalletInfo).concat(walletsList);\n }\n\n return walletsList.concat(configuration.includeWallets.map(uiWalletToWalletInfo));\n}\n","import {\n ConnectAdditionalRequest,\n isWalletInfoInjected,\n WalletInfo,\n WalletInfoInjected,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n on,\n onCleanup,\n Show,\n useContext\n} from 'solid-js';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport {\n setLastSelectedWalletInfo,\n setWalletsModalOpen,\n walletsModalOpen\n} from 'src/app/state/modals-state';\nimport { QrCodeModal } from 'src/app/views/modals/wallets-modal/qr-code-modal';\nimport { SelectWalletModal } from 'src/app/views/modals/wallets-modal/select-wallet-modal';\nimport { StyledModal, LoaderIconStyled, LoaderContainerStyled, H1Styled } from './style';\nimport { addReturnStrategy, openLink, openLinkBlank } from 'src/app/utils/web-api';\nimport { isDevice } from 'src/app/styles/media';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { applyWalletsListConfiguration } from 'src/app/utils/wallets';\n\nexport const WalletsModal: Component = () => {\n const { locale } = useI18n()[1];\n createEffect(() => locale(appState.language));\n\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext);\n const [fetchedWalletsList] = createResource(() => tonConnectUI!.getWallets());\n const [fetchedAdditionalRequest, { refetch }] = createResource<\n ConnectAdditionalRequest | undefined\n >((_, { refetching }) => {\n if (refetching) {\n return appState.getConnectParameters?.();\n }\n\n return undefined;\n });\n\n createEffect(\n on(walletsModalOpen, () => {\n if (walletsModalOpen() && fetchedAdditionalRequest.state !== 'refreshing') {\n refetch();\n }\n })\n );\n\n const [selectedWalletInfo, setSelectedWalletInfo] = createSignal<WalletInfo | null>(null);\n\n const walletsList = createMemo(() => {\n if (fetchedWalletsList.state !== 'ready') {\n return null;\n }\n\n return applyWalletsListConfiguration(fetchedWalletsList(), appState.walletsList);\n });\n\n const additionalRequestLoading = (): boolean =>\n fetchedAdditionalRequest.state !== 'ready' && fetchedAdditionalRequest.state !== 'errored';\n\n const additionalRequest = createMemo(() => {\n if (fetchedAdditionalRequest.state !== 'ready') {\n return undefined;\n }\n\n return fetchedAdditionalRequest();\n });\n\n const onClose = (): void => {\n setWalletsModalOpen(false);\n setSelectedWalletInfo(null);\n };\n\n const onSelect = (walletInfo: WalletInfo): void => {\n if (isDevice('mobile') && 'universalLink' in walletInfo) {\n setLastSelectedWalletInfo({ ...walletInfo, openMethod: 'universal-link' });\n return onSelectIfMobile(walletInfo);\n }\n\n if (isWalletInfoInjected(walletInfo) && walletInfo.injected) {\n setLastSelectedWalletInfo(walletInfo);\n return onSelectIfInjected(walletInfo);\n }\n\n if ('bridgeUrl' in walletInfo) {\n setLastSelectedWalletInfo({ ...walletInfo, openMethod: 'qrcode' });\n setSelectedWalletInfo(walletInfo);\n return;\n }\n\n openLinkBlank(walletInfo.aboutUrl);\n };\n\n const onSelectIfMobile = (walletInfo: WalletInfoRemote): void => {\n const universalLink = connector.connect(\n {\n universalLink: walletInfo.universalLink,\n bridgeUrl: walletInfo.bridgeUrl\n },\n additionalRequest()\n );\n\n openLink(addReturnStrategy(universalLink, appState.returnStrategy));\n };\n\n const onSelectIfInjected = (walletInfo: WalletInfoInjected): void => {\n connector.connect(\n {\n jsBridgeKey: walletInfo.jsBridgeKey\n },\n additionalRequest()\n );\n };\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (wallet) {\n onClose();\n }\n });\n\n onCleanup(unsubscribe);\n\n return (\n <StyledModal opened={walletsModalOpen()} onClose={onClose} id=\"tc-wallets-modal-container\">\n <Show when={!walletsList() || additionalRequestLoading()}>\n <H1Styled translationKey=\"walletModal.loading\">Wallets list is loading</H1Styled>\n <LoaderContainerStyled>\n <LoaderIconStyled />\n </LoaderContainerStyled>\n </Show>\n <Show when={walletsList() && !additionalRequestLoading()}>\n <Show when={!selectedWalletInfo()} keyed={false}>\n <SelectWalletModal\n walletsList={walletsList()!}\n onSelect={onSelect}\n id=\"tc-wallets-modal\"\n />\n </Show>\n <Show when={selectedWalletInfo()} keyed={false}>\n <QrCodeModal\n additionalRequest={additionalRequest()}\n wallet={selectedWalletInfo() as WalletInfoRemote}\n onBackClick={() => setSelectedWalletInfo(null)}\n id=\"tc-qr-modal\"\n />\n </Show>\n </Show>\n </StyledModal>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, Text } from 'src/app/components';\n\nexport const ActionModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-bottom: 20px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 19px;\n`;\n\nexport const TextStyled = styled(Text)`\n font-weight: 510;\n font-size: 16px;\n line-height: 22px;\n letter-spacing: -0.32px;\n text-align: center;\n max-width: 250px;\n\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const ButtonStyled = styled(Button)`\n margin-top: 32px;\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { ActionModalStyled, ButtonStyled, H1Styled, TextStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface ActionModalProps extends Identifiable {\n headerTranslationKey: string;\n icon: JSXElement;\n textTranslationKey?: string;\n onClose: () => void;\n showButton?: boolean;\n}\n\nexport const ActionModal: Component<ActionModalProps> = props => {\n return (\n <ActionModalStyled id={props.id}>\n {props.icon}\n <H1Styled translationKey={props.headerTranslationKey} />\n <TextStyled translationKey={props.textTranslationKey} />\n <Show when={props.showButton !== false}>\n <ButtonStyled onClick={() => props.onClose()}>\n <Translation translationKey=\"common.close\">Close</Translation>\n </ButtonStyled>\n </Show>\n </ActionModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 72px;\n width: 72px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { LoaderIconStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface ConfirmTransactionModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const ConfirmTransactionModal: Component<ConfirmTransactionModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.confirmTransaction.header\"\n textTranslationKey=\"actionModal.confirmTransaction.text\"\n icon={<LoaderIconStyled />}\n onClose={() => props.onClose()}\n showButton={false}\n id={props.id}\n />\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n height: 66px;\n width: 66px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { ErrorIconStyled } from 'src/app/views/modals/actions-modal/transaction-canceled-modal/style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface TransactionCanceledModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const TransactionCanceledModal: Component<TransactionCanceledModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionCanceled.header\"\n textTranslationKey=\"actionModal.transactionCanceled.text\"\n icon={<ErrorIconStyled />}\n onClose={() => props.onClose()}\n id={props.id}\n />\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n height: 66px;\n width: 66px;\n`;\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { SuccessIconStyled } from './style';\nimport { Identifiable } from 'src/app/models/identifiable';\n\ninterface TransactionSentModalProps extends Identifiable {\n onClose: () => void;\n}\n\nexport const TransactionSentModal: Component<TransactionSentModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionSent.header\"\n textTranslationKey=\"actionModal.transactionSent.text\"\n icon={<SuccessIconStyled />}\n onClose={() => props.onClose()}\n id={props.id}\n />\n );\n};\n","import { Component, Match, Switch } from 'solid-js';\nimport { Modal } from 'src/app/components';\nimport { action, setAction } from 'src/app/state/modals-state';\nimport { ConfirmTransactionModal } from 'src/app/views/modals/actions-modal/confirm-transaction-modal';\nimport { TransactionCanceledModal } from 'src/app/views/modals/actions-modal/transaction-canceled-modal';\nimport { TransactionSentModal } from 'src/app/views/modals/actions-modal/transaction-sent-modal';\n\nexport const ActionsModal: Component = () => {\n return (\n <Modal\n opened={action() !== null && action()?.openModal === true}\n onClose={() => setAction(null)}\n id=\"tc-actions-modal-container\"\n >\n <Switch>\n <Match when={action()!.name === 'transaction-sent'}>\n <TransactionSentModal\n onClose={() => setAction(null)}\n id=\"tc-transaction-sent-modal\"\n />\n </Match>\n <Match when={action()!.name === 'transaction-canceled'}>\n <TransactionCanceledModal\n onClose={() => setAction(null)}\n id=\"tc-transaction-canceled-modal\"\n />\n </Match>\n <Match when={action()!.name === 'confirm-transaction'}>\n <ConfirmTransactionModal\n onClose={() => setAction(null)}\n id=\"tc-confirm-modal\"\n />\n </Match>\n </Switch>\n </Modal>\n );\n};\n","import { Show } from 'solid-js';\nimport type { Component } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { ThemeProvider } from 'solid-styled-components';\nimport { i18nDictionary } from 'src/app/i18n';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { themeState } from 'src/app/state/theme-state';\nimport { GlobalStyles } from 'src/app/styles/global-styles';\nimport { AccountButton } from 'src/app/views/account-button';\nimport { ActionsModal, WalletsModal } from 'src/app/views/modals';\nimport './styles/style.d.ts';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { createI18nContext, I18nContext } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\n\nexport type AppProps = {\n tonConnectUI: TonConnectUI;\n};\n\nconst App: Component<AppProps> = props => {\n const translations = createI18nContext(i18nDictionary, appState.language);\n\n return (\n <I18nContext.Provider value={translations}>\n <TonConnectUiContext.Provider value={props.tonConnectUI}>\n <ConnectorContext.Provider value={appState.connector}>\n <GlobalStyles />\n <ThemeProvider theme={themeState}>\n <Show when={appState.buttonRootId}>\n <Portal mount={document.getElementById(appState.buttonRootId!)!}>\n <AccountButton />\n </Portal>\n </Show>\n <WalletsModal />\n <ActionsModal />\n </ThemeProvider>\n </ConnectorContext.Provider>\n </TonConnectUiContext.Provider>\n </I18nContext.Provider>\n );\n};\n\nexport default App;\n","import { render } from 'solid-js/web';\n\nimport {\n Action,\n lastSelectedWalletInfo,\n setAction,\n setWalletsModalOpen\n} from 'src/app/state/modals-state';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport App from './App';\nimport { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\n\nexport const widgetController = {\n openWalletsModal: (): void => void setTimeout(() => setWalletsModalOpen(true)),\n closeWalletsModal: (): void => void setTimeout(() => setWalletsModalOpen(false)),\n setAction: (action: Action): void => void setTimeout(() => setAction(action)),\n clearAction: (): void => void setTimeout(() => setAction(null)),\n getSelectedWalletInfo: (): WalletInfoWithOpenMethod | null => lastSelectedWalletInfo(),\n renderApp: (root: string, tonConnectUI: TonConnectUI): (() => void) =>\n render(\n () => <App tonConnectUI={tonConnectUI} />,\n document.getElementById(root) as HTMLElement\n )\n};\n","import { TonConnectError } from '@tonconnect/sdk';\n\nexport class TonConnectUIError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n\n Object.setPrototypeOf(this, TonConnectUIError.prototype);\n }\n}\n","import { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\nimport { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\n\nexport class WalletInfoStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_wallet-info';\n\n constructor() {\n if (typeof localStorage === 'undefined') {\n throw new TonConnectUIError(\n 'window.localStorage is undefined. localStorage is required for TonConnectUI'\n );\n }\n\n this.localStorage = localStorage;\n }\n\n public setWalletInfo(walletInfo: WalletInfoWithOpenMethod): void {\n this.localStorage.setItem(this.storageKey, JSON.stringify(walletInfo));\n }\n\n public getWalletInfo(): WalletInfoWithOpenMethod | null {\n const walletInfoString = this.localStorage.getItem(this.storageKey);\n\n if (!walletInfoString) {\n return null;\n }\n\n return JSON.parse(walletInfoString);\n }\n\n public removeWalletInfo(): void {\n this.localStorage.removeItem(this.storageKey);\n }\n}\n","import type { Account } from '@tonconnect/sdk';\nimport {\n ITonConnect,\n SendTransactionRequest,\n SendTransactionResponse,\n TonConnect,\n TonConnectError,\n Wallet,\n WalletInfo,\n WalletInfoInjected\n} from '@tonconnect/sdk';\nimport { widgetController } from 'src/app/widget-controller';\nimport { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\nimport { TonConnectUiCreateOptions } from 'src/models/ton-connect-ui-create-options';\nimport { WalletInfoStorage } from 'src/storage';\nimport {\n addReturnStrategy,\n getSystemTheme,\n openLink,\n subscribeToThemeChange\n} from 'src/app/utils/web-api';\nimport { TonConnectUiOptions } from 'src/models/ton-connect-ui-options';\nimport { setBorderRadius, setColors, setTheme } from 'src/app/state/theme-state';\nimport { mergeOptions } from 'src/app/utils/options';\nimport { appState, setAppState } from 'src/app/state/app.state';\nimport { unwrap } from 'solid-js/store';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { ActionConfiguration, StrictActionConfiguration } from 'src/models/action-configuration';\nimport { ConnectedWallet, WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\n\nexport class TonConnectUI {\n public static getWallets(): Promise<WalletInfo[]> {\n return TonConnect.getWallets();\n }\n\n private readonly walletInfoStorage = new WalletInfoStorage();\n\n private readonly connector: ITonConnect;\n\n private _walletInfo: WalletInfoWithOpenMethod | null = null;\n\n private systemThemeChangeUnsubscribe: (() => void) | null = null;\n\n private actionsConfiguration?: ActionConfiguration;\n\n /**\n * Promise that resolves after end of th connection restoring process (promise will fire after `onStatusChange`, so you can get actual information about wallet and session after when promise resolved).\n * Resolved value `true`/`false` indicates if the session was restored successfully.\n */\n public readonly connectionRestored = Promise.resolve(false);\n\n /**\n * Current connection status.\n */\n public get connected(): boolean {\n return this.connector.connected;\n }\n\n /**\n * Current connected account or null.\n */\n public get account(): Account | null {\n return this.connector.account;\n }\n\n /**\n * Curren connected wallet app or null.\n */\n public get wallet(): Wallet | null {\n return this.connector.wallet;\n }\n\n /**\n * Curren connected wallet's info or null.\n */\n public get walletInfo(): WalletInfoWithOpenMethod | null {\n return this._walletInfo;\n }\n\n /**\n * Set and apply new UI options. Object with partial options should be passed. Passed options will be merged with current options.\n * @param options\n */\n public set uiOptions(options: TonConnectUiOptions) {\n this.checkButtonRootExist(options.buttonRootId);\n\n this.actionsConfiguration = options.actionsConfiguration;\n\n if (options.uiPreferences?.theme) {\n if (options.uiPreferences?.theme !== 'SYSTEM') {\n this.systemThemeChangeUnsubscribe?.();\n setTheme(options.uiPreferences.theme, options.uiPreferences.colorsSet);\n } else {\n setTheme(getSystemTheme(), options.uiPreferences.colorsSet);\n\n if (!this.systemThemeChangeUnsubscribe) {\n this.systemThemeChangeUnsubscribe = subscribeToThemeChange(setTheme);\n }\n }\n } else {\n if (options.uiPreferences?.colorsSet) {\n setColors(options.uiPreferences.colorsSet);\n }\n }\n\n if (options.uiPreferences?.borderRadius) {\n setBorderRadius(options.uiPreferences.borderRadius);\n }\n\n setAppState(state => {\n const merged = mergeOptions(\n {\n ...(options.language && { language: options.language }),\n ...(!!options.actionsConfiguration?.returnStrategy && {\n returnStrategy: options.actionsConfiguration.returnStrategy\n }),\n ...(!!options.walletsList && { walletsList: options.walletsList })\n },\n unwrap(state)\n );\n\n if (options.buttonRootId !== undefined) {\n merged.buttonRootId = options.buttonRootId;\n }\n\n return merged;\n });\n }\n\n constructor(options?: TonConnectUiCreateOptions) {\n if (options && 'connector' in options && options.connector) {\n this.connector = options.connector;\n } else if (options && 'manifestUrl' in options && options.manifestUrl) {\n this.connector = new TonConnect({\n manifestUrl: options.manifestUrl,\n walletsListSource: options.walletsListSource\n });\n } else {\n throw new TonConnectUIError(\n 'You have to specify a `manifestUrl` or a `connector` in the options.'\n );\n }\n\n this.getWallets();\n const rootId = this.normalizeWidgetRoot(options?.widgetRootId);\n\n this.subscribeToWalletChange();\n\n if (options?.restoreConnection !== false) {\n this.connectionRestored = new Promise(async resolve => {\n await this.connector.restoreConnection();\n\n if (!this.connector.connected) {\n this.walletInfoStorage.removeWalletInfo();\n }\n\n resolve(this.connector.connected);\n });\n }\n\n this.uiOptions = mergeOptions(options, { uiPreferences: { theme: 'SYSTEM' } });\n setAppState({\n connector: this.connector,\n getConnectParameters: options?.getConnectParameters\n });\n\n widgetController.renderApp(rootId, this);\n }\n\n /**\n * Returns available wallets list.\n */\n public async getWallets(): Promise<WalletInfo[]> {\n return this.connector.getWallets();\n }\n\n /**\n * Subscribe to connection status change.\n * @return function which has to be called to unsubscribe.\n */\n public onStatusChange(\n callback: (wallet: ConnectedWallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): ReturnType<ITonConnect['onStatusChange']> {\n return this.connector.onStatusChange(wallet => {\n if (wallet) {\n const lastSelectedWalletInfo =\n widgetController.getSelectedWalletInfo() ||\n this.walletInfoStorage.getWalletInfo();\n\n callback({ ...wallet, ...lastSelectedWalletInfo! });\n } else {\n callback(wallet);\n }\n }, errorsHandler);\n }\n\n /**\n * Opens the modal window and handles a wallet connection.\n */\n public async connectWallet(): Promise<ConnectedWallet> {\n const walletsList = await this.getWallets();\n const embeddedWallet: WalletInfoInjected = walletsList.find(\n wallet => 'embedded' in wallet && wallet.embedded\n ) as WalletInfoInjected;\n\n if (embeddedWallet) {\n const additionalRequest = await appState.getConnectParameters?.();\n\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey }, additionalRequest);\n } else {\n widgetController.openWalletsModal();\n }\n\n return new Promise((resolve, reject) => {\n const unsubscribe = this.connector.onStatusChange(wallet => {\n unsubscribe!();\n if (wallet) {\n const lastSelectedWalletInfo =\n widgetController.getSelectedWalletInfo() ||\n this.walletInfoStorage.getWalletInfo();\n\n resolve({ ...wallet, ...lastSelectedWalletInfo! });\n } else {\n reject(new TonConnectUIError('Wallet was not connected'));\n }\n }, reject);\n });\n }\n\n /**\n * Disconnect wallet and clean localstorage.\n */\n public disconnect(): Promise<void> {\n this.walletInfoStorage.removeWalletInfo();\n return this.connector.disconnect();\n }\n\n /**\n * Opens the modal window and handles the transaction sending.\n * @param tx transaction to send.\n * @param options modal and notifications behaviour settings. Default is show only 'before' modal and all notifications.\n */\n public async sendTransaction(\n tx: SendTransactionRequest,\n options?: ActionConfiguration\n ): Promise<SendTransactionResponse> {\n if (!this.connected || !this.walletInfo) {\n throw new TonConnectUIError('Connect wallet to send a transaction.');\n }\n\n const { notifications, modals, returnStrategy } =\n this.getModalsAndNotificationsConfiguration(options);\n\n if ('universalLink' in this.walletInfo && this.walletInfo.openMethod === 'universal-link') {\n openLink(addReturnStrategy(this.walletInfo.universalLink, returnStrategy));\n }\n\n widgetController.setAction({\n name: 'confirm-transaction',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before')\n });\n\n try {\n const result = await this.connector.sendTransaction(tx);\n\n widgetController.setAction({\n name: 'transaction-sent',\n showNotification: notifications.includes('success'),\n openModal: modals.includes('success')\n });\n\n return result;\n } catch (e) {\n widgetController.setAction({\n name: 'transaction-canceled',\n showNotification: notifications.includes('error'),\n openModal: modals.includes('error')\n });\n\n if (e instanceof TonConnectError) {\n throw e;\n } else {\n console.error(e);\n throw new TonConnectUIError('Unhandled error:' + e);\n }\n }\n }\n\n private subscribeToWalletChange(): void {\n this.connector.onStatusChange(wallet => {\n if (wallet) {\n this.updateWalletInfo();\n } else {\n this.walletInfoStorage.removeWalletInfo();\n }\n });\n }\n\n private updateWalletInfo(): void {\n const lastSelectedWalletInfo = widgetController.getSelectedWalletInfo();\n\n if (lastSelectedWalletInfo) {\n this._walletInfo = lastSelectedWalletInfo;\n this.walletInfoStorage.setWalletInfo(lastSelectedWalletInfo);\n } else {\n this._walletInfo = this.walletInfoStorage.getWalletInfo();\n }\n }\n\n private normalizeWidgetRoot(rootId: string | undefined): string {\n if (!rootId || !document.getElementById(rootId)) {\n rootId = 'tc-widget-root';\n const rootElement = document.createElement('div');\n rootElement.id = rootId;\n document.body.appendChild(rootElement);\n }\n\n return rootId;\n }\n\n private checkButtonRootExist(buttonRootId: string | null | undefined): void | never {\n if (buttonRootId == null) {\n return;\n }\n\n if (!document.getElementById(buttonRootId)) {\n throw new TonConnectUIError(`${buttonRootId} element not found in the document.`);\n }\n }\n\n private getModalsAndNotificationsConfiguration(\n options?: ActionConfiguration\n ): StrictActionConfiguration {\n const allActions: StrictActionConfiguration['notifications'] = [\n 'before',\n 'success',\n 'error'\n ];\n\n let notifications: StrictActionConfiguration['notifications'] = allActions;\n if (\n this.actionsConfiguration?.notifications &&\n this.actionsConfiguration?.notifications !== 'all'\n ) {\n notifications = this.actionsConfiguration.notifications;\n }\n\n if (options?.notifications) {\n if (options.notifications === 'all') {\n notifications = allActions;\n } else {\n notifications = options.notifications;\n }\n }\n\n let modals: StrictActionConfiguration['modals'] = ['before'];\n if (this.actionsConfiguration?.modals) {\n if (this.actionsConfiguration.modals === 'all') {\n modals = allActions;\n } else {\n modals = this.actionsConfiguration.modals;\n }\n }\n if (options?.modals) {\n if (options.modals === 'all') {\n modals = allActions;\n } else {\n modals = options.modals;\n }\n }\n\n return {\n notifications,\n modals,\n returnStrategy: options?.returnStrategy || 'back'\n };\n }\n}\n"],"names":["TonConnectError","Error","constructor","message","options","prefix","super","Object","setPrototypeOf","this","prototype","DappMetadataError","args","ManifestContentErrorError","additionalMessage","ManifestNotFoundError","WalletAlreadyConnectedError","WalletNotConnectedError","WalletNotSupportFeatureError","isWalletConnectionSourceJS","value","UserRejectsError","BadRequestError","UnknownAppError","WalletNotInjectedError","LocalstorageNotFoundError","FetchWalletsError","WrongAddressError","ParseHexError","UnknownError","CONNECT_EVENT_ERROR_CODES","CONNECT_ITEM_ERROR_CODES","SEND_TRANSACTION_ERROR_CODES","CHAIN","root","f","util","validateBase64","s","test","TypeError","decodeUTF8","i","d","unescape","encodeURIComponent","b","Uint8Array","length","charCodeAt","encodeUTF8","arr","push","String","fromCharCode","decodeURIComponent","escape","join","atob","Buffer","from","encodeBase64","toString","decodeBase64","Array","slice","call","len","btoa","module","exports","nacl","encodeUint8Array","urlSafe","encoded","decodeToUint8Array","encode","uint8Array","JSON","stringify","decode","decodedUint8Array","toObject","parse","e","toUint8Array","Base64","concatUint8Arrays","buffer1","buffer2","mergedArray","set","splitToUint8Arrays","array","index","toHexString","byteArray","hexString","forEach","byte","hexToByteArray","result","parseInt","isNode","process","versions","node","__viteBrowserExternal","gf","init","r","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","x","h","l","vn","xi","y","yi","n","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","out","inp","k","c","o","p","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","m","mpos","z","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","key","t0","t1","t2","t3","t4","t5","t6","t7","buffer","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","update","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","a","car25519","v","Math","floor","sel25519","q","t","pack25519","j","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","subarray","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","bytes","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","g","want","crypto_box_afternm","crypto_box_open_afternm","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","pos","crypto_hash","add","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","reduce","crypto_sign","sm","smlen","crypto_sign_open","chk","num","den","den2","den4","den6","unpackneg","crypto_secretbox_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","arguments","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","msg","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","publicKey","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","sign","signedMsg","tmp","mlen","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hash","hashLength","setPRNG","fn","crypto","self","msCrypto","getRandomValues","min","require","require$$0","eval","err","SessionCrypto","createKeypairFromString","createKeypair","sessionId","createNonce","encrypt","receiverPublicKey","encodedMessage","TextEncoder","decrypt","senderPublicKey","internalMessage","decrypted","TextDecoder","stringifyKeypair","connectEventErrorsCodes","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","MANIFEST_NOT_FOUND_ERROR","MANIFEST_CONTENT_ERROR","ConnectErrorsParser","parseError","error","ErrorConstructor","code","connectErrorsParser","RpcParser","isError","response","sendTransactionErrors","SendTransactionParser","convertToRpcRequest","request","method","params","parseAndThrowError","convertFromRpcResponse","rpcResponse","boc","sendTransactionParser","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","apply","HttpBridgeGatewayStorage","storage","storeKey","storeLastEventId","lastEventId","setItem","removeLastEventId","removeItem","getLastEventId","stored","getItem","removeUrlLastSlash","url","addPathToUrl","path","console","BridgeGateway","bridgeUrl","listener","errorsListener","ssePath","postPath","heartbeatMessage","defaultTtl","isClosed","bridgeGatewayStorage","registerSession","URL","searchParams","append","eventSource","EventSource","onerror","onopen","errorsHandler","bind","onmessage","messagesHandler","send","receiver","ttl","fetch","body","close","_a","_b","readyState","CLOSED","CONNECTING","debug","data","bridgeIncomingMessage","BridgeConnectionStorage","storeConnection","connection","type","rawSession","sessionKeyPair","session","sessionCrypto","walletPublicKey","walletConnectionSource","rawConnection","connectEvent","removeConnection","getConnection","getHttpConnection","getInjectedConnection","storedConnectionType","PROTOCOL_VERSION","BridgeProvider","standardUniversalLink","pendingRequests","Map","nextRequestId","bridge","pendingBridges","listeners","connectionStorage","static","bridgeConnectionStorage","connect","closeBridges","universalLink","isArray","map","source","gatewayListener","gatewayErrorsListener","generateUniversalLink","restoreConnection","storedConnection","sendRequest","id","encodedRequest","assign","catch","closeConnection","disconnect","removeBridgeAndSession","listen","callback","filter","pendingGatewaysListener","gateway","includes","walletMessage","get","delete","event","updateSession","tonAddrItem","payload","items","find","item","name","connectEventToSave","except","getWindow","window","getWebPageManifest","origin","location","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","isWindowContainsWallet","injectedWallet","tonconnect","jsBridgeKey","isWalletBrowser","_connect","makeSubscriptions","closeAllListeners","eventsCallback","protocolVersion","connectEventError","DefaultStorage","localStorage","isWalletInfoInjected","WalletsListManager","walletsListSource","walletsListCache","getWallets","fetchWalletsList","getEmbeddedWallet","embeddedWallets","embedded","walletsResponse","walletsList","json","every","wallet","isCorrectWalletConfigDTO","walletConfigDTOListToWalletConfigList","walletConfigDTO","walletConfig","imageUrl","image","aboutUrl","about_url","tondns","universal_url","deepLink","injected","isWalletInjected","isInsideWalletBrowser","some","sseBridge","jsBridge","__rest","hasOwnProperty","indexOf","getOwnPropertySymbols","propertyIsEnumerable","TonConnect","_wallet","provider","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","manifestUrl","connected","account","onStatusChange","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","all","fromStorage","walletEventsListener","sendTransaction","transaction","checkConnection","checkFeatureSupport","validUntil","valid_until","onWalletDisconnected","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","device","address","chain","network","walletStateInit","connectItems","tonProof","feature","features","walletJSKey","bounceableTag","testOnlyTag","toUserFriendlyAddress","hexAddress","testOnly","wc","hex","parseHexAddress","tag","addr","Int8Array","addressWithChecksum","crc16","replace","parts","split","hexToBytes","reg","toByteMap","ord","length2","toLowerCase","doubled","hexSubstring","substring","sharedConfig","setHydrateContext","context","equalFn","$PROXY","Symbol","$TRACK","signalOptions","equals","runEffects","runQueue","STALE","PENDING","UNOWNED","owned","cleanups","owner","NO_INIT","Owner","Transition","Listener","Updates","Effects","ExecCount","SuspenseContext","createRoot","detachedOwner","unowned","updateFn","untrack","cleanNode","runUpdates","createSignal","observers","observerSlots","comparator","readSignal","writeSignal","createComputed","updateComputation","createComputation","createRenderEffect","createEffect","runUserEffects","user","createMemo","createResource","pSource","pFetcher","pOptions","fetcher","pr","initP","scheduled","resolved","dynamic","contexts","Set","setValue","initialValue","setError","track","trigger","state","setState","count","ssrLoadFrom","load","loadEnd","onHydrated","queueMicrotask","completeLoad","keys","decrement","clear","read","has","increment","refetching","lookup","castError","defineProperties","loading","latest","refetch","mutate","batch","on","deps","prevInput","defer","prevValue","input","onMount","onCleanup","getListener","createContext","defaultValue","Provider","useContext","ctx","children","memo","resolveChildren","toArray","runningTransition","sources","updates","lookUpstream","sSlot","sourceSlots","isComp","current","TransitionRunning","running","disposed","tState","pure","markDownstream","time","runComputation","nextValue","handleError","updatedAt","runTop","suspense","inFallback","effects","ancestors","wait","res","completeUpdates","queue","userLength","ignore","pop","obs","results","props","FALLBACK","dispose","mapArray","list","mapFn","mapped","disposers","indexes","newItems","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","start","end","newEnd","newLen","fallback","disposer","mapper","createComponent","Comp","trueFn","propTraps","_","property","deleteProperty","getOwnPropertyDescriptor","configurable","enumerable","ownKeys","resolveSource","mergeProps","proxy","Proxy","target","descriptors","getOwnPropertyDescriptors","defineProperty","splitProps","blocked","flat","clone","For","each","Show","strictEqual","keyed","condition","when","child","Switch","conditions","evalConditions","conds","cond","Match","booleans","Properties","ChildProperties","Aliases","create","className","htmlFor","PropAliases","class","formnovalidate","ismap","nomodule","playsinline","readonly","DelegatedEvents","SVGElements","SVGNamespace","xlink","xml","reconcileArrays","parentNode","bLength","aEnd","bEnd","aStart","bStart","nextSibling","insertBefore","remove","sequence","replaceChild","$$EVENTS","render","element","document","insert","firstChild","textContent","template","html","check","isSVG","createElement","innerHTML","content","delegateEvents","eventNames","addEventListener","eventHandler","setAttribute","removeAttribute","setAttributeNS","namespace","removeAttributeNS","handler","delegate","handlerFn","classList","prev","classKeys","prevKeys","toggleClassKey","classValue","style","nodeStyle","cssText","removeProperty","setProperty","spread","skipChildren","prevProps","insertExpression","ref","use","arg","parent","accessor","marker","initial","skipRef","prop","assignProp","getNextElement","registry","getHydrationKey","completed","cloneNode","toPropertyName","w","toUpperCase","classNames","trim","nameLen","toggle","isCE","isProp","isChildProp","removeEventListener","nodeName","ns","composedPath","querySelectorAll","elem","disabled","cancelBubble","_$host","host","unwrapArray","childNodes","multi","nodeType","createTextNode","cleanChildren","currentArray","normalizeIncomingArray","appendNodes","Node","appendChild","normalized","unwrap","replacement","inserted","el","isParent","hydrate","SVG_NAMESPACE","tagName","createElementNS","Portal","useShadow","mount","renderPortal","HTMLHeadElement","clean","setClean","container","renderRoot","attachShadow","mode","removeChild","Dynamic","others","cached","component","isSvg","walletsModalOpen","setWalletsModalOpen","lastSelectedWalletInfo","setLastSelectedWalletInfo","action","setAction","querySelector","_goober","head","exec","shift","unshift","raw","ThemeContext","ThemeProvider","theme","useTheme","makeStyled","_ctx","Styled","withTheme","pClass","css","Boolean","local","newProps","htmlProps","createTag","as","styled","createGlobalStyles","i18nDictionary","en","parseDictionary","ru","dictionary","iterate","subDictionary","entries","obj","ConnectorContext","$RAW","$NODE","$NAME","wrap$1","proxyTraps$1","desc","isWrappable","proto","getPrototypeOf","unwrapped","isFrozen","getDataNodes","nodes","getDataNode","createDataNode","proxyDescriptor$1","Reflect","writable","trackSelf","internal","$","tracked","deleting","mergeStoreNode","updateArray","updatePath","traversed","part","partType","concat","to","by","createStore","store","unwrappedStore","THEME","defaultLightColorsSet","constant","black","white","connectButton","background","foreground","accent","icon","primary","secondary","tertiary","success","text","defaultDarkColorsSet","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","for","REACT_ELEMENT_TYPE","$$typeof","emptyTarget","val","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","propertyIsUnsafe","mergeObject","destination","arrayMerge","sourceIsArray","deepmerge_1","cjs","isObject","isPlainObject","ctor","prot","mergeOptions","defaultOptions","sourceArray","__","themeState","setThemeState","LIGHT","colors","borderRadius","themeColorsMappingDefault","DARK","themeCustomColors","setTheme","colorsSet","setBorderRadius","setColors","GlobalStyles","_$createComponent","hexToRgb","bigint","rgba","color","opacity","borders","none","ButtonStyled","button","Button","onClick","r$","hasOwn","classes","argType","inner","default","nextFrame","requestAnimationFrame","first","s1","set1","s2","set2","onBeforeEnter","onEnter","onAfterEnter","onBeforeExit","onExit","onAfterExit","classnames","enterActiveClass","enterClass","enterToClass","exitActiveClass","exitClass","exitToClass","enterTransition","appear","endTransition","enterActiveClasses","enterToClasses","exitTransition","enterClasses","exitClasses","exitActiveClasses","exitToClasses","getRect","top","bottom","left","right","width","height","getBoundingClientRect","parentRect","TransitionGroup","moveClass","combined","setCombined","comb","old","splice","new","newPos","once","oldPos","dx","dy","moved","transform","transitionDuration","offsetHeight","propertyName","moveClasses","clickOutside","contains","escPressed","onKeyPress","activeElement","blur","maxWidth","mobile","tablet","isDevice","innerWidth","media","rotationDegrees","ArrowIcon","svgDirection","viewBox","fill","xmlns","direction","_el$","_tmpl$","_$effect","_$setAttribute","CloseIcon","_el$2","IconButtonStyled","IconButton","ModalBackgroundStyled","div","ModalWrapperClass","CloseButtonStyled","clickOutsideDirective","keyPressed","keyPressedDirective","Modal","duration","animate","firstElementChild","backgroundAnimation","contentAnimation","finished","opened","_$use","onClose","_$insert","_p$","_v$2","cn","_v$","_$className","deepReadObject","str","createI18nContext","lang","navigator","language","locale","setLocale","dict","setDict","lang2","table","I18nContext","useI18n","H1Styled","H1","_$memo","translationKey","translationValues","H2Styled","H2","H3Styled","H3","TextStyled","fontWeight","fontSize","lineHeight","letterSpacing","Text","inputs","TonIcon","SuccessIcon","_el$3","_v$3","ErrorIcon","LoaderIcon","svgClass","keyframes","TonConnectUiContext","CopyIcon","DisconnectIcon","copyToClipboard","clipboard","writeText","fallbackCopyTextToClipboard","textArea","position","focus","select","execCommand","hoverBorders","dropdownBorders","AccountButtonDropdownStyled","UlStyled","ul","MenuButtonStyled","MenuItemText","AccountButtonDropdown","tonConnectUi","connector","isCopiedShown","setIsCopiedShown","onCopy","__async","userFriendlyAddress","TESTNET","setTimeout","NotificationStyled","Notification","header","LoaderIconStyled","ConfirmOperationNotification","ErrorIconStyled","ErrorTransactionNotification","SuccessIconStyled","SuccessTransactionNotification","NotificationClass","Notifications","lastId","openedNotifications","setOpenedNotifications","showNotification","notifications","notification","openedNotification","AccountButtonStyled","DropdownButtonStyled","LoaderButtonStyled","DropdownContainerStyled","DropdownStyled","NotificationsStyled","getSide","placement","getAlignment","getMainAxisFromPlacement","getLengthFromAxis","axis","computeCoordsFromPlacement","_ref","rtl","reference","floating","commonX","commonY","mainAxis","commonAlign","isVertical","coords","computePosition","config","strategy","middleware","platform","validMiddleware","isRTL","NODE_ENV","rects","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","initialPlacement","elements","__spreadProps","__spreadValues","warn","rectToClientRect","rect","_node$ownerDocument","ownerDocument","defaultView","getComputedStyle","getNodeName","uaString","getUAString","uaData","userAgentData","brands","brand","version","userAgent","isHTMLElement","HTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","isFirefox","backdropFilter","WebkitBackdropFilter","perspective","willChange","contain","isLayoutViewport","isLastTraversableNode","max","round","FALLBACK_SCALE","getScale","domElement","contextElement","boxSizing","offsetWidth","parseFloat","Number","isFinite","includeScale","isFixedStrategy","offsetParent","_win$visualViewport$o","_win$visualViewport","_win$visualViewport$o2","_win$visualViewport2","clientRect","scale","win","addVisualOffsets","visualViewport","offsetLeft","offsetTop","getDocumentElement","documentElement","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getWindowScrollBarX","getRectRelativeToOffsetParent","isOffsetParentAnElement","scroll","offsets","offsetRect","clientLeft","clientTop","getParentNode","assignedSlot","getTrueOffsetParent","getContainingBlock","currentNode","getOffsetParent","getDimensions","convertOffsetParentRelativeRectToViewportRelativeRect","getViewportRect","clientWidth","clientHeight","layoutViewport","getDocumentRect","_element$ownerDocumen","scrollWidth","scrollHeight","getNearestOverflowAncestor","getOverflowAncestors","scrollableAncestor","isBody","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","containingBlock","ancestor","getClippingRect","boundary","rootBoundary","clippingAncestors","_c","firstClippingAncestor","clippingRect","accRect","getOffsetParentFn","getDimensionsFn","getClientRects","autoUpdate","ancestorScroll","_ancestorScroll","ancestorResize","elementResize","animationFrame","passive","frameId","observer","initialUpdate","ResizeObserver","observe","prevRefRect","frameLoop","nextRefRect","_observer","cancelAnimationFrame","mergedOptions","platformWithCache","computePosition$1","F","R","E","whileElementsMounted","AccountButton","tonConnectUI","isOpened","setIsOpened","setAccount","restoringProcess","setRestoringProcess","dropDownRef","setFloating","anchor","setAnchor","useFloating","connectionRestored","unsubscribe","clickToButton","clickToDropdown","connectWallet","acc","normalizedAddress","hidden","QrCodeStyled","ImageBackground","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","maskPattern","moduleCount","modules","row","col","setupPositionProbePattern","setupTypeInfo","setupTypeNumber","createData","mapData","setupTimingPattern","setupPositionAdjustPattern","QRUtil","getPatternPosition","bits","getBCHTypeNumber","mod","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","createBytes","addData","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","alt","title","opts","mr","size","qrSvg","scalable","escapeXml","createDataURL","createImgTag","img","escaped","charAt","createASCII","blocksLastLineNoMargin","ascii","_createHalfASCII","line","renderTo2dContext","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","QRMode","Q","H","QRMaskPattern","digit","errorCorrectLength","multiply","QRMath","gexp","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","_num","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","_buffer","_length","bufIndex","bit","_mode","_data","strToNum","chatToNum","getCode","_bytes","byteArrayOutputStream","writeByte","off","_str","_pos","_buflen","match","getPixel","gif","_width","_height","pixel","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","lzwTable","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","flush","toByteArray","_map","_size","gifImage","setPixel","base64","_base64","writeEncoded","padlen","base64EncodeOutputStream","utf8","charcode","toUTF8Array","QRCode","qrCodeCanvas","qr","sourceUrl","_tmpl$2","Translation","QrCodeModalStyled","StyledIconButton","QRBackgroundStyled","ButtonsContainerStyled","ActionButtonStyled","GetWalletStyled","openLink","href","openLinkBlank","getSystemTheme","matchMedia","matches","subscribeToThemeChange","addQueryParameter","parsed","addReturnStrategy","returnStrategy","appState","setAppState","buttonRootId","QrCodeModal","additionalRequest","onBackClick","openMethod","WalletItemStyled","StyledText","WalletItem","iconUrl","SelectWalletModalStyled","SelectWalletModal","onSelect","StyledModal","LoaderContainerStyled","uiWalletToWalletInfo","uiWallet","applyWalletsListConfiguration","configuration","wallets","walletInfo","filteredWalletsList","excludeWallets","includeWallets","includeWalletsOrder","WalletsModal","fetchedWalletsList","fetchedAdditionalRequest","getConnectParameters","undefined","selectedWalletInfo","setSelectedWalletInfo","additionalRequestLoading","onSelectIfMobile","onSelectIfInjected","ActionModalStyled","ActionModal","headerTranslationKey","textTranslationKey","showButton","ConfirmTransactionModal","TransactionCanceledModal","TransactionSentModal","ActionsModal","openModal","App","translations","getElementById","widgetController","openWalletsModal","closeWalletsModal","clearAction","getSelectedWalletInfo","renderApp","TonConnectUIError","WalletInfoStorage","__publicField","setWalletInfo","storageKey","getWalletInfo","walletInfoString","removeWalletInfo","TonConnectUI","rootId","normalizeWidgetRoot","widgetRootId","subscribeToWalletChange","walletInfoStorage","uiOptions","uiPreferences","_walletInfo","checkButtonRootExist","actionsConfiguration","systemThemeChangeUnsubscribe","_d","_e","merged","modals","getModalsAndNotificationsConfiguration","updateWalletInfo","rootElement","allActions"],"mappings":"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"}
1
+ {"version":3,"file":"tonconnect-ui.min.js","sources":["../../../node_modules/tweetnacl-util/nacl-util.js","../__vite-browser-external","../../../node_modules/tweetnacl/nacl-fast.js","../../protocol/lib/esm/index.mjs","../../sdk/lib/esm/index.mjs","../../../node_modules/solid-js/dist/solid.js","../../../node_modules/solid-js/web/dist/web.js","../src/app/state/modals-state.ts","../../../node_modules/goober/dist/goober.modern.js","../../../node_modules/solid-styled-components/src/index.js","../src/app/i18n.ts","../src/app/state/connector.context.ts","../../../node_modules/solid-js/store/dist/store.js","../src/models/THEME.ts","../src/app/styles/default-colors.ts","../../../node_modules/deepmerge/dist/cjs.js","../node_modules/is-plain-object/dist/is-plain-object.mjs","../src/app/utils/options.ts","../src/app/state/theme-state.ts","../src/app/styles/global-styles.tsx","../src/app/components/image/style.ts","../src/app/components/image/index.tsx","../src/app/utils/css.ts","../src/errors/ton-connect-ui.error.ts","../src/app/utils/web-api.ts","../src/app/styles/media.ts","../src/app/components/button/style.ts","../src/app/hooks/use-data-attributes.ts","../src/app/components/button/index.tsx","../../../node_modules/classnames/index.js","../../../node_modules/solid-transition-group/dist/solid-transition-group.js","../src/app/components/icons/arrow-icon.tsx","../src/app/components/icons/close-icon.tsx","../src/app/components/icon-button/style.ts","../src/app/components/icon-button/index.tsx","../src/app/components/modal/style.ts","../src/app/components/modal/index.tsx","../src/app/directives/click-outside.tsx","../src/app/directives/key-pressed.tsx","../src/app/components/tab-bar/style.ts","../src/app/components/qr-code/style.ts","../../../node_modules/qrcode-generator/qrcode.js","../src/app/utils/copy-to-clipboard.ts","../../../node_modules/@solid-primitives/i18n/dist/index.js","../src/app/components/typography/Translation/index.tsx","../src/app/components/qr-code/index.tsx","../src/app/components/typography/text/style.ts","../src/app/components/typography/text/index.tsx","../src/app/components/wallet-item/style.ts","../src/app/components/wallet-item/index.tsx","../src/app/components/typography/h1/style.ts","../src/app/components/typography/h1/index.tsx","../src/app/components/typography/h2/style.ts","../src/app/components/typography/h2/index.tsx","../src/app/components/typography/h3/style.ts","../src/app/components/typography/h3/index.tsx","../src/app/components/icons/long-arrow-icon.tsx","../src/app/components/icons/ton-icon.tsx","../src/app/components/icons/success-icon.tsx","../src/app/components/icons/error-icon.tsx","../src/app/components/icons/loader-icon.tsx","../src/app/state/ton-connect-ui.context.ts","../src/app/components/icons/copy-icon.tsx","../src/app/components/icons/disconnect-icon.tsx","../src/app/views/account-button/account-button-dropdown/style.ts","../src/app/views/account-button/account-button-dropdown/index.tsx","../src/app/components/notification/style.ts","../src/app/components/notification/index.tsx","../src/app/views/account-button/notifications/confirm-operation-notification/style.ts","../src/app/views/account-button/notifications/confirm-operation-notification/index.tsx","../src/app/views/account-button/notifications/error-transaction-notification/style.ts","../src/app/views/account-button/notifications/error-transaction-notification/index.tsx","../src/app/views/account-button/notifications/success-transaction-notification/style.ts","../src/app/views/account-button/notifications/success-transaction-notification/index.tsx","../src/app/views/account-button/notifications/style.ts","../src/app/views/account-button/style.ts","../src/app/views/account-button/notifications/index.tsx","../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../src/app/views/account-button/index.tsx","../../../node_modules/solid-floating-ui/dist/esm/production/index.mjs","../src/app/views/modals/wallets-modal/qr-code-modal/style.ts","../src/app/state/app.state.ts","../src/app/components/link/style.ts","../src/app/components/link/index.tsx","../src/app/views/modals/wallets-modal/qr-code-modal/index.tsx","../src/app/views/modals/wallets-modal/style.ts","../src/app/components/tab-bar/index.tsx","../src/app/utils/wallets.ts","../src/app/utils/array.ts","../src/app/hooks/isMobile.ts","../src/app/views/modals/wallets-modal/mobile-select-wallet-modal/style.ts","../src/app/env/LINKS.ts","../src/app/views/modals/wallets-modal/mobile-select-wallet-modal/index.tsx","../src/app/views/modals/wallets-modal/universal-qr-modal/style.ts","../src/app/views/modals/wallets-modal/universal-qr-modal/index.tsx","../src/app/views/modals/wallets-modal/desktop-select-wallet-modal/style.ts","../src/app/views/modals/wallets-modal/desktop-select-wallet-modal/index.tsx","../src/app/views/modals/wallets-modal/wallets-modal.tsx","../src/app/views/modals/actions-modal/action-modal/style.ts","../src/app/views/modals/actions-modal/action-modal/index.tsx","../src/app/views/modals/actions-modal/confirm-transaction-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-canceled-modal/index.tsx","../src/app/views/modals/actions-modal/transaction-sent-modal/index.tsx","../src/app/views/modals/actions-modal/actions-modal.tsx","../src/app/App.tsx","../src/app/widget-controller.tsx","../src/storage/wallet-info-storage.ts","../src/storage/preferred-wallet-storage.ts","../src/ton-connect-ui.ts"],"sourcesContent":["// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n","export default {}","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","import nacl from 'tweetnacl-util';\nimport nacl$1 from 'tweetnacl';\n\nvar CONNECT_EVENT_ERROR_CODES;\n(function (CONNECT_EVENT_ERROR_CODES) {\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_NOT_FOUND_ERROR\"] = 2] = \"MANIFEST_NOT_FOUND_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"MANIFEST_CONTENT_ERROR\"] = 3] = \"MANIFEST_CONTENT_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n CONNECT_EVENT_ERROR_CODES[CONNECT_EVENT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_EVENT_ERROR_CODES || (CONNECT_EVENT_ERROR_CODES = {}));\nvar CONNECT_ITEM_ERROR_CODES;\n(function (CONNECT_ITEM_ERROR_CODES) {\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n CONNECT_ITEM_ERROR_CODES[CONNECT_ITEM_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(CONNECT_ITEM_ERROR_CODES || (CONNECT_ITEM_ERROR_CODES = {}));\n\nvar SEND_TRANSACTION_ERROR_CODES;\n(function (SEND_TRANSACTION_ERROR_CODES) {\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SEND_TRANSACTION_ERROR_CODES[SEND_TRANSACTION_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SEND_TRANSACTION_ERROR_CODES || (SEND_TRANSACTION_ERROR_CODES = {}));\n\nvar SIGN_DATA_ERROR_CODES;\n(function (SIGN_DATA_ERROR_CODES) {\n SIGN_DATA_ERROR_CODES[SIGN_DATA_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n SIGN_DATA_ERROR_CODES[SIGN_DATA_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n SIGN_DATA_ERROR_CODES[SIGN_DATA_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n SIGN_DATA_ERROR_CODES[SIGN_DATA_ERROR_CODES[\"USER_REJECTS_ERROR\"] = 300] = \"USER_REJECTS_ERROR\";\n SIGN_DATA_ERROR_CODES[SIGN_DATA_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(SIGN_DATA_ERROR_CODES || (SIGN_DATA_ERROR_CODES = {}));\n\nvar DISCONNECT_ERROR_CODES;\n(function (DISCONNECT_ERROR_CODES) {\n DISCONNECT_ERROR_CODES[DISCONNECT_ERROR_CODES[\"UNKNOWN_ERROR\"] = 0] = \"UNKNOWN_ERROR\";\n DISCONNECT_ERROR_CODES[DISCONNECT_ERROR_CODES[\"BAD_REQUEST_ERROR\"] = 1] = \"BAD_REQUEST_ERROR\";\n DISCONNECT_ERROR_CODES[DISCONNECT_ERROR_CODES[\"UNKNOWN_APP_ERROR\"] = 100] = \"UNKNOWN_APP_ERROR\";\n DISCONNECT_ERROR_CODES[DISCONNECT_ERROR_CODES[\"METHOD_NOT_SUPPORTED\"] = 400] = \"METHOD_NOT_SUPPORTED\";\n})(DISCONNECT_ERROR_CODES || (DISCONNECT_ERROR_CODES = {}));\n\nvar CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN || (CHAIN = {}));\n\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = nacl.encodeBase64(value);\n if (!urlSafe) {\n return encoded;\n }\n return encodeURIComponent(encoded);\n}\nfunction decodeToUint8Array(value, urlSafe) {\n if (urlSafe) {\n value = decodeURIComponent(value);\n }\n return nacl.decodeBase64(value);\n}\nfunction encode(value, urlSafe = false) {\n let uint8Array;\n if (value instanceof Uint8Array) {\n uint8Array = value;\n }\n else {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n uint8Array = nacl.decodeUTF8(value);\n }\n return encodeUint8Array(uint8Array, urlSafe);\n}\nfunction decode(value, urlSafe = false) {\n const decodedUint8Array = decodeToUint8Array(value, urlSafe);\n return {\n toString() {\n return nacl.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(nacl.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nconst Base64 = {\n encode,\n decode\n};\n\nfunction concatUint8Arrays(buffer1, buffer2) {\n const mergedArray = new Uint8Array(buffer1.length + buffer2.length);\n mergedArray.set(buffer1);\n mergedArray.set(buffer2, buffer1.length);\n return mergedArray;\n}\nfunction splitToUint8Arrays(array, index) {\n if (index >= array.length) {\n throw new Error('Index is out of buffer');\n }\n const subArray1 = array.slice(0, index);\n const subArray2 = array.slice(index);\n return [subArray1, subArray2];\n}\nfunction toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nfunction hexToByteArray(hexString) {\n if (hexString.length % 2 !== 0) {\n throw new Error(`Cannot convert ${hexString} to bytesArray`);\n }\n const result = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n result[i / 2] = parseInt(hexString.slice(i, i + 2), 16);\n }\n return result;\n}\n\nfunction isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\n\nclass SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = toHexString(this.keyPair.publicKey);\n }\n createKeypair() {\n return nacl$1.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: hexToByteArray(keyPair.publicKey),\n secretKey: hexToByteArray(keyPair.secretKey)\n };\n }\n createNonce() {\n return nacl$1.randomBytes(this.nonceLength);\n }\n encrypt(message, receiverPublicKey) {\n const encodedMessage = new TextEncoder().encode(message);\n const nonce = this.createNonce();\n const encrypted = nacl$1.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return concatUint8Arrays(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = splitToUint8Arrays(message, this.nonceLength);\n const decrypted = nacl$1.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error(`Decryption error: \\n message: ${message.toString()} \\n sender pubkey: ${senderPublicKey.toString()} \\n keypair pubkey: ${this.keyPair.publicKey.toString()} \\n keypair secretkey: ${this.keyPair.secretKey.toString()}`);\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: toHexString(this.keyPair.publicKey),\n secretKey: toHexString(this.keyPair.secretKey)\n };\n }\n}\n\nexport { Base64, CHAIN, CONNECT_EVENT_ERROR_CODES, CONNECT_ITEM_ERROR_CODES, DISCONNECT_ERROR_CODES, SEND_TRANSACTION_ERROR_CODES, SIGN_DATA_ERROR_CODES, SessionCrypto, concatUint8Arrays, hexToByteArray, isNode, splitToUint8Arrays, toHexString };\n//# sourceMappingURL=index.mjs.map\n","import { CONNECT_EVENT_ERROR_CODES, SEND_TRANSACTION_ERROR_CODES, Base64, SessionCrypto, hexToByteArray } from '@tonconnect/protocol';\nexport { CHAIN, CONNECT_ITEM_ERROR_CODES } from '@tonconnect/protocol';\nimport '@tonconnect/isomorphic-eventsource';\nimport '@tonconnect/isomorphic-fetch';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\n/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nclass TonConnectError extends Error {\n constructor(message, options) {\n super(message, options);\n this.message = `${TonConnectError.prefix} ${this.constructor.name}${this.info ? ': ' + this.info : ''}${message ? '\\n' + message : ''}`;\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n get info() {\n return '';\n }\n}\nTonConnectError.prefix = '[TON_CONNECT_SDK_ERROR]';\n\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nclass DappMetadataError extends TonConnectError {\n get info() {\n return 'Passed DappMetadata is in incorrect format.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n\n/**\n * Thrown when passed manifest contains errors.\n */\nclass ManifestContentErrorError extends TonConnectError {\n get info() {\n return 'Passed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\n\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nclass ManifestNotFoundError extends TonConnectError {\n get info() {\n return 'Manifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\n\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nclass WalletAlreadyConnectedError extends TonConnectError {\n get info() {\n return 'Wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nclass WalletNotConnectedError extends TonConnectError {\n get info() {\n return 'Send transaction or other protocol methods called while wallet is not connected.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n\nfunction isWalletConnectionSourceJS(value) {\n return 'jsBridgeKey' in value;\n}\n\n/**\n * Thrown when user rejects the action in the wallet.\n */\nclass UserRejectsError extends TonConnectError {\n get info() {\n return 'User rejects the action in the wallet.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n\n/**\n * Thrown when request to the wallet contains errors.\n */\nclass BadRequestError extends TonConnectError {\n get info() {\n return 'Request to the wallet contains errors.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nclass UnknownAppError extends TonConnectError {\n get info() {\n return 'App tries to send rpc request to the injected wallet while not connected.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nclass WalletNotInjectedError extends TonConnectError {\n get info() {\n return 'There is an attempt to connect to the injected wallet while it is not exists in the webpage.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.\n */\nclass LocalstorageNotFoundError extends TonConnectError {\n get info() {\n return 'Storage was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nclass FetchWalletsError extends TonConnectError {\n get info() {\n return 'An error occurred while fetching the wallets list.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n\n/**\n * Thrown when passed address is in incorrect format.\n */\nclass WrongAddressError extends TonConnectError {\n get info() {\n return 'Passed address is in incorrect format.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WrongAddressError.prototype);\n }\n}\n\n/**\n * Thrown when passed hex is in incorrect format.\n */\nclass ParseHexError extends TonConnectError {\n get info() {\n return 'Passed hex is in incorrect format.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ParseHexError.prototype);\n }\n}\n\n/**\n * Unhanded unknown error.\n */\nclass UnknownError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n\nconst connectEventErrorsCodes = {\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_NOT_FOUND_ERROR]: ManifestNotFoundError,\n [CONNECT_EVENT_ERROR_CODES.MANIFEST_CONTENT_ERROR]: ManifestContentErrorError\n};\nclass ConnectErrorsParser {\n parseError(error) {\n let ErrorConstructor = UnknownError;\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n return new ErrorConstructor(error.message);\n }\n}\nconst connectErrorsParser = new ConnectErrorsParser();\n\nclass RpcParser {\n isError(response) {\n return 'error' in response;\n }\n}\n\nconst sendTransactionErrors = {\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\nclass SendTransactionParser extends RpcParser {\n convertToRpcRequest(request) {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n parseAndThrowError(response) {\n let ErrorConstructor = UnknownError;\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n throw new ErrorConstructor(response.error.message);\n }\n convertFromRpcResponse(rpcResponse) {\n return {\n boc: rpcResponse.result\n };\n }\n}\nconst sendTransactionParser = new SendTransactionParser();\n\nclass HttpBridgeGatewayStorage {\n constructor(storage, bridgeUrl) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_http-bridge-gateway::' + bridgeUrl;\n }\n storeLastEventId(lastEventId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.setItem(this.storeKey, lastEventId);\n });\n }\n removeLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n return stored;\n });\n }\n}\n\nfunction removeUrlLastSlash(url) {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n return url;\n}\nfunction addPathToUrl(url, path) {\n return removeUrlLastSlash(url) + '/' + path;\n}\n\nclass BridgeGateway {\n constructor(storage, bridgeUrl, sessionId, listener, errorsListener) {\n this.bridgeUrl = bridgeUrl;\n this.sessionId = sessionId;\n this.listener = listener;\n this.errorsListener = errorsListener;\n this.ssePath = 'events';\n this.postPath = 'message';\n this.heartbeatMessage = 'heartbeat';\n this.defaultTtl = 300;\n this.isClosed = false;\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage, bridgeUrl);\n }\n registerSession() {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n const lastEventId = yield this.bridgeGatewayStorage.getLastEventId();\n if (this.isClosed) {\n return;\n }\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n this.eventSource = new EventSource(url.toString());\n return new Promise((resolve, reject) => {\n this.eventSource.onerror = reject;\n this.eventSource.onopen = () => {\n this.eventSource.onerror = this.errorsHandler.bind(this);\n this.eventSource.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n });\n }\n send(message, receiver, topic, ttl) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n url.searchParams.append('topic', topic);\n yield fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n });\n }\n pause() {\n var _a;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n }\n unPause() {\n return this.registerSession();\n }\n close() {\n var _a;\n this.isClosed = true;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n }\n setListener(listener) {\n this.listener = listener;\n }\n setErrorsListener(errorsListener) {\n this.errorsListener = errorsListener;\n }\n errorsHandler(e) {\n var _a, _b;\n if (!this.isClosed) {\n if (((_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.readyState) === EventSource.CLOSED) {\n this.eventSource.close();\n this.registerSession();\n return;\n }\n if (((_b = this.eventSource) === null || _b === void 0 ? void 0 : _b.readyState) === EventSource.CONNECTING) {\n console.debug('[TON_CONNET_SDK_ERROR]: Bridge error', JSON.stringify(e));\n return;\n }\n this.errorsListener(e);\n }\n }\n messagesHandler(e) {\n return __awaiter(this, void 0, void 0, function* () {\n if (e.data === this.heartbeatMessage) {\n return;\n }\n yield this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n if (!this.isClosed) {\n let bridgeIncomingMessage;\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n }\n catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n this.listener(bridgeIncomingMessage);\n }\n });\n }\n}\n\nclass BridgeConnectionStorage {\n constructor(storage) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_bridge-connection';\n }\n storeConnection(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n const rawSession = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n bridgeUrl: connection.session.bridgeUrl\n };\n const rawConnection = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession,\n lastWalletEventId: connection.lastWalletEventId,\n nextRpcRequestId: connection.nextRpcRequestId\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n });\n }\n removeConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n if (connection.type === 'injected') {\n return connection;\n }\n const sessionCrypto = new SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n lastWalletEventId: connection.lastWalletEventId,\n nextRpcRequestId: connection.nextRpcRequestId,\n session: {\n sessionCrypto,\n bridgeUrl: connection.session.bridgeUrl,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n });\n }\n getHttpConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read HTTP connection source while nothing is stored');\n }\n if (connection.type === 'injected') {\n throw new TonConnectError('Trying to read HTTP connection source while injected connection is stored');\n }\n return connection;\n });\n }\n getInjectedConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read Injected bridge connection source while nothing is stored');\n }\n if ((connection === null || connection === void 0 ? void 0 : connection.type) === 'http') {\n throw new TonConnectError('Trying to read Injected bridge connection source while HTTP connection is stored');\n }\n return connection;\n });\n }\n storedConnectionType() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n return connection.type;\n });\n }\n storeLastWalletEventId(id) {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (connection && connection.type === 'http') {\n connection.lastWalletEventId = id;\n return this.storeConnection(connection);\n }\n });\n }\n getLastWalletEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (connection && 'lastWalletEventId' in connection) {\n return connection.lastWalletEventId;\n }\n return undefined;\n });\n }\n increaseNextRpcRequestId() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (connection) {\n const lastId = connection.nextRpcRequestId || 0;\n connection.nextRpcRequestId = lastId + 1;\n return this.storeConnection(connection);\n }\n });\n }\n getNextRpcRequestId() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (connection) {\n return connection.nextRpcRequestId || 0;\n }\n return 0;\n });\n }\n}\n\nconst PROTOCOL_VERSION = 2;\n\nfunction logDebug(...args) {\n {\n try {\n console.debug('[TON_CONNECT_SDK]', ...args);\n }\n catch (_a) { }\n }\n}\nfunction logError(...args) {\n {\n try {\n console.error('[TON_CONNECT_SDK]', ...args);\n }\n catch (_a) { }\n }\n}\nfunction logWarning(...args) {\n {\n try {\n console.warn('[TON_CONNECT_SDK]', ...args);\n }\n catch (_a) { }\n }\n}\n\nclass BridgeProvider {\n constructor(storage, walletConnectionSource) {\n this.storage = storage;\n this.walletConnectionSource = walletConnectionSource;\n this.type = 'http';\n this.standardUniversalLink = 'tc://';\n this.pendingRequests = new Map();\n this.session = null;\n this.gateway = null;\n this.pendingGateways = [];\n this.listeners = [];\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, { bridgeUrl: connection.session.bridgeUrl });\n });\n }\n connect(message) {\n this.closeGateways();\n const sessionCrypto = new SessionCrypto();\n let bridgeUrl = '';\n let universalLink = this.standardUniversalLink;\n if (Array.isArray(this.walletConnectionSource)) {\n this.pendingGateways = this.walletConnectionSource.map(source => {\n const gateway = new BridgeGateway(this.storage, source.bridgeUrl, sessionCrypto.sessionId, () => { }, e => {\n console.error(e);\n });\n gateway.setListener(message => this.pendingGatewaysListener(gateway, source.bridgeUrl, message));\n return gateway;\n });\n this.pendingGateways.forEach(bridge => bridge.registerSession());\n }\n else {\n bridgeUrl = this.walletConnectionSource.bridgeUrl;\n if (this.walletConnectionSource.universalLink) {\n universalLink = this.walletConnectionSource.universalLink;\n }\n this.gateway = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n this.gateway.registerSession();\n }\n this.session = {\n sessionCrypto,\n bridgeUrl\n };\n return this.generateUniversalLink(universalLink, message);\n }\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n if (Array.isArray(this.walletConnectionSource)) {\n throw new TonConnectError('Internal error. Connection source is array while WalletConnectionSourceHTTP was expected.');\n }\n this.closeGateways();\n const storedConnection = yield this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n this.session = storedConnection.session;\n this.gateway = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, storedConnection.session.sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n yield this.gateway.registerSession();\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n });\n }\n sendRequest(request, onRequestSent) {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n if (!this.gateway || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n const id = (yield this.connectionStorage.getNextRpcRequestId()).toString();\n yield this.connectionStorage.increaseNextRpcRequestId();\n logDebug('Send http-bridge request:', Object.assign(Object.assign({}, request), { id }));\n const encodedRequest = this.session.sessionCrypto.encrypt(JSON.stringify(Object.assign(Object.assign({}, request), { id })), hexToByteArray(this.session.walletPublicKey));\n this.gateway\n .send(encodedRequest, this.session.walletPublicKey, request.method)\n .catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n onRequestSent === null || onRequestSent === void 0 ? void 0 : onRequestSent();\n }));\n }\n closeConnection() {\n this.closeGateways();\n this.listeners = [];\n this.session = null;\n this.gateway = null;\n }\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let called = false;\n const onRequestSent = () => {\n called = true;\n this.removeBridgeAndSession().then(resolve);\n };\n try {\n yield this.sendRequest({ method: 'disconnect', params: [] }, onRequestSent);\n }\n catch (e) {\n console.debug(e);\n if (!called) {\n this.removeBridgeAndSession().then(resolve);\n }\n }\n }));\n });\n }\n listen(callback) {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n pause() {\n var _a;\n (_a = this.gateway) === null || _a === void 0 ? void 0 : _a.pause();\n this.pendingGateways.forEach(bridge => bridge.pause());\n }\n unPause() {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = this.pendingGateways.map(bridge => bridge.unPause());\n if (this.gateway) {\n promises.push(this.gateway.unPause());\n }\n yield Promise.all(promises);\n });\n }\n pendingGatewaysListener(gateway, bridgeUrl, bridgeIncomingMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.pendingGateways.includes(gateway)) {\n gateway.close();\n return;\n }\n this.closeGateways({ except: gateway });\n this.session.bridgeUrl = bridgeUrl;\n this.gateway = gateway;\n this.gateway.setErrorsListener(this.gatewayErrorsListener.bind(this));\n this.gateway.setListener(this.gatewayListener.bind(this));\n return this.gatewayListener(bridgeIncomingMessage);\n });\n }\n gatewayListener(bridgeIncomingMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n const walletMessage = JSON.parse(this.session.sessionCrypto.decrypt(Base64.decode(bridgeIncomingMessage.message).toUint8Array(), hexToByteArray(bridgeIncomingMessage.from)));\n logDebug('Wallet message received:', walletMessage);\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n logDebug(`Response id ${id} doesn't match any request's id`);\n return;\n }\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n if (walletMessage.id !== undefined) {\n const lastId = yield this.connectionStorage.getLastWalletEventId();\n if (lastId !== undefined && walletMessage.id <= lastId) {\n logError(`Received event id (=${walletMessage.id}) must be greater than stored last wallet event id (=${lastId}) `);\n return;\n }\n if (walletMessage.event !== 'connect') {\n yield this.connectionStorage.storeLastWalletEventId(walletMessage.id);\n }\n }\n // `this.listeners` might be modified in the event handler\n const listeners = this.listeners;\n if (walletMessage.event === 'connect') {\n yield this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n if (walletMessage.event === 'disconnect') {\n yield this.removeBridgeAndSession();\n }\n listeners.forEach(listener => listener(walletMessage));\n });\n }\n gatewayErrorsListener(e) {\n return __awaiter(this, void 0, void 0, function* () {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n });\n }\n updateSession(connectEvent, walletPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n this.session = Object.assign(Object.assign({}, this.session), { walletPublicKey });\n const tonAddrItem = connectEvent.payload.items.find(item => item.name === 'ton_addr');\n const connectEventToSave = Object.assign(Object.assign({}, connectEvent), { payload: Object.assign(Object.assign({}, connectEvent.payload), { items: [tonAddrItem] }) });\n yield this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n lastWalletEventId: connectEvent.id,\n connectEvent: connectEventToSave,\n nextRpcRequestId: 0\n });\n });\n }\n removeBridgeAndSession() {\n return __awaiter(this, void 0, void 0, function* () {\n this.closeConnection();\n yield this.connectionStorage.removeConnection();\n });\n }\n generateUniversalLink(universalLink, message) {\n const url = new URL(universalLink);\n url.searchParams.append('v', PROTOCOL_VERSION.toString());\n url.searchParams.append('id', this.session.sessionCrypto.sessionId);\n url.searchParams.append('r', JSON.stringify(message));\n return url.toString();\n }\n closeGateways(options) {\n var _a;\n (_a = this.gateway) === null || _a === void 0 ? void 0 : _a.close();\n this.pendingGateways\n .filter(item => item !== (options === null || options === void 0 ? void 0 : options.except))\n .forEach(bridge => bridge.close());\n this.pendingGateways = [];\n }\n}\n\nfunction hasProperty(value, propertyKey) {\n return hasProperties(value, [propertyKey]);\n}\nfunction hasProperties(value, propertyKeys) {\n if (!value || typeof value !== 'object') {\n return false;\n }\n return propertyKeys.every(propertyKey => propertyKey in value);\n}\n\nfunction isJSBridgeWithMetadata(value) {\n try {\n if (!hasProperty(value, 'tonconnect') || !hasProperty(value.tonconnect, 'walletInfo')) {\n return false;\n }\n return hasProperties(value.tonconnect.walletInfo, ['name', 'image', 'about_url']);\n }\n catch (_a) {\n return false;\n }\n}\n\nfunction getWindow() {\n if (typeof window === 'undefined') {\n return undefined;\n }\n return window;\n}\nfunction getDocument() {\n if (typeof document === 'undefined') {\n return undefined;\n }\n return document;\n}\nfunction getWebPageManifest() {\n var _a;\n const origin = (_a = getWindow()) === null || _a === void 0 ? void 0 : _a.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n return '';\n}\n\nclass InjectedProvider {\n constructor(storage, injectedWalletKey) {\n this.injectedWalletKey = injectedWalletKey;\n this.type = 'injected';\n this.unsubscribeCallback = null;\n this.listenSubscriptions = false;\n this.listeners = [];\n const window = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n this.connectionStorage = new BridgeConnectionStorage(storage);\n this.injectedWallet = window[injectedWalletKey].tonconnect;\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(storage, connection.jsBridgeKey);\n });\n }\n static isWalletInjected(injectedWalletKey) {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n static isInsideWalletBrowser(injectedWalletKey) {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey].tonconnect.isWalletBrowser;\n }\n return false;\n }\n static getCurrentlyInjectedWallets() {\n if (!this.window) {\n return [];\n }\n const wallets = Object.entries(this.window).filter(([_, value]) => isJSBridgeWithMetadata(value));\n return wallets.map(([jsBridgeKey, wallet]) => ({\n name: wallet.tonconnect.walletInfo.name,\n aboutUrl: wallet.tonconnect.walletInfo.about_url,\n imageUrl: wallet.tonconnect.walletInfo.image,\n tondns: wallet.tonconnect.walletInfo.tondns,\n jsBridgeKey,\n injected: true,\n embedded: wallet.tonconnect.isWalletBrowser\n }));\n }\n static isWindowContainsWallet(window, injectedWalletKey) {\n return (!!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey] === 'object' &&\n 'tonconnect' in window[injectedWalletKey]);\n }\n connect(message) {\n this._connect(PROTOCOL_VERSION, message);\n }\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n logDebug(`Injected Provider restoring connection...`);\n const connectEvent = yield this.injectedWallet.restoreConnection();\n logDebug('Injected Provider restoring connection response', connectEvent);\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listeners.forEach(listener => listener(connectEvent));\n }\n else {\n yield this.connectionStorage.removeConnection();\n }\n }\n catch (e) {\n yield this.connectionStorage.removeConnection();\n console.error(e);\n }\n });\n }\n closeConnection() {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(resolve => {\n const onRequestSent = () => {\n this.closeAllListeners();\n this.connectionStorage.removeConnection().then(resolve);\n };\n try {\n this.injectedWallet.disconnect();\n onRequestSent();\n }\n catch (e) {\n logDebug(e);\n this.sendRequest({\n method: 'disconnect',\n params: []\n }, onRequestSent);\n }\n });\n });\n }\n closeAllListeners() {\n var _a;\n this.listenSubscriptions = false;\n this.listeners = [];\n (_a = this.unsubscribeCallback) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n listen(eventsCallback) {\n this.listeners.push(eventsCallback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n sendRequest(request, onRequestSent) {\n return __awaiter(this, void 0, void 0, function* () {\n const id = (yield this.connectionStorage.getNextRpcRequestId()).toString();\n yield this.connectionStorage.increaseNextRpcRequestId();\n logDebug('Send injected-bridge request:', Object.assign(Object.assign({}, request), { id }));\n const result = this.injectedWallet.send(Object.assign(Object.assign({}, request), { id }));\n result.then(response => logDebug('Wallet message received:', response));\n onRequestSent === null || onRequestSent === void 0 ? void 0 : onRequestSent();\n return result;\n });\n }\n _connect(protocolVersion, message) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n logDebug(`Injected Provider connect request: protocolVersion: ${protocolVersion}, message:`, message);\n const connectEvent = yield this.injectedWallet.connect(protocolVersion, message);\n logDebug('Injected Provider connect response:', connectEvent);\n if (connectEvent.event === 'connect') {\n yield this.updateSession();\n this.makeSubscriptions();\n }\n this.listeners.forEach(listener => listener(connectEvent));\n }\n catch (e) {\n logDebug(e);\n const connectEventError = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e === null || e === void 0 ? void 0 : e.toString()\n }\n };\n this.listeners.forEach(listener => listener(connectEventError));\n }\n });\n }\n makeSubscriptions() {\n this.listenSubscriptions = true;\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n logDebug('Wallet message received:', e);\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n updateSession() {\n return this.connectionStorage.storeConnection({\n type: 'injected',\n jsBridgeKey: this.injectedWalletKey,\n nextRpcRequestId: 0\n });\n }\n}\nInjectedProvider.window = getWindow();\n\nclass DefaultStorage {\n constructor() {\n const window = getWindow();\n if (!(window === null || window === void 0 ? void 0 : window.localStorage)) {\n throw new LocalstorageNotFoundError();\n }\n this.window = window;\n }\n getItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(this.window.localStorage.getItem(key));\n });\n }\n removeItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n });\n }\n setItem(key, value) {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n\n/**\n * Checks if `WalletInfo` is `WalletInfoInjectable` and `WalletInfo` is injected to the current webpage (`walletInfo.injected === true`).\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoCurrentlyInjected(value) {\n return isWalletInfoInjectable(value) && value.injected;\n}\n/**\n * Checks if `WalletInfo` is `WalletInfoInjectable` and dApp is opened inside this wallet's browser.\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoCurrentlyEmbedded(value) {\n return isWalletInfoCurrentlyInjected(value) && value.embedded;\n}\n/**\n * Checks if `WalletInfo` is `WalletInfoInjected`, but doesn't check if it is injected to the page or not.\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoInjectable(value) {\n return 'jsBridgeKey' in value;\n}\n/**\n * Checks if `WalletInfo` is `WalletInfoRemote`.\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoRemote(value) {\n return 'bridgeUrl' in value;\n}\n/**\n * @deprecated use `isWalletInfoInjectable` or `isWalletInfoCurrentlyInjected` instead.\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoInjected(value) {\n return 'jsBridgeKey' in value;\n}\n\nclass WalletsListManager {\n constructor(walletsListSource) {\n this.walletsListCache = null;\n this.walletsListSource = 'https://raw.githubusercontent.com/ton-blockchain/wallets-list/main/wallets.json';\n if (walletsListSource) {\n this.walletsListSource = walletsListSource;\n }\n }\n getWallets() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n return this.walletsListCache;\n });\n }\n getEmbeddedWallet() {\n return __awaiter(this, void 0, void 0, function* () {\n const walletsList = yield this.getWallets();\n const embeddedWallets = walletsList.filter(isWalletInfoCurrentlyEmbedded);\n if (embeddedWallets.length !== 1) {\n return null;\n }\n return embeddedWallets[0];\n });\n }\n fetchWalletsList() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const walletsResponse = yield fetch(this.walletsListSource);\n const walletsList = yield walletsResponse.json();\n if (!Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n const currentlyInjectedWallets = InjectedProvider.getCurrentlyInjectedWallets();\n return this.mergeWalletsLists(this.walletConfigDTOListToWalletConfigList(walletsList), currentlyInjectedWallets);\n }\n catch (e) {\n throw new FetchWalletsError(e);\n }\n });\n }\n walletConfigDTOListToWalletConfigList(walletConfigDTO) {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n };\n walletConfigDTO.bridge.forEach(bridge => {\n if (bridge.type === 'sse') {\n walletConfig.bridgeUrl = bridge.url;\n walletConfig.universalLink =\n walletConfigDTO.universal_url;\n walletConfig.deepLink = walletConfigDTO.deepLink;\n }\n if (bridge.type === 'js') {\n const jsBridgeKey = bridge.key;\n walletConfig.jsBridgeKey = jsBridgeKey;\n walletConfig.injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n walletConfig.embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n });\n return walletConfig;\n });\n }\n mergeWalletsLists(list1, list2) {\n const names = new Set(list1.concat(list2).map(item => item.name));\n return [...names.values()].map(name => {\n const list1Item = list1.find(item => item.name === name);\n const list2Item = list2.find(item => item.name === name);\n return Object.assign(Object.assign({}, (list1Item && Object.assign({}, list1Item))), (list2Item && Object.assign({}, list2Item)));\n });\n }\n isCorrectWalletConfigDTO(value) {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n if (!('bridge' in value) ||\n !Array.isArray(value.bridge) ||\n !value.bridge.length) {\n return false;\n }\n const bridge = value.bridge;\n if (bridge.some(item => !item || typeof item !== 'object' || !('type' in item))) {\n return false;\n }\n const sseBridge = bridge.find(item => item.type === 'sse');\n if (sseBridge) {\n if (!('url' in sseBridge) ||\n !sseBridge.url ||\n !value.universal_url) {\n return false;\n }\n }\n const jsBridge = bridge.find(item => item.type === 'js');\n if (jsBridge) {\n if (!('key' in jsBridge) || !jsBridge.key) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nclass WalletNotSupportFeatureError extends TonConnectError {\n get info() {\n return \"Wallet doesn't support requested feature method.\";\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n\nfunction checkSendTransactionSupport(features, options) {\n const supportsDeprecatedSendTransactionFeature = features.includes('SendTransaction');\n const sendTransactionFeature = features.find(feature => feature && typeof feature === 'object' && feature.name === 'SendTransaction');\n if (!supportsDeprecatedSendTransactionFeature && !sendTransactionFeature) {\n throw new WalletNotSupportFeatureError(\"Wallet doesn't support SendTransaction feature.\");\n }\n if (sendTransactionFeature && sendTransactionFeature.maxMessages !== undefined) {\n if (sendTransactionFeature.maxMessages < options.requiredMessagesNumber) {\n throw new WalletNotSupportFeatureError(`Wallet is not able to handle such SendTransaction request. Max support messages number is ${sendTransactionFeature.maxMessages}, but ${options.requiredMessagesNumber} is required.`);\n }\n return;\n }\n logWarning(\"Connected wallet didn't provide information about max allowed messages in the SendTransaction request. Request may be rejected by the wallet.\");\n}\n\nclass TonConnect {\n constructor(options) {\n this.walletsList = new WalletsListManager();\n this._wallet = null;\n this.provider = null;\n this.statusChangeSubscriptions = [];\n this.statusChangeErrorSubscriptions = [];\n this.dappSettings = {\n manifestUrl: (options === null || options === void 0 ? void 0 : options.manifestUrl) || getWebPageManifest(),\n storage: (options === null || options === void 0 ? void 0 : options.storage) || new DefaultStorage()\n };\n this.walletsList = new WalletsListManager(options === null || options === void 0 ? void 0 : options.walletsListSource);\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError('Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest');\n }\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n if (!(options === null || options === void 0 ? void 0 : options.disableAutoPauseConnection)) {\n this.addWindowFocusAndBlurSubscriptions();\n }\n }\n /**\n * Returns available wallets list.\n */\n static getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Shows if the wallet is connected right now.\n */\n get connected() {\n return this._wallet !== null;\n }\n /**\n * Current connected account or null if no account is connected.\n */\n get account() {\n var _a;\n return ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.account) || null;\n }\n /**\n * Current connected wallet or null if no account is connected.\n */\n get wallet() {\n return this._wallet;\n }\n set wallet(value) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n /**\n * Returns available wallets list.\n */\n getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n onStatusChange(callback, errorsHandler) {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(item => item !== callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(item => item !== errorsHandler);\n }\n };\n }\n connect(wallet, request) {\n var _a;\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n (_a = this.provider) === null || _a === void 0 ? void 0 : _a.closeConnection();\n this.provider = this.createProvider(wallet);\n return this.provider.connect(this.createConnectRequest(request));\n }\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const [bridgeConnectionType, embeddedWallet] = yield Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n try {\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = yield BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = yield InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = yield this.createProvider(embeddedWallet);\n }\n else {\n return;\n }\n }\n }\n catch (_a) {\n yield this.bridgeConnectionStorage.removeConnection();\n this.provider = null;\n return;\n }\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n });\n }\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n sendTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n this.checkConnection();\n checkSendTransactionSupport(this.wallet.device.features, {\n requiredMessagesNumber: transaction.messages.length\n });\n const { validUntil } = transaction, tx = __rest(transaction, [\"validUntil\"]);\n const from = transaction.from || this.account.address;\n const network = transaction.network || this.account.chain;\n const response = yield this.provider.sendRequest(sendTransactionParser.convertToRpcRequest(Object.assign(Object.assign({}, tx), { valid_until: validUntil, from,\n network })));\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n return sendTransactionParser.convertFromRpcResponse(response);\n });\n }\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n yield this.provider.disconnect();\n this.onWalletDisconnected();\n });\n }\n /**\n * Pause bridge HTTP connection. Might be helpful, if you want to pause connections while browser tab is unfocused,\n * or if you use SDK with NodeJS and want to save server resources.\n */\n pauseConnection() {\n var _a;\n if (((_a = this.provider) === null || _a === void 0 ? void 0 : _a.type) !== 'http') {\n return;\n }\n this.provider.pause();\n }\n /**\n * Unpause bridge HTTP connection if it is paused.\n */\n unPauseConnection() {\n var _a;\n if (((_a = this.provider) === null || _a === void 0 ? void 0 : _a.type) !== 'http') {\n return Promise.resolve();\n }\n return this.provider.unPause();\n }\n addWindowFocusAndBlurSubscriptions() {\n const document = getDocument();\n if (!document) {\n return;\n }\n try {\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n this.pauseConnection();\n }\n else {\n this.unPauseConnection();\n }\n });\n }\n catch (e) {\n console.error('Cannot subscribe to the document.visibilitychange: ', e);\n }\n }\n createProvider(wallet) {\n let provider;\n if (!Array.isArray(wallet) && isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(this.dappSettings.storage, wallet.jsBridgeKey);\n }\n else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n walletEventsListener(e) {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n onWalletConnected(connectEvent) {\n const tonAccountItem = connectEvent.items.find(item => item.name === 'ton_addr');\n const tonProofItem = connectEvent.items.find(item => item.name === 'ton_proof');\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n const wallet = {\n device: connectEvent.device,\n provider: this.provider.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network,\n walletStateInit: tonAccountItem.walletStateInit,\n publicKey: tonAccountItem.publicKey\n }\n };\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n this.wallet = wallet;\n }\n onWalletConnectError(connectEventError) {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n console.debug(error);\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n onWalletDisconnected() {\n this.wallet = null;\n }\n checkConnection() {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n createConnectRequest(request) {\n const items = [\n {\n name: 'ton_addr'\n }\n ];\n if (request === null || request === void 0 ? void 0 : request.tonProof) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\nTonConnect.walletsList = new WalletsListManager();\n/**\n * Check if specified wallet is injected and available to use with the app.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isWalletInjected = (walletJSKey) => InjectedProvider.isWalletInjected(walletJSKey);\n/**\n * Check if the app is opened inside specified wallet's browser.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isInsideWalletBrowser = (walletJSKey) => InjectedProvider.isInsideWalletBrowser(walletJSKey);\n\nconst bounceableTag = 0x11;\nconst testOnlyTag = 0x80;\n/**\n * Converts raw TON address to bounceable user-friendly format. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n * @param hexAddress raw TON address formatted as \"0:<hex string without 0x>\".\n * @param [testOnly=false] convert address to test-only form. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n */\nfunction toUserFriendlyAddress(hexAddress, testOnly = false) {\n const { wc, hex } = parseHexAddress(hexAddress);\n let tag = bounceableTag;\n if (testOnly) {\n tag |= testOnlyTag;\n }\n const addr = new Int8Array(34);\n addr[0] = tag;\n addr[1] = wc;\n addr.set(hex, 2);\n const addressWithChecksum = new Uint8Array(36);\n addressWithChecksum.set(addr);\n addressWithChecksum.set(crc16(addr), 34);\n let addressBase64 = Base64.encode(addressWithChecksum);\n return addressBase64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction parseHexAddress(hexAddress) {\n if (!hexAddress.includes(':')) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\".`);\n }\n const parts = hexAddress.split(':');\n if (parts.length !== 2) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\" only once.`);\n }\n const wc = parseInt(parts[0]);\n if (wc !== 0 && wc !== -1) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. WC must be eq 0 or -1, but ${wc} received.`);\n }\n const hex = parts[1];\n if ((hex === null || hex === void 0 ? void 0 : hex.length) !== 64) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Hex part must be 64bytes length, but ${hex === null || hex === void 0 ? void 0 : hex.length} received.`);\n }\n return {\n wc,\n hex: hexToBytes(hex)\n };\n}\nfunction crc16(data) {\n const poly = 0x1021;\n let reg = 0;\n const message = new Uint8Array(data.length + 2);\n message.set(data);\n for (let byte of message) {\n let mask = 0x80;\n while (mask > 0) {\n reg <<= 1;\n if (byte & mask) {\n reg += 1;\n }\n mask >>= 1;\n if (reg > 0xffff) {\n reg &= 0xffff;\n reg ^= poly;\n }\n }\n }\n return new Uint8Array([Math.floor(reg / 256), reg % 256]);\n}\nconst toByteMap = {};\nfor (let ord = 0; ord <= 0xff; ord++) {\n let s = ord.toString(16);\n if (s.length < 2) {\n s = '0' + s;\n }\n toByteMap[s] = ord;\n}\nfunction hexToBytes(hex) {\n hex = hex.toLowerCase();\n const length2 = hex.length;\n if (length2 % 2 !== 0) {\n throw new ParseHexError('Hex string must have length a multiple of 2: ' + hex);\n }\n const length = length2 / 2;\n const result = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const doubled = i * 2;\n const hexSubstring = hex.substring(doubled, doubled + 2);\n if (!toByteMap.hasOwnProperty(hexSubstring)) {\n throw new ParseHexError('Invalid hex character: ' + hexSubstring);\n }\n result[i] = toByteMap[hexSubstring];\n }\n return result;\n}\n\nexport { BadRequestError, FetchWalletsError, LocalstorageNotFoundError, ParseHexError, TonConnect, TonConnectError, UnknownAppError, UnknownError, UserRejectsError, WalletAlreadyConnectedError, WalletNotConnectedError, WalletNotInjectedError, WrongAddressError, TonConnect as default, isWalletInfoCurrentlyEmbedded, isWalletInfoCurrentlyInjected, isWalletInfoInjectable, isWalletInfoInjected, isWalletInfoRemote, toUserFriendlyAddress };\n//# sourceMappingURL=index.mjs.map\n","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: null,\n owner: detachedOwner === undefined ? owner : detachedOwner\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n resolved = true;\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : \"ready\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && lookup(Owner, SuspenseContext.id),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (typeof p !== \"object\" || !(p && \"then\" in p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(node.value, options);\n updateComputation(node);\n setDeferred(() => node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext({}));\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (!runningTransition && this.state || runningTransition && this.tState)) {\n if (!runningTransition && this.state === STALE || runningTransition && this.tState === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning && !o.tState || !TransitionRunning && !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (TransitionRunning) o.tState = STALE;else o.state = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if (!runningTransition && node.state === 0 || runningTransition && node.tState === 0) return;\n if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (!runningTransition && node.state || runningTransition && node.tState) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if (!runningTransition && node.state === STALE || runningTransition && node.tState === STALE) {\n updateComputation(node);\n } else if (!runningTransition && node.state === PENDING || runningTransition && node.tState === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) setHydrateContext();\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n if (!runningTransition && source.state === STALE || runningTransition && source.tState === STALE) {\n if (source !== ignore) runTop(source);\n } else if (!runningTransition && source.state === PENDING || runningTransition && source.tState === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (!runningTransition && !o.state || runningTransition && !o.tState) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = 0; i < node.tOwned.length; i++) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = 0; i < node.owned.length; i++) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = 0; i < node.cleanups.length; i++) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n node.context = null;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error || typeof err === \"string\") return err;\n return new Error(\"Unknown error\");\n}\nfunction runErrors(fns, err) {\n for (const f of fns) f(err);\n}\nfunction handleError(err) {\n err = castError(err);\n const fns = ERROR && lookup(Owner, ERROR);\n if (!fns) throw err;\n if (Effects) Effects.push({\n fn() {\n runErrors(fns, err);\n },\n state: STALE\n });else runErrors(fns, err);\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const target = {};\n for (let i = sources.length - 1; i >= 0; i--) {\n if (sources[i]) {\n const descriptors = Object.getOwnPropertyDescriptors(sources[i]);\n for (const key in descriptors) {\n if (key in target) continue;\n Object.defineProperty(target, key, {\n enumerable: true,\n get() {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = (sources[i] || {})[key];\n if (v !== undefined) return v;\n }\n }\n });\n }\n }\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n const blocked = new Set(keys.flat());\n if ($PROXY in props) {\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const descriptors = Object.getOwnPropertyDescriptors(props);\n keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));\n return keys.map(k => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (!(key in props)) continue;\n Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {\n get() {\n return props[key];\n },\n set() {\n return true;\n },\n enumerable: true\n });\n }\n return clone;\n });\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (false) ;\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n let strictEqual = false;\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => strictEqual ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => child(c)) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n let strictEqual = false;\n let keyed = false;\n const equals = (a, b) => a[0] === b[0] && (strictEqual ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n }, undefined, {\n equals\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n strictEqual = keyed || fn;\n return fn ? untrack(() => c(when)) : c;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n let v;\n if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n const res = typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n onError(setErrored);\n return res;\n }\n onError(setErrored);\n return props.children;\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref && (p = ref[0]) && p !== \"$$f\") {\n if (typeof p !== \"object\" || !(\"then\" in p)) p = Promise.resolve(p);\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(err => {\n if (err || sharedConfig.done) {\n err && (error = err);\n return set();\n }\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nlet DEV;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createRoot, createRenderEffect, sharedConfig, untrack, enableHydration, createSignal, onCleanup, splitProps, createMemo } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: \"formNoValidate\",\n ismap: \"isMap\",\n nomodule: \"noModule\",\n playsinline: \"playsInline\",\n readonly: \"readOnly\"\n});\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, check, isSVG) {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n let node = t.content.firstChild;\n if (isSVG) node = node.firstChild;\n return node;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = globalThis._$HY.load;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template.cloneNode(true);\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"#\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) {\n sharedConfig.done = true;\n document.querySelectorAll(\"[id^=pl-]\").forEach(elem => {\n while (elem && elem.nodeType !== 8 && elem.nodeValue !== \"pl-\" + e) {\n let x = elem.nextSibling;\n elem.remove();\n elem = x;\n }\n elem && elem.remove();\n });\n }\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context && !current) current = [...parent.childNodes];\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n if (!array.length) return current;\n for (let i = 0; i < array.length; i++) {\n if (array[i].parentNode) return current = array;\n }\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value instanceof Node) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[i];\n if (item instanceof Node) {\n normalized.push(item);\n } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if ((typeof item) === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) {\n normalized.push(prev);\n } else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nfunction voidFn() {}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = props.mount || document.body;\n function renderPortal() {\n if (sharedConfig.context) {\n const [s, set] = createSignal(false);\n queueMicrotask(() => set(true));\n return () => s() && props.children;\n } else return () => props.children;\n }\n if (mount instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(mount, () => !clean() ? renderPortal()() : dispose(), null));\n onCleanup(() => {\n if (sharedConfig.context) queueMicrotask(cleanup);else cleanup();\n });\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, renderPortal());\n mount.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => mount.removeChild(container));\n }\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","import { createSignal } from 'solid-js';\nimport { WalletInfoWithOpenMethod, WalletOpenMethod } from 'src/models/connected-wallet';\n\nexport type ActionName = 'confirm-transaction' | 'transaction-sent' | 'transaction-canceled';\n\nexport type Action = {\n name: ActionName;\n openModal: boolean;\n showNotification: boolean;\n};\n\nexport const [walletsModalOpen, setWalletsModalOpen] = createSignal(false);\nexport const [lastSelectedWalletInfo, setLastSelectedWalletInfo] = createSignal<\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null\n>(null);\nexport const [action, setAction] = createSignal<Action | null>(null);\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","import { css, setup as gooberSetup } from \"goober\";\r\nimport {\r\n mergeProps,\r\n splitProps,\r\n createContext,\r\n useContext,\r\n createComponent,\r\n untrack,\r\n} from \"solid-js\";\r\nimport { Dynamic, isServer, spread } from \"solid-js/web\";\r\nexport { css, glob, extractCss, keyframes } from \"goober\";\r\n\r\nlet getForwardProps = null;\r\n\r\nexport function shouldForwardProp(predicate) {\r\n return props => props.filter(predicate);\r\n}\r\n\r\nexport function setup(prefixer, shouldForwardProp = null) {\r\n gooberSetup(null, prefixer);\r\n getForwardProps = shouldForwardProp;\r\n}\r\nconst ThemeContext = createContext();\r\nexport function ThemeProvider(props) {\r\n return createComponent(ThemeContext.Provider, {\r\n value: props.theme,\r\n get children() {\r\n return props.children;\r\n }\r\n });\r\n}\r\nexport function useTheme() {\r\n return useContext(ThemeContext);\r\n}\r\n\r\nfunction makeStyled(tag) {\r\n let _ctx = this || {};\r\n return (...args) => {\r\n const Styled = props => {\r\n const theme = useContext(ThemeContext);\r\n const withTheme = mergeProps(props, { theme });\r\n const clone = mergeProps(withTheme, {\r\n get class() {\r\n const pClass = withTheme.class,\r\n append = \"class\" in withTheme && /^go[0-9]+/.test(pClass);\r\n // Call `css` with the append flag and pass the props\r\n let className = css.apply(\r\n { target: _ctx.target, o: append, p: withTheme, g: _ctx.g },\r\n args\r\n );\r\n return [pClass, className].filter(Boolean).join(\" \");\r\n }\r\n });\r\n const [local, newProps] = splitProps(clone, [\"as\", \"theme\"]);\r\n const htmlProps = getForwardProps\r\n ? splitProps(newProps, getForwardProps(Object.keys(newProps)))[0]\r\n : newProps;\r\n const createTag = local.as || tag;\r\n let el;\r\n\r\n if (typeof createTag === \"function\") {\r\n el = createTag(htmlProps);\r\n } else {\r\n if (isServer) {\r\n const [local, others] = splitProps(htmlProps, [\"children\", \"theme\"]);\r\n el = Dynamic({\r\n component: createTag,\r\n get children() {\r\n return local.children;\r\n },\r\n ...others\r\n });\r\n } else {\r\n if (_ctx.g == 1) {\r\n // When using Global Styles we don't want to hydrate the unused nodes\r\n el = document.createElement(createTag);\r\n spread(el, htmlProps);\r\n } else {\r\n el = Dynamic(mergeProps({ component: createTag }, htmlProps));\r\n }\r\n }\r\n }\r\n return el;\r\n };\r\n Styled.class = props => {\r\n return untrack(() => {\r\n return css.apply({ target: _ctx.target, p: props, g: _ctx.g }, args);\r\n });\r\n };\r\n\r\n return Styled;\r\n };\r\n}\r\n\r\nexport const styled = new Proxy(makeStyled, {\r\n get(target, tag) {\r\n return target(tag);\r\n }\r\n});\r\n\r\nexport function createGlobalStyles() {\r\n const fn = makeStyled.call({ g: 1 }, \"div\").apply(null, arguments);\r\n\r\n return function GlobalStyles(props) {\r\n fn(props);\r\n return null;\r\n };\r\n}\r\n","import en from 'src/app/assets/i18n/en.json';\nimport ru from 'src/app/assets/i18n/ru.json';\nimport { Locales } from 'src/models/locales';\n\nexport const i18nDictionary: Record<Locales, object> = {\n en: parseDictionary(en),\n ru: parseDictionary(ru)\n};\n\n// replace '$key1.key2.key3' with it's value\nfunction parseDictionary(dictionary: Record<string, unknown>): Record<string, unknown> {\n const refSymbol = '$';\n\n const iterate = (subDictionary: Record<string, unknown>): void => {\n Object.entries(subDictionary).forEach(([key, value]) => {\n if (typeof value === 'object' && value) {\n return iterate(value as Record<string, unknown>);\n }\n\n if (typeof value === 'string') {\n if (value[0] === refSymbol) {\n const path = value.slice(1).split('.');\n let obj: Record<string, unknown> = dictionary;\n path.forEach(item => {\n if (item in obj) {\n obj = obj[item] as Record<string, unknown>;\n } else {\n throw new Error(\n `Cannot parse translations: there is no property ${item} in translation`\n );\n }\n });\n\n subDictionary[key] = obj;\n }\n\n if (value.slice(0, 2) === `\\\\${refSymbol}`) {\n subDictionary[key] = value.slice(1);\n }\n }\n });\n };\n\n iterate(dictionary);\n return dictionary;\n}\n","import { ITonConnect } from '@tonconnect/sdk';\nimport { createContext } from 'solid-js';\n\nexport const ConnectorContext = createContext<ITonConnect>();\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $NAME = Symbol(\"store-name\");\nfunction wrap$1(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps$1)\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return obj != null && typeof obj === \"object\" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if (result = item != null && item[$RAW]) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getDataNodes(target) {\n let nodes = target[$NODE];\n if (!nodes) Object.defineProperty(target, $NODE, {\n value: nodes = {}\n });\n return nodes;\n}\nfunction getDataNode(nodes, property, value) {\n return nodes[property] || (nodes[property] = createDataNode(value));\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n if (getListener()) {\n const nodes = getDataNodes(target);\n (nodes._ || (nodes._ = createDataNode()))();\n }\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nfunction createDataNode(value) {\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return s;\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (getListener() && (typeof value !== \"function\" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) delete state[property];else state[property] = value;\n let nodes = getDataNodes(state),\n node;\n if (node = getDataNode(nodes, property, prev)) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) (node = getDataNode(nodes, \"length\", len)) && node.$(state.length);\n (node = nodes._) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const {\n from = 0,\n to = current.length - 1,\n by = 1\n } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => target[$PROXY][property] = v;\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes.hasOwnProperty(property);\n let value = tracked ? nodes[property]() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value, name) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n if (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key]) {\n if (target !== previous) {\n if (property === $ROOT) return target;\n setProperty(parent, property, target);\n }\n return;\n }\n if (Array.isArray(target)) {\n if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const {\n merge,\n key = \"id\"\n } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(v, {\n [$ROOT]: state\n }, $ROOT, merge, key);\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, proxy = new Proxy(state, setterTraps));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","export enum THEME {\n DARK = 'DARK',\n LIGHT = 'LIGHT'\n}\n\nexport type Theme = THEME | 'SYSTEM';\n","import { ColorsSet } from 'src/models/colors-set';\n\nexport const defaultLightColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#31A6F5',\n foreground: '#FFFFFF'\n },\n accent: '#31A6F5',\n icon: {\n primary: '#0F0F0F',\n secondary: '#7A8999',\n tertiary: '#C1CAD2',\n success: '#29CC6A',\n error: '#F5A73B'\n },\n background: {\n primary: '#FFFFFF',\n secondary: '#F1F3F5',\n segment: '#FFFFFF'\n },\n text: {\n primary: '#0F0F0F',\n secondary: '#6A7785'\n }\n};\n\nexport const defaultDarkColorsSet: ColorsSet = {\n constant: {\n black: '#000000',\n white: '#FFFFFF'\n },\n connectButton: {\n background: '#31A6F5',\n foreground: '#FFFFFF'\n },\n accent: '#E5E5EA',\n icon: {\n primary: '#E5E5EA',\n secondary: '#909099',\n tertiary: '#434347',\n success: '#29CC6A',\n error: '#F5A73B'\n },\n background: {\n primary: '#121214',\n secondary: '#18181A',\n segment: '#262629'\n },\n text: {\n primary: '#E5E5EA',\n secondary: '#7D7D85'\n }\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import deepmerge from 'deepmerge';\nimport { DeepPartial } from 'src/app/utils/types';\nimport { isPlainObject } from 'is-plain-object';\n\nexport function mergeOptions<T>(options: DeepPartial<T> | undefined | null, defaultOptions: T): T {\n if (!options) {\n return defaultOptions;\n }\n\n const overwriteMerge = (_: unknown[], sourceArray: unknown[], __: unknown): unknown[] =>\n sourceArray;\n\n return deepmerge(defaultOptions, options, {\n arrayMerge: overwriteMerge,\n isMergeableObject: isPlainObject\n });\n}\n","import { createStore } from 'solid-js/store';\nimport { DefaultTheme } from 'solid-styled-components';\nimport { THEME } from 'src/models/THEME';\nimport { defaultDarkColorsSet, defaultLightColorsSet } from 'src/app/styles/default-colors';\nimport { BorderRadius, PartialColorsSet } from 'src/models';\nimport { mergeOptions } from 'src/app/utils/options';\n\nexport const [themeState, setThemeState] = createStore<DefaultTheme>({\n theme: THEME.LIGHT,\n colors: defaultLightColorsSet,\n borderRadius: 'm'\n});\n\nconst themeColorsMappingDefault = {\n [THEME.LIGHT]: defaultLightColorsSet,\n [THEME.DARK]: defaultDarkColorsSet\n};\n\nconst themeCustomColors: Record<THEME, PartialColorsSet | undefined> = {\n [THEME.LIGHT]: undefined,\n [THEME.DARK]: undefined\n};\n\nexport function setTheme(theme: THEME, colorsSet?: Partial<Record<THEME, PartialColorsSet>>): void {\n if (colorsSet) {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n }\n\n setThemeState({\n theme,\n colors: mergeOptions(themeCustomColors[theme], themeColorsMappingDefault[theme])\n });\n}\n\nexport function setBorderRadius(borderRadius: BorderRadius): void {\n setThemeState({ borderRadius });\n}\n\nexport function setColors(colorsSet: Partial<Record<THEME, PartialColorsSet>>): void {\n themeCustomColors[THEME.DARK] = mergeOptions(\n colorsSet[THEME.DARK],\n themeCustomColors[THEME.DARK]\n );\n themeCustomColors[THEME.LIGHT] = mergeOptions(\n colorsSet[THEME.LIGHT],\n themeCustomColors[THEME.LIGHT]\n );\n\n setThemeState(state => ({\n colors: mergeOptions(\n themeCustomColors[state.theme as THEME],\n themeColorsMappingDefault[state.theme as THEME]\n )\n }));\n}\n","import { JSXElement } from 'solid-js';\nimport { createGlobalStyles } from 'solid-styled-components';\n\nexport const globalStylesTag = 'tc-root';\nexport const disableScrollClass = 'tc-disable-scroll';\nexport const usingMouseClass = 'tc-using-mouse';\n\nexport const GlobalStyles = (): JSXElement => {\n document.body.addEventListener('mousedown', () => document.body.classList.add(usingMouseClass));\n\n document.body.addEventListener('keydown', event => {\n if (event.key === 'Tab') {\n document.body.classList.remove(usingMouseClass);\n }\n });\n\n const Styles = createGlobalStyles`\n ${globalStylesTag} * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n \n font-family: -apple-system, BlinkMacSystemFont, 'Roboto', 'Helvetica Neue', Arial, Tahoma, Verdana, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale; \n -webkit-tap-highlight-color: transparent;\n }\n \n ${globalStylesTag} img {\n -webkit-user-select: none;\n -webkit-touch-callout: none;\n } \n \n ${globalStylesTag} *:focus {\n outline: #08f auto 2px;\n }\n \n ${globalStylesTag} li {\n list-style: none;\n }\n \n ${globalStylesTag} button {\n outline: none;\n }\n \n body.${disableScrollClass} {\n position: fixed; \n overflow-y: scroll;\n right: 0;\n left: 0;\n }\n \n body.${usingMouseClass} ${globalStylesTag} *:focus {\n outline: none;\n }\n`;\n return <Styles />;\n};\n","import { styled } from 'solid-styled-components';\n\nexport const ImagePlaceholder = styled.div`\n background-color: ${props => props.theme!.colors.background.secondary};\n`;\n","import { Component, createEffect, createSignal, Show } from 'solid-js';\nimport { ImagePlaceholder } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface ImageProps extends Styleable {\n src: string;\n alt?: string;\n}\n\nexport const Image: Component<ImageProps> = props => {\n let imgRef: HTMLImageElement | undefined;\n\n const [image, setImage] = createSignal<HTMLImageElement | null>(null);\n\n createEffect(() => {\n const img = new window.Image();\n img.src = props.src;\n img.alt = props.alt || '';\n img.setAttribute('draggable', 'false');\n if (props.class) {\n img.classList.add(props.class);\n }\n\n if (img.complete) {\n return setImage(img);\n }\n\n img.addEventListener('load', () => setImage(img));\n\n return () => img.removeEventListener('load', () => setImage(img));\n });\n\n return (\n <>\n <Show when={image()}>{image()}</Show>\n <Show when={!image()}>\n <ImagePlaceholder class={props.class} ref={imgRef} />\n </Show>\n </>\n );\n};\n","import { Property } from 'csstype';\ntype Color = Property.Color;\n\nexport function hexToRgb(hex: string): string {\n if (hex[0] === '#') {\n hex = hex.slice(1);\n }\n\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n\n return [r, g, b].join(',');\n}\n\nexport function rgba(color: Color, opacity: number): string {\n if (color[0] === '#') {\n color = hexToRgb(color);\n }\n\n return `rgba(${color}, ${opacity})`;\n}\n\nexport function toPx(value: number | string): string {\n return value.toString() + 'px';\n}\n","import { TonConnectError } from '@tonconnect/sdk';\n\nexport class TonConnectUIError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args);\n\n Object.setPrototypeOf(this, TonConnectUIError.prototype);\n }\n}\n","import { THEME } from 'src/models/THEME';\nimport { ReturnStrategy } from 'src/models/return-strategy';\nimport { disableScrollClass, globalStylesTag } from 'src/app/styles/global-styles';\nimport { toPx } from 'src/app/utils/css';\nimport { TonConnectUIError } from 'src/errors';\n\nexport function openLink(href: string, target = '_self'): ReturnType<typeof window.open> {\n return window.open(href, target, 'noreferrer noopener');\n}\n\nexport function openLinkBlank(href: string): void {\n openLink(href, '_blank');\n}\n\nexport function getSystemTheme(): THEME {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {\n return THEME.LIGHT;\n }\n\n return THEME.DARK;\n}\n\nexport function subscribeToThemeChange(callback: (theme: THEME) => void): () => void {\n const handler = (event: MediaQueryListEvent): void =>\n callback(event.matches ? THEME.DARK : THEME.LIGHT);\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', handler);\n return () =>\n window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', handler);\n}\n\nexport function addQueryParameter(url: string, key: string, value: string): string {\n const parsed = new URL(url);\n parsed.searchParams.append(key, value);\n return parsed.toString();\n}\n\nexport function addReturnStrategy(url: string, returnStrategy: ReturnStrategy): string {\n return addQueryParameter(url, 'ret', returnStrategy);\n}\n\nexport function disableScroll(): void {\n if (document.documentElement.scrollHeight === document.documentElement.clientHeight) {\n return;\n }\n\n document.body.style.top = toPx(-document.documentElement.scrollTop);\n document.body.classList.add(disableScrollClass);\n}\n\nexport function enableScroll(): void {\n document.body.classList.remove(disableScrollClass);\n document.documentElement.scrollTo({ top: -parseFloat(getComputedStyle(document.body).top) });\n document.body.style.top = 'auto';\n}\n\nexport function fixMobileSafariActiveTransition(): void {\n if (!document.body.hasAttribute('ontouchstart')) {\n document.body.setAttribute('ontouchstart', '');\n }\n}\n\nexport function defineStylesRoot(): void {\n customElements.define(globalStylesTag, class TcRootElement extends HTMLDivElement {}, {\n extends: 'div'\n });\n}\n\nexport function preloadImages(images: string[]): void {\n images.forEach(img => {\n const node = new window.Image();\n node.src = img;\n });\n}\n\nexport function checkLocalStorageExists(): never | void {\n if (typeof localStorage === 'undefined') {\n throw new TonConnectUIError(\n 'window.localStorage is undefined. localStorage is required for TonConnectUI'\n );\n }\n}\n\nexport function getWindow(): Window | undefined {\n if (typeof window !== 'undefined') {\n return window;\n }\n\n return undefined;\n}\n","import { getWindow } from 'src/app/utils/web-api';\n\nexport type Device = 'mobile' | 'tablet' | 'desktop';\n\nexport const maxWidth = {\n mobile: 440,\n tablet: 1020\n};\n\nexport function isDevice(device: keyof typeof maxWidth | 'desktop'): boolean {\n const window = getWindow();\n if (!window) {\n return device === 'desktop';\n }\n\n const width = window.innerWidth;\n\n switch (device) {\n case 'desktop':\n return width > maxWidth.tablet;\n case 'tablet':\n return width > maxWidth.mobile;\n default:\n case 'mobile':\n return width <= maxWidth.mobile;\n }\n}\n\nexport function media(device: Device): string {\n switch (device) {\n case 'mobile':\n return `@media (max-width: ${maxWidth.mobile}px)`;\n case 'tablet':\n return `@media (max-width: ${maxWidth.tablet}px) (min-width: ${maxWidth.mobile}px)`;\n default:\n case 'desktop':\n return `@media (min-width: ${maxWidth.tablet}px)`;\n }\n}\n\nexport function mediaMin(px: number): string {\n return `@media (min-width: ${px}px)`;\n}\n\nexport function mediaMax(px: number): string {\n return `@media (max-width: ${px}px)`;\n}\n\nexport function mediaMinMax(pxMin: number, pxMax: number): string {\n return `@media (min-width: ${pxMin}px) and (max-width: ${pxMax}px)`;\n}\n\nexport const mediaTouch = '@media (hover: none)';\n\nexport const mediaNotTouch = '@media not all and (hover: none)';\n","import { styled } from 'solid-styled-components';\nimport { rgba } from 'src/app/utils/css';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nconst borders: BorderRadiusConfig = {\n m: '100vh',\n s: '8px',\n none: '0'\n};\n\nconst scaleValues = {\n s: 0.02,\n m: 0.04\n};\n\nexport const ButtonStyled = styled.button<{ appearance: 'primary' | 'flat'; scale: 's' | 'm' }>`\n background-color: ${props =>\n props.appearance === 'flat' ? 'transparent' : rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n\n padding: ${props => (props.appearance === 'flat' ? '0' : '9px 16px')};\n border: none;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};\n\n font-size: 14px;\n font-weight: 590;\n line-height: 18px;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 + scaleValues[props.scale]})`};\n }\n }\n\n &:active {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 - scaleValues[props.scale]})`};\n }\n\n ${mediaTouch} {\n &:active {\n transform: ${props =>\n props.disabled ? 'unset' : `scale(${1 - scaleValues[props.scale] * 2})`};\n }\n }\n`;\n","import { splitProps, untrack } from 'solid-js';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\n\nexport function useDataAttributes<T extends object>(props: T): WithDataAttributes {\n const keys = untrack(() => Object.keys(props).filter(key => key.startsWith('data-')));\n const [dataAttrs] = splitProps(props, keys as (keyof T)[]);\n return dataAttrs;\n}\n","import { Component, JSXElement } from 'solid-js';\nimport { ButtonStyled } from 'src/app/components/button/style';\nimport { Styleable } from 'src/app/models/styleable';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\n\nexport interface ButtonProps extends Styleable, WithDataAttributes {\n appearance?: 'primary' | 'flat';\n scale?: 's' | 'm';\n children: JSXElement;\n onClick?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n onMouseEnter?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n onMouseLeave?: (e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => void;\n disabled?: boolean;\n ref?: HTMLButtonElement | ((el: HTMLButtonElement) => void) | undefined;\n}\n\nexport const Button: Component<ButtonProps> = props => {\n const dataAttrs = useDataAttributes(props);\n\n return (\n <ButtonStyled\n appearance={props.appearance || 'primary'}\n class={props.class}\n onClick={e => props.onClick?.(e)}\n onMouseEnter={e => props.onMouseEnter?.(e)}\n onMouseLeave={e => props.onMouseLeave?.(e)}\n ref={props.ref}\n disabled={props.disabled}\n scale={props.scale || 'm'}\n data-tc-button=\"true\"\n {...dataAttrs}\n >\n {props.children}\n </ButtonStyled>\n );\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { createSignal, children, createMemo, createComputed, untrack, batch, createEffect } from 'solid-js';\n\nfunction nextFrame(fn) {\n requestAnimationFrame(() => {\n requestAnimationFrame(fn);\n });\n}\n\nconst Transition = props => {\n let el;\n let first = true;\n const [s1, set1] = createSignal();\n const [s2, set2] = createSignal();\n const resolved = children(() => props.children);\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\"\n };\n });\n\n function enterTransition(el, prev) {\n if (!first || props.appear) {\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n batch(() => {\n s1() !== el && set1(el);\n s2() === el && set2(undefined);\n });\n onAfterEnter && onAfterEnter(el);\n if (props.mode === \"inout\") exitTransition(el, prev);\n }\n }\n }\n\n prev && !props.mode ? set2(el) : set1(el);\n }\n\n function exitTransition(el, prev) {\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n if (!prev.parentNode) return endTransition();\n onBeforeExit && onBeforeExit(prev);\n prev.classList.add(...exitClasses);\n prev.classList.add(...exitActiveClasses);\n nextFrame(() => {\n prev.classList.remove(...exitClasses);\n prev.classList.add(...exitToClasses);\n });\n onExit && onExit(prev, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n prev.addEventListener(\"transitionend\", endTransition);\n prev.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === prev) {\n prev.removeEventListener(\"transitionend\", endTransition);\n prev.removeEventListener(\"animationend\", endTransition);\n prev.classList.remove(...exitActiveClasses);\n prev.classList.remove(...exitToClasses);\n s1() === prev && set1(undefined);\n onAfterExit && onAfterExit(prev);\n if (props.mode === \"outin\") enterTransition(el, prev);\n }\n }\n }\n\n createComputed(prev => {\n el = resolved();\n\n while (typeof el === \"function\") el = el();\n\n return untrack(() => {\n if (el && el !== prev) {\n if (props.mode !== \"outin\") enterTransition(el, prev);else if (first) set1(el);\n }\n\n if (prev && prev !== el && props.mode !== \"inout\") exitTransition(el, prev);\n first = false;\n return el;\n });\n });\n return [s1, s2];\n};\n\nfunction getRect(element) {\n const {\n top,\n bottom,\n left,\n right,\n width,\n height\n } = element.getBoundingClientRect();\n const parentRect = element.parentNode.getBoundingClientRect();\n return {\n top: top - parentRect.top,\n bottom,\n left: left - parentRect.left,\n right,\n width,\n height\n };\n}\n\nconst TransitionGroup = props => {\n const resolved = children(() => props.children);\n const classnames = createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActiveClass: props.enterActiveClass || name + \"-enter-active\",\n enterClass: props.enterClass || name + \"-enter\",\n enterToClass: props.enterToClass || name + \"-enter-to\",\n exitActiveClass: props.exitActiveClass || name + \"-exit-active\",\n exitClass: props.exitClass || name + \"-exit\",\n exitToClass: props.exitToClass || name + \"-exit-to\",\n moveClass: props.moveClass || name + \"-move\"\n };\n });\n const {\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onBeforeExit,\n onExit,\n onAfterExit\n } = props;\n const [combined, setCombined] = createSignal();\n let p = [];\n let first = true;\n createComputed(() => {\n const c = resolved();\n const comb = [...c];\n const next = new Set(c);\n const prev = new Set(p);\n const enterClasses = classnames().enterClass.split(\" \");\n const enterActiveClasses = classnames().enterActiveClass.split(\" \");\n const enterToClasses = classnames().enterToClass.split(\" \");\n const exitClasses = classnames().exitClass.split(\" \");\n const exitActiveClasses = classnames().exitActiveClass.split(\" \");\n const exitToClasses = classnames().exitToClass.split(\" \");\n\n for (let i = 0; i < c.length; i++) {\n const el = c[i];\n\n if (!first && !prev.has(el)) {\n onBeforeEnter && onBeforeEnter(el);\n el.classList.add(...enterClasses);\n el.classList.add(...enterActiveClasses);\n nextFrame(() => {\n el.classList.remove(...enterClasses);\n el.classList.add(...enterToClasses);\n onEnter && onEnter(el, () => endTransition());\n\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n\n function endTransition(e) {\n if (el && (!e || e.target === el)) {\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...enterActiveClasses);\n el.classList.remove(...enterToClasses);\n onAfterEnter && onAfterEnter(el);\n }\n }\n }\n }\n\n for (let i = 0; i < p.length; i++) {\n const old = p[i];\n\n if (!next.has(old) && old.parentNode) {\n comb.splice(i, 0, old);\n onBeforeExit && onBeforeExit(old);\n old.classList.add(...exitClasses);\n old.classList.add(...exitActiveClasses);\n nextFrame(() => {\n old.classList.remove(...exitClasses);\n old.classList.add(...exitToClasses);\n });\n onExit && onExit(old, () => endTransition());\n\n if (!onExit || onExit.length < 2) {\n old.addEventListener(\"transitionend\", endTransition);\n old.addEventListener(\"animationend\", endTransition);\n }\n\n function endTransition(e) {\n if (!e || e.target === old) {\n old.removeEventListener(\"transitionend\", endTransition);\n old.removeEventListener(\"animationend\", endTransition);\n old.classList.remove(...exitActiveClasses);\n old.classList.remove(...exitToClasses);\n onAfterExit && onAfterExit(old);\n p = p.filter(i => i !== old);\n setCombined(p);\n }\n }\n }\n }\n\n p = comb;\n setCombined(comb);\n });\n createEffect(nodes => {\n const c = combined();\n c.forEach(child => {\n let n;\n\n if (!(n = nodes.get(child))) {\n nodes.set(child, n = {\n pos: getRect(child),\n new: !first\n });\n } else if (n.new) {\n n.new = false;\n n.newPos = getRect(child);\n }\n\n if (n.new) {\n child.addEventListener(\"transitionend\", () => {\n n.new = false;\n child.parentNode && (n.newPos = getRect(child));\n }, {\n once: true\n });\n }\n\n n.newPos && (n.pos = n.newPos);\n n.newPos = getRect(child);\n });\n\n if (first) {\n first = false;\n return nodes;\n }\n\n c.forEach(child => {\n const c = nodes.get(child);\n const oldPos = c.pos;\n const newPos = c.newPos;\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n\n if (dx || dy) {\n c.moved = true;\n const s = child.style;\n s.transform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n }\n });\n document.body.offsetHeight;\n c.forEach(child => {\n const c = nodes.get(child);\n\n if (c.moved) {\n c.moved = false;\n const s = child.style;\n const moveClasses = classnames().moveClass.split(\" \");\n child.classList.add(...moveClasses);\n s.transform = s.transitionDuration = \"\";\n\n function endTransition(e) {\n if (e && e.target !== child || !child.parentNode) return;\n\n if (!e || /transform$/.test(e.propertyName)) {\n child.removeEventListener(\"transitionend\", endTransition);\n child.classList.remove(...moveClasses);\n }\n }\n\n child.addEventListener(\"transitionend\", endTransition);\n }\n });\n return nodes;\n }, new Map());\n return combined;\n};\n\nexport { Transition, TransitionGroup };\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { styled, useTheme } from 'solid-styled-components';\n\ninterface ArrowIconProps {\n fill?: Property.Color;\n direction?: 'left' | 'right' | 'top' | 'bottom';\n}\n\nconst rotationDegrees = {\n left: 0,\n top: 90,\n right: 180,\n bottom: 270\n};\n\nexport const ArrowIcon: Component<ArrowIconProps> = props => {\n const theme = useTheme();\n const fill = (): Property.Color => props.fill || theme.colors.icon.secondary;\n const direction = (): 'left' | 'right' | 'top' | 'bottom' => props.direction || 'left';\n\n const Svg = styled('svg')<{ svgDirection: 'left' | 'right' | 'top' | 'bottom' }>`\n transform: rotate(${props => rotationDegrees[props.svgDirection]}deg);\n transition: transform 0.1s ease-in-out;\n `;\n\n return (\n <Svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n svgDirection={direction()}\n >\n <path\n d=\"M9.1 3.40012L5.5 8.0001L9.1 12.6001\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </Svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface CloseIconProps {\n fill?: Property.Color;\n}\n\nexport const CloseIcon: Component<CloseIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.90003 3.89991L8.00002 7.9999M8.00002 7.9999L12.1 12.0999M8.00002 7.9999L12.1 3.8999M8.00002 7.9999L3.90002 12.0999\"\n stroke={fill()}\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nexport const IconButtonStyled = styled.button`\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${props => props.theme!.colors.background.secondary};\n border: none;\n cursor: pointer;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n","import { Property } from 'csstype';\nimport { Component, JSXElement, Match, Show, Switch } from 'solid-js';\nimport { ArrowIcon } from 'src/app/components/icons/arrow-icon';\nimport { CloseIcon } from 'src/app/components/icons/close-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { IconButtonStyled } from './style';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\n\nexport interface IconButtonProps extends Styleable, WithDataAttributes {\n fill?: Property.Color;\n children?: JSXElement;\n icon?: 'close' | 'arrow';\n onClick: () => void;\n}\n\nexport const IconButton: Component<IconButtonProps> = props => {\n const dataAttrs = useDataAttributes(props);\n const icon = (): 'close' | 'arrow' => props.icon || 'close';\n return (\n <IconButtonStyled\n class={props.class}\n onClick={() => props.onClick()}\n data-tc-icon-button=\"true\"\n {...dataAttrs}\n >\n <Show when={!!props.children}>{props.children}</Show>\n <Show when={!props.children}>\n <Switch>\n <Match when={icon() === 'close'}>\n <CloseIcon fill={props.fill} />\n </Match>\n <Match when={icon() === 'arrow'}>\n <ArrowIcon fill={props.fill} />\n </Match>\n </Switch>\n </Show>\n </IconButtonStyled>\n );\n};\n","import { css, styled } from 'solid-styled-components';\nimport { IconButton } from 'src/app/components/icon-button';\nimport { maxWidth, media } from 'src/app/styles/media';\n\nexport const ModalBackgroundStyled = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n z-index: 1000;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.4);\n\n ${media('mobile')} {\n align-items: flex-end;\n }\n\n @media (min-width: ${maxWidth.mobile.toString()}px) and (max-height: 600px) {\n padding: 48px 0;\n align-items: flex-start;\n overflow: scroll;\n }\n`;\n\nexport const ModalWrapperClass = css`\n position: relative;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 16px 64px rgba(0, 0, 0, 0.16);\n min-height: 100px;\n width: 440px;\n padding: 44px 56px 24px;\n\n ${media('mobile')} {\n width: 100%;\n }\n`;\n\nexport const CloseButtonStyled = styled(IconButton)`\n position: absolute;\n right: 16px;\n top: 16px;\n`;\n","import cn from 'classnames';\nimport { Component, createEffect, JSXElement, Show } from 'solid-js';\nimport { Transition } from 'solid-transition-group';\nimport clickOutsideDirective from 'src/app/directives/click-outside';\nimport keyPressedDirective from 'src/app/directives/key-pressed';\nimport { Styleable } from 'src/app/models/styleable';\nimport { isDevice, media } from 'src/app/styles/media';\nimport { CloseButtonStyled, ModalBackgroundStyled, ModalWrapperClass } from './style';\nimport { css, useTheme } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { disableScroll, enableScroll } from 'src/app/utils/web-api';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nconst clickOutside = clickOutsideDirective;\nconst keyPressed = keyPressedDirective;\n\nconst borders: BorderRadiusConfig = {\n m: '24px',\n s: '16px',\n none: '0'\n};\n\nexport interface ModalProps extends Styleable, WithDataAttributes {\n children: JSXElement;\n opened: boolean;\n onClose: () => void;\n}\n\nexport const Modal: Component<ModalProps> = props => {\n const theme = useTheme();\n const dataAttrs = useDataAttributes(props);\n\n createEffect(() => {\n if (props.opened) {\n disableScroll();\n } else {\n enableScroll();\n }\n });\n\n return (\n <Transition\n onBeforeEnter={el => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n el.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n el.firstElementChild!.animate(\n [{ transform: 'translateY(390px)' }, { transform: 'translateY(0)' }],\n {\n duration\n }\n );\n }\n }}\n onExit={(el, done) => {\n const duration = isDevice('mobile') ? 200 : 100;\n\n const backgroundAnimation = el.animate([{ opacity: 1 }, { opacity: 0 }], {\n duration\n });\n\n if (isDevice('mobile')) {\n const contentAnimation = el.firstElementChild!.animate(\n [{ transform: 'translateY(0)' }, { transform: 'translateY(390px)' }],\n {\n duration\n }\n );\n\n Promise.all([backgroundAnimation.finished, contentAnimation.finished]).then(\n done\n );\n } else {\n backgroundAnimation.finished.then(done);\n }\n }}\n >\n <Show when={props.opened}>\n <ModalBackgroundStyled data-tc-modal=\"true\" {...dataAttrs}>\n <div\n class={cn(\n ModalWrapperClass,\n props.class,\n css`\n background-color: ${theme.colors.background.primary};\n border-radius: ${borders[theme.borderRadius]};\n\n ${media('mobile')} {\n border-radius: ${borders[theme.borderRadius]}\n ${borders[theme.borderRadius]} 0 0;\n }\n `\n )}\n use:clickOutside={() => props.onClose()}\n use:keyPressed={() => props.onClose()}\n >\n <CloseButtonStyled icon=\"close\" onClick={() => props.onClose()} />\n {props.children}\n </div>\n </ModalBackgroundStyled>\n </Show>\n </Transition>\n );\n};\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function clickOutside(el: Element, accessor: Accessor<() => void>): void {\n const onClick = (e: Event): void | boolean => !el.contains(e.target as Node) && accessor()?.();\n document.body.addEventListener('click', onClick);\n\n onCleanup(() => document.body.removeEventListener('click', onClick));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n clickOutside: () => void;\n }\n }\n}\n","import { Accessor, onCleanup } from 'solid-js';\n\nexport default function escPressed(_: Element, accessor: Accessor<() => void>): void {\n const onKeyPress = (e: Event): void | boolean => {\n if ((e as KeyboardEvent).key === 'Escape') {\n (document.activeElement as HTMLElement)?.blur();\n accessor()?.();\n }\n };\n document.body.addEventListener('keydown', onKeyPress);\n\n onCleanup(() => document.body.removeEventListener('keydown', onKeyPress));\n}\n\ndeclare module 'solid-js' {\n namespace JSX {\n interface Directives {\n keyPressed: () => void;\n }\n }\n}\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst wrapperBorderRadius: BorderRadiusConfig = {\n m: '22px',\n s: '12px',\n none: '0'\n};\n\nconst sliderBorderRadius: BorderRadiusConfig = {\n m: '18px',\n s: '8px',\n none: '0'\n};\n\nexport const TabBarStyled = styled.div`\n display: grid;\n grid-template: 1fr / 1fr 1fr;\n width: fit-content;\n justify-items: center;\n gap: 4px;\n\n position: relative;\n padding: 4px;\n border-radius: ${props => wrapperBorderRadius[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.secondary};\n`;\n\nexport const SliderStyled = styled.div<{ right: boolean }>`\n position: absolute;\n top: 4px;\n left: 4px;\n\n height: calc(100% - 8px);\n width: calc(50% - 4px);\n\n border-radius: ${props => sliderBorderRadius[props.theme!.borderRadius]};\n background-color: ${props => props.theme!.colors.background.segment};\n\n transform: ${props => (props.right ? 'translateX(100%)' : 'translateX(0)')};\n\n transition: transform 0.13s ease-in-out;\n`;\n\nexport const InputStyled = styled.input`\n display: none;\n`;\n\nexport const LabelStyled = styled.label<{ isActive: boolean }>`\n padding: 9px 12px;\n z-index: 1;\n\n cursor: ${props => (props.isActive ? 'default' : 'pointer')};\n\n transition: transform 0.13s ease-in-out;\n\n &:hover {\n transform: ${props => (props.isActive ? 'none' : 'scale(1.025)')};\n }\n\n > * {\n ${props => (!props.isActive ? `color: ${props.theme!.colors.text.secondary};` : '')}\n }\n`;\n","import { styled } from 'solid-styled-components';\nimport { Button, Image } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\nimport { toPx } from 'src/app/utils/css';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const qrNormalSize = 256;\nexport const imgSizeDefault = 60;\n\nexport const picSizeDefault = 48;\n\nconst qrPaddingTop = 24;\n\nexport const QrCodeBackground = styled.div`\n display: flex;\n align-items: center;\n position: relative;\n background-color: ${props => props.theme!.colors.background.secondary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n padding: ${toPx(qrPaddingTop)} 0;\n height: ${toPx(qrNormalSize + qrPaddingTop * 2)};\n width: 100%;\n\n overflow: hidden;\n`;\n\nexport const QrCodeWrapper = styled.div`\n position: relative;\n\n width: fit-content;\n margin: 0 auto;\n\n > div:first-child {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n rect {\n fill: transparent;\n }\n\n path {\n fill: ${props => props.theme!.colors.text.primary};\n }\n`;\n\nexport const ImageBackground = styled.div`\n position: absolute;\n width: ${toPx(imgSizeDefault)};\n height: ${toPx(imgSizeDefault)};\n background: ${props => props.theme!.colors.background.secondary};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const ImageStyled = styled(Image)<{ size: number }>`\n width: ${props => toPx(props.size)};\n height: ${props => toPx(props.size)};\n border-radius: 12px;\n`;\n\nexport const CopyButtonStyled = styled(Button)`\n filter: drop-shadow(0px 2px 8px rgba(0, 0, 0, 0.08));\n position: absolute;\n bottom: 14px;\n left: 50%;\n\n transform: translate(-50%, 0);\n\n background-color: ${props => props.theme!.colors.background.segment};\n color: ${props => props.theme!.colors.text.primary};\n\n &:hover {\n transform: translate(-50%, 0) scale(1.04);\n }\n\n &:active {\n transform: translate(-50%, 0) scale(0.96);\n }\n`;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n //---------------------------------------------------------------------\n // qrcode\n //---------------------------------------------------------------------\n\n /**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\n var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n var PAD0 = 0xEC;\n var PAD1 = 0x11;\n\n var _typeNumber = typeNumber;\n var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n var _modules = null;\n var _moduleCount = 0;\n var _dataCache = null;\n var _dataList = [];\n\n var _this = {};\n\n var makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n var modules = new Array(moduleCount);\n for (var row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (var col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n var setupPositionProbePattern = function(row, col) {\n\n for (var r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (var c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n var getBestMaskPattern = function() {\n\n var minLostPoint = 0;\n var pattern = 0;\n\n for (var i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n var lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n var setupTimingPattern = function() {\n\n for (var r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (var c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n var setupPositionAdjustPattern = function() {\n\n var pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (var i = 0; i < pos.length; i += 1) {\n\n for (var j = 0; j < pos.length; j += 1) {\n\n var row = pos[i];\n var col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (var r = -2; r <= 2; r += 1) {\n\n for (var c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n var setupTypeNumber = function(test) {\n\n var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (var i = 0; i < 18; i += 1) {\n var mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n var setupTypeInfo = function(test, maskPattern) {\n\n var data = (_errorCorrectionLevel << 3) | maskPattern;\n var bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (var i = 0; i < 15; i += 1) {\n\n var mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n var mapData = function(data, maskPattern) {\n\n var inc = -1;\n var row = _moduleCount - 1;\n var bitIndex = 7;\n var byteIndex = 0;\n var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (var c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n var dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n var mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n var createBytes = function(buffer, rsBlocks) {\n\n var offset = 0;\n\n var maxDcCount = 0;\n var maxEcCount = 0;\n\n var dcdata = new Array(rsBlocks.length);\n var ecdata = new Array(rsBlocks.length);\n\n for (var r = 0; r < rsBlocks.length; r += 1) {\n\n var dcCount = rsBlocks[r].dataCount;\n var ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (var i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n var modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (var i = 0; i < ecdata[r].length; i += 1) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n var totalCodeCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n var data = new Array(totalCodeCount);\n var index = 0;\n\n for (var i = 0; i < maxDcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (var i = 0; i < maxEcCount; i += 1) {\n for (var r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < dataList.length; i += 1) {\n var data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n var newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n var typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n var buffer = qrBitBuffer();\n\n for (var i = 0; i < _dataList.length; i++) {\n var data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n var totalDataCount = 0;\n for (var i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (var c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n var opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n var c = Math.floor( (x - min) / cellSize);\n var r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n\n var img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n var escapeXml = function(s) {\n var escaped = '';\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charAt(i);\n switch(c) {\n case '<': escaped += '&lt;'; break;\n case '>': escaped += '&gt;'; break;\n case '&': escaped += '&amp;'; break;\n case '\"': escaped += '&quot;'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n var _createHalfASCII = function(margin) {\n var cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r1, r2, p;\n\n var blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n var blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n var ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n var size = _this.getModuleCount() * cellSize + margin * 2;\n var min = margin;\n var max = size - margin;\n\n var y, x, r, p;\n\n var white = Array(cellSize+1).join('██');\n var black = Array(cellSize+1).join(' ');\n\n var ascii = '';\n var line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n var length = _this.getModuleCount();\n for (var row = 0; row < length; row++) {\n for (var col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrcode.stringToBytes\n //---------------------------------------------------------------------\n\n qrcode.stringToBytesFuncs = {\n 'default' : function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n }\n };\n\n qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n //---------------------------------------------------------------------\n // qrcode.createStringToBytes\n //---------------------------------------------------------------------\n\n /**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\n qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n var unicodeMap = function() {\n\n var bin = base64DecodeInputStream(unicodeData);\n var read = function() {\n var b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n var count = 0;\n var unicodeMap = {};\n while (true) {\n var b0 = bin.read();\n if (b0 == -1) break;\n var b1 = read();\n var b2 = read();\n var b3 = read();\n var k = String.fromCharCode( (b0 << 8) | b1);\n var v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n var unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n var bytes = [];\n for (var i = 0; i < s.length; i += 1) {\n var c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n var b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n };\n\n //---------------------------------------------------------------------\n // QRMode\n //---------------------------------------------------------------------\n\n var QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n };\n\n //---------------------------------------------------------------------\n // QRErrorCorrectionLevel\n //---------------------------------------------------------------------\n\n var QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n };\n\n //---------------------------------------------------------------------\n // QRMaskPattern\n //---------------------------------------------------------------------\n\n var QRMaskPattern = {\n PATTERN000 : 0,\n PATTERN001 : 1,\n PATTERN010 : 2,\n PATTERN011 : 3,\n PATTERN100 : 4,\n PATTERN101 : 5,\n PATTERN110 : 6,\n PATTERN111 : 7\n };\n\n //---------------------------------------------------------------------\n // QRUtil\n //---------------------------------------------------------------------\n\n var QRUtil = function() {\n\n var PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n var _this = {};\n\n var getBCHDigit = function(data) {\n var digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n var d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n var d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n var a = qrPolynomial([1], 0);\n for (var i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n var moduleCount = qrcode.getModuleCount();\n\n var lostPoint = 0;\n\n // LEVEL1\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount; col += 1) {\n\n var sameCount = 0;\n var dark = qrcode.isDark(row, col);\n\n for (var r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (var c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (var row = 0; row < moduleCount - 1; row += 1) {\n for (var col = 0; col < moduleCount - 1; col += 1) {\n var count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (var row = 0; row < moduleCount; row += 1) {\n for (var col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n var darkCount = 0;\n\n for (var col = 0; col < moduleCount; col += 1) {\n for (var row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // QRMath\n //---------------------------------------------------------------------\n\n var QRMath = function() {\n\n var EXP_TABLE = new Array(256);\n var LOG_TABLE = new Array(256);\n\n // initialize tables\n for (var i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (var i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (var i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n var _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrPolynomial\n //---------------------------------------------------------------------\n\n function qrPolynomial(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n var _num = function() {\n var offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n var _num = new Array(num.length - offset + shift);\n for (var i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n var _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n var num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (var i = 0; i < _this.getLength(); i += 1) {\n for (var j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n var num = new Array(_this.getLength() );\n for (var i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (var i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // QRRSBlock\n //---------------------------------------------------------------------\n\n var QRRSBlock = function() {\n\n var RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n var qrRSBlock = function(totalCount, dataCount) {\n var _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n var _this = {};\n\n var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n var length = rsBlock.length / 3;\n\n var list = [];\n\n for (var i = 0; i < length; i += 1) {\n\n var count = rsBlock[i * 3 + 0];\n var totalCount = rsBlock[i * 3 + 1];\n var dataCount = rsBlock[i * 3 + 2];\n\n for (var j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n }();\n\n //---------------------------------------------------------------------\n // qrBitBuffer\n //---------------------------------------------------------------------\n\n var qrBitBuffer = function() {\n\n var _buffer = [];\n var _length = 0;\n\n var _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n var bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (var i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n var bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrNumber\n //---------------------------------------------------------------------\n\n var qrNumber = function(data) {\n\n var _mode = QRMode.MODE_NUMBER;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var data = _data;\n\n var i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n var strToNum = function(s) {\n var num = 0;\n for (var i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n var chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrAlphaNum\n //---------------------------------------------------------------------\n\n var qrAlphaNum = function(data) {\n\n var _mode = QRMode.MODE_ALPHA_NUM;\n var _data = data;\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n var s = _data;\n\n var i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n var getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case ' ' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qr8BitByte\n //---------------------------------------------------------------------\n\n var qr8BitByte = function(data) {\n\n var _mode = QRMode.MODE_8BIT_BYTE;\n var _data = data;\n var _bytes = qrcode.stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (var i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // qrKanji\n //---------------------------------------------------------------------\n\n var qrKanji = function(data) {\n\n var _mode = QRMode.MODE_KANJI;\n var _data = data;\n\n var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n if (!stringToBytes) {\n throw 'sjis not supported.';\n }\n !function(c, code) {\n // self test for sjis support.\n var test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n var _bytes = stringToBytes(data);\n\n var _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n var data = _bytes;\n\n var i = 0;\n\n while (i + 1 < data.length) {\n\n var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n };\n\n //=====================================================================\n // GIF Support etc.\n //\n\n //---------------------------------------------------------------------\n // byteArrayOutputStream\n //---------------------------------------------------------------------\n\n var byteArrayOutputStream = function() {\n\n var _bytes = [];\n\n var _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (var i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (var i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n var s = '';\n s += '[';\n for (var i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64EncodeOutputStream\n //---------------------------------------------------------------------\n\n var base64EncodeOutputStream = function() {\n\n var _buffer = 0;\n var _buflen = 0;\n var _length = 0;\n var _base64 = '';\n\n var _this = {};\n\n var writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n var encode = function(n) {\n if (n < 0) {\n // error.\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n }\n throw 'n:' + n;\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n var padlen = 3 - _length % 3;\n for (var i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // base64DecodeInputStream\n //---------------------------------------------------------------------\n\n var base64DecodeInputStream = function(str) {\n\n var _str = str;\n var _pos = 0;\n var _buffer = 0;\n var _buflen = 0;\n\n var _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n var c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n var decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n };\n\n //---------------------------------------------------------------------\n // gifImage (B/W)\n //---------------------------------------------------------------------\n\n var gifImage = function(width, height) {\n\n var _width = width;\n var _height = height;\n var _data = new Array(width * height);\n\n var _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n var lzwMinCodeSize = 2;\n var raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n var offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n var bitOutputStream = function(out) {\n\n var _out = out;\n var _bitLength = 0;\n var _bitBuffer = 0;\n\n var _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n var getLZWRaster = function(lzwMinCodeSize) {\n\n var clearCode = 1 << lzwMinCodeSize;\n var endCode = (1 << lzwMinCodeSize) + 1;\n var bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n var table = lzwTable();\n\n for (var i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n var byteOut = byteArrayOutputStream();\n var bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n var dataIndex = 0;\n\n var s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n var c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n var lzwTable = function() {\n\n var _map = {};\n var _size = 0;\n\n var _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n };\n\n var createDataURL = function(width, height, getPixel) {\n var gif = gifImage(width, height);\n for (var y = 0; y < height; y += 1) {\n for (var x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n var b = byteArrayOutputStream();\n gif.write(b);\n\n var base64 = base64EncodeOutputStream();\n var bytes = b.toByteArray();\n for (var i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n };\n\n //---------------------------------------------------------------------\n // returns qrcode function.\n\n return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n function toUTF8Array(str) {\n var utf8 = [];\n for (var i=0; i < str.length; i++) {\n var charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n // surrogate pair\n else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n | (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >>18),\n 0x80 | ((charcode>>12) & 0x3f),\n 0x80 | ((charcode>>6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n }\n return toUTF8Array(s);\n };\n\n}();\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n }\n}(function () {\n return qrcode;\n}));\n","export function copyToClipboard(text: string): Promise<void> {\n if (navigator?.clipboard) {\n return navigator.clipboard.writeText(text);\n }\n\n fallbackCopyTextToClipboard(text);\n return Promise.resolve();\n}\n\nfunction fallbackCopyTextToClipboard(text: string): void {\n const textArea = document.createElement('textarea');\n textArea.value = text;\n\n textArea.style.top = '0';\n textArea.style.left = '0';\n textArea.style.position = 'fixed';\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n } finally {\n document.body.removeChild(textArea);\n }\n}\n","import { createContext, createSignal, useContext } from 'solid-js';\nimport { createStore } from 'solid-js/store';\n\n// src/index.ts\nvar deepReadObject = (obj, path, defaultValue) => {\n const value = path.trim().split(\".\").reduce((a, b) => a ? a[b] : void 0, obj);\n return value !== void 0 ? value : defaultValue;\n};\nvar template = (str, params, reg = /{{(.*?)}}/g) => str.replace(reg, (_, key) => deepReadObject(params, key, \"\"));\nvar createI18nContext = (init = {}, lang = navigator.language in init ? navigator.language : Object.keys(init)[0]) => {\n const [locale, setLocale] = createSignal(lang);\n const [dict, setDict] = createStore(init);\n const translate = (key, params, defaultValue) => {\n const val = deepReadObject(dict[locale()], key, defaultValue || \"\");\n if (typeof val === \"function\")\n return val(params);\n if (typeof val === \"string\")\n return template(val, params || {});\n return val;\n };\n const actions = {\n add(lang2, table) {\n setDict(lang2, (t) => Object.assign(t || {}, table));\n },\n locale: (lang2) => lang2 ? setLocale(lang2) : locale(),\n dict: (lang2) => deepReadObject(dict, lang2)\n };\n return [translate, actions];\n};\nvar I18nContext = createContext({});\nvar useI18n = () => useContext(I18nContext);\n\nexport { I18nContext, createI18nContext, useI18n };\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\n\ninterface TranslationProps extends PropertyRequired<Translateable, 'translationKey'> {\n children?: JSXElement;\n}\n\nexport const Translation: Component<TranslationProps> = props => {\n const [t] = useI18n();\n\n return <>{t(props.translationKey, props.translationValues, props.children?.toString())}</>;\n};\n","import { Component, createEffect, createSignal, Show } from 'solid-js';\nimport {\n CopyButtonStyled,\n ImageBackground,\n ImageStyled,\n imgSizeDefault,\n picSizeDefault,\n QrCodeBackground,\n QrCodeWrapper,\n qrNormalSize\n} from './style';\nimport qrcode from 'qrcode-generator';\nimport { Transition } from 'solid-transition-group';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { Styleable } from 'src/app/models/styleable';\nimport { toPx } from 'src/app/utils/css';\n\nexport interface QRCodeProps extends Styleable {\n sourceUrl: string;\n imageUrl?: string;\n disableCopy?: boolean;\n}\n\ntype CopyButtonText = {\n translationKey: string;\n text: string;\n};\n\nconst copyText: CopyButtonText = {\n translationKey: 'common.copyLink',\n text: 'Copy Link'\n};\n\nconst copiedText: CopyButtonText = {\n translationKey: 'common.copied',\n text: 'Copied!'\n};\n\nexport const QRCode: Component<QRCodeProps> = props => {\n let qrCodeCanvasRef: HTMLDivElement | undefined;\n let qrCodeWrapperRef: HTMLDivElement | undefined;\n let imageRef: HTMLDivElement | undefined;\n\n const [copyButtonOpened, setCopyButtonOpened] = createSignal(false);\n const [copyButtonHovered, setCopyButtonHovered] = createSignal(false);\n const [qrHovered, setQrHovered] = createSignal(false);\n const [copyButtonText, setCopyButtonText] = createSignal<CopyButtonText>(copyText);\n\n const [picSize, setPicSize] = createSignal(picSizeDefault);\n\n createEffect(() => setCopyButtonOpened(copyButtonHovered() || qrHovered()));\n\n createEffect(() => !copyButtonOpened() && setCopyButtonText(copyText));\n\n createEffect(() => {\n const errorCorrectionLevel = 'L';\n const cellSize = 4;\n const qr = qrcode(0, errorCorrectionLevel);\n qr.addData(props.sourceUrl);\n qr.make();\n qrCodeCanvasRef!.innerHTML = qr.createSvgTag(cellSize, 0);\n const qrSize = qrCodeCanvasRef!.firstElementChild!.clientWidth;\n\n const scale = Math.round((qrNormalSize / qrSize) * 100000) / 100000;\n\n if (imageRef) {\n const imgSize = Math.ceil(imgSizeDefault / (scale * cellSize)) * cellSize;\n const imgOffset = toPx(Math.ceil((qrSize - imgSize) / (2 * cellSize)) * cellSize);\n imageRef.style.top = imgOffset;\n imageRef.style.left = imgOffset;\n imageRef.style.height = toPx(imgSize);\n imageRef.style.width = toPx(imgSize);\n\n setPicSize(Math.round(picSizeDefault / scale));\n }\n\n qrCodeWrapperRef!.style.transform = `scale(${scale})`;\n });\n\n let timeoutId: null | ReturnType<typeof setTimeout> = null;\n const onCopyClick = (): void => {\n copyToClipboard(props.sourceUrl);\n setCopyButtonText(copiedText);\n\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n }\n\n timeoutId = setTimeout(() => setCopyButtonText(copyText), 3000);\n };\n\n return (\n <QrCodeBackground class={props.class}>\n <QrCodeWrapper\n ref={qrCodeWrapperRef}\n onMouseEnter={() => setQrHovered(true)}\n onMouseLeave={() => setTimeout(() => setQrHovered(false))}\n >\n <div ref={qrCodeCanvasRef} />\n <Show when={props.imageUrl}>\n <ImageBackground ref={imageRef}>\n <ImageStyled src={props.imageUrl!} alt=\"\" size={picSize()} />\n </ImageBackground>\n </Show>\n </QrCodeWrapper>\n <Transition\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translate(-50%, 44px)' },\n { opacity: 1, transform: 'translate(-50%, 0)' }\n ],\n {\n duration: 200\n }\n );\n }}\n onExit={(el, done) => {\n el.animate(\n [\n { opacity: 1, transform: 'translate(-50%, 0)' },\n { opacity: 0, transform: 'translate(-50%, 44px)' }\n ],\n {\n duration: 200\n }\n ).finished.then(() => {\n done();\n });\n }}\n >\n <Show when={copyButtonOpened() && !props.disableCopy}>\n <CopyButtonStyled\n onClick={onCopyClick}\n onMouseEnter={() => copyButtonOpened() && setCopyButtonHovered(true)}\n onMouseLeave={() => setTimeout(() => setCopyButtonHovered(false))}\n >\n <Translation translationKey={copyButtonText().translationKey}>\n {copyButtonText().text}\n </Translation>\n </CopyButtonStyled>\n </Show>\n </Transition>\n </QrCodeBackground>\n );\n};\n","import { Property } from 'csstype';\nimport { styled } from 'solid-styled-components';\n\nexport const TextStyled = styled.div<{\n fontSize: Property.FontSize;\n fontWeight: Property.FontWeight;\n lineHeight: Property.LineHeight;\n color: Property.Color;\n}>`\n font-style: normal;\n font-weight: ${props => props.fontWeight};\n font-size: ${props => props.fontSize};\n line-height: ${props => props.lineHeight};\n\n color: ${props => props.color};\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Property } from 'csstype';\nimport { Component, createEffect, JSXElement, mergeProps } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TextStyled } from './style';\n\nexport interface TextProps extends Styleable, Translateable {\n children?: JSXElement;\n fontSize?: Property.FontSize;\n fontWeight?: Property.FontWeight;\n lineHeight?: Property.LineHeight;\n letterSpacing?: Property.LetterSpacing;\n color?: Property.Color;\n\n cursor?: 'default' | 'unset';\n}\n\nexport const Text: Component<TextProps> = inputs => {\n const theme = useTheme();\n const [t] = useI18n();\n let textRef: HTMLDivElement | undefined;\n\n const color = (): Property.Color => inputs.color || theme.colors.text.primary;\n\n const props = mergeProps(\n {\n fontSize: '14px',\n fontWeight: '510',\n lineHeight: '130%'\n },\n inputs\n );\n\n createEffect(() => {\n if (!textRef) {\n return;\n }\n\n if (props.cursor === 'unset') {\n return;\n }\n\n if (getComputedStyle(textRef).cursor !== 'pointer') {\n textRef.style.cursor = 'default';\n }\n });\n\n return (\n <TextStyled\n fontSize={props.fontSize}\n fontWeight={props.fontWeight}\n lineHeight={props.lineHeight}\n color={color()}\n class={props.class}\n ref={textRef}\n data-tc-text=\"true\"\n >\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </TextStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from '../typography/text';\nimport { Image } from '../image';\nimport { media, mediaNotTouch, mediaTouch } from 'src/app/styles/media';\nexport const WalletItemStyled = styled.button`\n cursor: pointer;\n border: none;\n background-color: unset;\n padding: 12px 8px 8px;\n height: 94px;\n width: 92px;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n transition: transform 0.125s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${media('mobile')} {\n padding: 8px 4px;\n height: 124px;\n width: 82px;\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n\nexport const ImageStyled = styled(Image)`\n width: 48px;\n height: 48px;\n border-radius: 12px;\n\n margin-bottom: 8px;\n\n ${media('mobile')} {\n width: 64px;\n height: 64px;\n border-radius: 16px;\n }\n`;\n\nexport const StyledText = styled(Text)`\n font-weight: 590;\n max-width: 76px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n","import { Component } from 'solid-js';\nimport { ImageStyled, StyledText, WalletItemStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface WalletItemProps extends Styleable {\n iconUrl: string;\n name: string;\n onClick: () => void;\n}\n\nexport const WalletItem: Component<WalletItemProps> = props => {\n return (\n <WalletItemStyled class={props.class} onClick={() => props.onClick()} data-tc-wallet-item=\"true\">\n <ImageStyled src={props.iconUrl} alt=\"\" />\n <StyledText>{props.name}</StyledText>\n </WalletItemStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H1Styled = styled.h1`\n font-style: normal;\n font-weight: 700;\n font-size: 24px;\n line-height: 30px;\n\n text-align: center;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 6px;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H1Styled } from './style';\n\nexport interface H1Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H1: Component<H1Props> = props => {\n const [t] = useI18n();\n return (\n <H1Styled class={props.class} data-tc-h1=\"true\">\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H1Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H2Styled = styled.h2`\n font-style: normal;\n font-weight: 510;\n font-size: 16px;\n line-height: 20px;\n\n text-align: center;\n\n color: ${props => props.theme!.colors.text.secondary};\n\n margin-top: 0;\n margin-bottom: 32px;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H2Styled } from './style';\n\nexport interface H2Props extends Styleable, Translateable {\n children?: JSXElement;\n}\n\nexport const H2: Component<H2Props> = props => {\n const [t] = useI18n();\n return (\n <H2Styled class={props.class} data-tc-h2=\"true\">\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H2Styled>\n );\n};\n","import { styled } from 'solid-styled-components';\n\nexport const H3Styled = styled.h3`\n font-style: normal;\n font-weight: 590;\n font-size: 15px;\n line-height: 20px;\n\n color: ${props => props.theme!.colors.text.primary};\n\n margin-top: 0;\n margin-bottom: 0;\n\n cursor: default;\n`;\n","import { useI18n } from '@solid-primitives/i18n';\nimport { Component, JSXElement } from 'solid-js';\nimport { Translateable } from 'src/app/models/translateable';\nimport { H3Styled } from './style';\n\ninterface H3Props extends Translateable {\n children?: JSXElement;\n}\n\nexport const H3: Component<H3Props> = props => {\n const [t] = useI18n();\n\n return (\n <H3Styled data-tc-h3=\"true\">\n {props.translationKey\n ? t(props.translationKey, props.translationValues, props.children?.toString())\n : props.children}\n </H3Styled>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface LongArrowIconProps {\n fill?: Property.Color;\n}\n\nexport const LongArrowIcon: Component<LongArrowIconProps> = props => {\n const theme = useTheme();\n const fill = (): Property.Color => props.fill || theme.colors.icon.secondary;\n\n return (\n <svg\n width=\"18\"\n height=\"17\"\n viewBox=\"0 0 18 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.5 15.999L16.5 0.999023M16.5 0.999023V12.999M16.5 0.999023H4.5\"\n stroke={fill()}\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface TonIconProps {\n fill?: Property.Color;\n}\n\nexport const TonIcon: Component<TonIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M14.1839 17.7069C13.6405 18.6507 13.3688 19.1226 13.0591 19.348C12.4278 19.8074 11.5723 19.8074 10.941 19.348C10.6312 19.1226 10.3595 18.6507 9.81613 17.7069L5.52066 10.2464C4.76864 8.94024 4.39263 8.28717 4.33762 7.75894C4.2255 6.68236 4.81894 5.65591 5.80788 5.21589C6.29309 5 7.04667 5 8.55383 5H15.4462C16.9534 5 17.7069 5 18.1922 5.21589C19.1811 5.65591 19.7745 6.68236 19.6624 7.75894C19.6074 8.28717 19.2314 8.94024 18.4794 10.2464L14.1839 17.7069ZM11.1 16.3412L6.56139 8.48002C6.31995 8.06185 6.19924 7.85276 6.18146 7.68365C6.14523 7.33896 6.33507 7.01015 6.65169 6.86919C6.80703 6.80002 7.04847 6.80002 7.53133 6.80002H7.53134L11.1 6.80002V16.3412ZM12.9 16.3412L17.4387 8.48002C17.6801 8.06185 17.8008 7.85276 17.8186 7.68365C17.8548 7.33896 17.665 7.01015 17.3484 6.86919C17.193 6.80002 16.9516 6.80002 16.4687 6.80002L12.9 6.80002V16.3412Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface SuccessIconProps extends Styleable {\n fill?: Property.Color;\n size?: 's' | 'm';\n}\n\nexport const SuccessIcon: Component<SuccessIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 's' | 'm' => props.size || 's';\n const fill = (): string => props.fill || theme.colors.icon.success;\n\n return (\n <>\n {size() === 's' ? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M17.1364 9.6364C17.4879 9.28493 17.4879 8.71508 17.1364 8.36361C16.7849 8.01214 16.2151 8.01214 15.8636 8.36361L10 14.2272L8.1364 12.3636C7.78493 12.0121 7.21508 12.0121 6.86361 12.3636C6.51214 12.7151 6.51214 13.2849 6.86361 13.6364L9.36361 16.1364C9.71508 16.4879 10.2849 16.4879 10.6364 16.1364L17.1364 9.6364Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n ) : (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"36\" cy=\"36\" r=\"33\" fill={fill()} />\n <path\n d=\"M50.9142 28.4142C51.6953 27.6332 51.6953 26.3668 50.9142 25.5858C50.1332 24.8047 48.8668 24.8047 48.0858 25.5858L30 43.6716L23.9142 37.5858C23.1332 36.8047 21.8668 36.8047 21.0858 37.5858C20.3047 38.3668 20.3047 39.6332 21.0858 40.4142L28.5858 47.9142C29.3668 48.6953 30.6332 48.6953 31.4142 47.9142L50.9142 28.4142Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n )}\n </>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { Styleable } from 'src/app/models/styleable';\nimport { useTheme } from 'solid-styled-components';\n\nexport interface ErrorIconProps extends Styleable {\n fill?: Property.Color;\n size?: 's' | 'm';\n}\n\nexport const ErrorIcon: Component<ErrorIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 's' | 'm' => props.size || 's';\n const fill = (): string => props.fill || theme.colors.icon.error;\n\n return (\n <>\n {size() === 's' ? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"12\" cy=\"12\" r=\"11\" fill={fill()} />\n <path\n d=\"M7.86361 9.1364C7.51214 8.78493 7.51214 8.21508 7.86361 7.86361C8.21508 7.51214 8.78493 7.51214 9.1364 7.86361L12 10.7272L14.8636 7.86361C15.2151 7.51214 15.7849 7.51214 16.1364 7.86361C16.4879 8.21508 16.4879 8.78493 16.1364 9.1364L13.2728 12L16.1364 14.8636C16.4879 15.2151 16.4879 15.7849 16.1364 16.1364C15.7849 16.4879 15.2151 16.4879 14.8636 16.1364L12 13.2728L9.1364 16.1364C8.78493 16.4879 8.21508 16.4879 7.86361 16.1364C7.51214 15.7849 7.51214 15.2151 7.86361 14.8636L10.7272 12L7.86361 9.1364Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n ) : (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={props.class}\n >\n <circle cx=\"36\" cy=\"36\" r=\"33\" fill={fill()} />\n <path\n d=\"M24.0858 26.9142C23.3047 26.1332 23.3047 24.8668 24.0858 24.0858C24.8668 23.3047 26.1332 23.3047 26.9142 24.0858L36 33.1716L45.0858 24.0858C45.8668 23.3047 47.1332 23.3047 47.9142 24.0858C48.6953 24.8668 48.6953 26.1332 47.9142 26.9142L38.8284 36L47.9142 45.0858C48.6953 45.8668 48.6953 47.1332 47.9142 47.9142C47.1332 48.6953 45.8668 48.6953 45.0858 47.9142L36 38.8284L26.9142 47.9142C26.1332 48.6953 24.8668 48.6953 24.0858 47.9142C23.3047 47.1332 23.3047 45.8668 24.0858 45.0858L33.1716 36L24.0858 26.9142Z\"\n fill={theme.colors.constant.white}\n />\n </svg>\n )}\n </>\n );\n};\n","import cn from 'classnames';\nimport type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { css, keyframes, useTheme } from 'solid-styled-components';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LoaderIconProps extends Styleable {\n fill?: Property.Color;\n size?: 's' | 'm';\n}\n\nexport const LoaderIcon: Component<LoaderIconProps> = props => {\n const theme = useTheme();\n\n const size = (): 's' | 'm' => props.size || 's';\n const fill = (): string => props.fill || theme.colors.icon.tertiary;\n\n const rotateAnimation = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const svgClass = css`\n animation: ${rotateAnimation} 1s linear infinite;\n `;\n\n return (\n <>\n {size() === 's' ? (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M15.55 5.85123C18.9459 7.81184 20.1094 12.1541 18.1488 15.55C16.1882 18.9459 11.8459 20.1094 8.44998 18.1488C8.01952 17.9003 7.46909 18.0478 7.22056 18.4782C6.97203 18.9087 7.11952 19.4591 7.54998 19.7076C11.8068 22.1653 17.2499 20.7068 19.7076 16.45C22.1653 12.1932 20.7068 6.75005 16.45 4.29239C12.1932 1.83472 6.75003 3.29321 4.29236 7.55001C4.04383 7.98047 4.19132 8.53091 4.62178 8.77943C5.05224 9.02796 5.60268 8.88048 5.8512 8.45001C7.81181 5.05413 12.1541 3.89062 15.55 5.85123Z\"\n fill={fill()}\n />\n </svg>\n ) : (\n <svg\n width=\"72\"\n height=\"72\"\n viewBox=\"0 0 72 72\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class={cn(svgClass, props.class)}\n >\n <path\n d=\"M24 56.7846C35.479 63.412 50.1572 59.479 56.7846 47.9999C63.412 36.5209 59.479 21.8427 48 15.2153C36.521 8.58791 21.8428 12.5209 15.2154 23.9999\"\n stroke={fill()}\n stroke-width=\"4\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n )}\n </>\n );\n};\n","import { createContext } from 'solid-js';\nimport { TonConnectUI } from 'src/ton-connect-ui';\n\nexport const TonConnectUiContext = createContext<TonConnectUI>();\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface CopyIconProps {\n fill?: Property.Color;\n}\n\nexport const CopyIcon: Component<CopyIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.76228 2.09998H10.2378C11.0458 2.09997 11.7067 2.09996 12.2438 2.14384C12.7997 2.18926 13.3017 2.28614 13.7706 2.52505C14.5045 2.89896 15.1011 3.49558 15.475 4.22941C15.7139 4.6983 15.8108 5.20038 15.8562 5.75629C15.9001 6.29337 15.9001 6.95422 15.9001 7.76227V8.1H16.2377C17.0457 8.09999 17.7066 8.09998 18.2437 8.14386C18.7996 8.18928 19.3017 8.28616 19.7705 8.52507C20.5044 8.89898 21.101 9.4956 21.4749 10.2294C21.7138 10.6983 21.8107 11.2004 21.8561 11.7563C21.9 12.2934 21.9 12.9542 21.9 13.7623V16.2377C21.9 17.0458 21.9 17.7066 21.8561 18.2437C21.8107 18.7996 21.7138 19.3017 21.4749 19.7706C21.101 20.5044 20.5044 21.101 19.7705 21.4749C19.3017 21.7138 18.7996 21.8107 18.2437 21.8561C17.7066 21.9 17.0458 21.9 16.2378 21.9H13.7623C12.9543 21.9 12.2934 21.9 11.7563 21.8561C11.2004 21.8107 10.6983 21.7138 10.2294 21.4749C9.49561 21.101 8.89898 20.5044 8.52508 19.7706C8.28616 19.3017 8.18928 18.7996 8.14386 18.2437C8.09998 17.7066 8.09999 17.0458 8.1 16.2377V15.9H7.76227C6.95426 15.9 6.29335 15.9 5.75629 15.8561C5.20038 15.8107 4.6983 15.7138 4.22941 15.4749C3.49558 15.101 2.89896 14.5044 2.52505 13.7705C2.28614 13.3017 2.18926 12.7996 2.14384 12.2437C2.09996 11.7066 2.09997 11.0458 2.09998 10.2377V7.76228C2.09997 6.95424 2.09996 6.29336 2.14384 5.75629C2.18926 5.20038 2.28614 4.6983 2.52505 4.22941C2.89896 3.49558 3.49558 2.89896 4.22941 2.52505C4.6983 2.28614 5.20038 2.18926 5.75629 2.14384C6.29336 2.09996 6.95425 2.09997 7.76228 2.09998ZM8.1 14.1V13.7623C8.09999 12.9542 8.09998 12.2934 8.14386 11.7563C8.18928 11.2004 8.28616 10.6983 8.52508 10.2294C8.89898 9.4956 9.49561 8.89898 10.2294 8.52507C10.6983 8.28616 11.2004 8.18928 11.7563 8.14386C12.2934 8.09998 12.9542 8.09999 13.7623 8.1H14.1001V7.79998C14.1001 6.94505 14.0994 6.35798 14.0622 5.90287C14.0259 5.45827 13.9593 5.21944 13.8712 5.0466C13.6699 4.65146 13.3486 4.3302 12.9535 4.12886C12.7806 4.04079 12.5418 3.97419 12.0972 3.93786C11.6421 3.90068 11.055 3.89998 10.2001 3.89998H7.79998C6.94505 3.89998 6.35798 3.90068 5.90287 3.93786C5.45827 3.97419 5.21944 4.04079 5.0466 4.12886C4.65146 4.3302 4.3302 4.65146 4.12886 5.0466C4.04079 5.21944 3.97419 5.45827 3.93786 5.90287C3.90068 6.35798 3.89998 6.94505 3.89998 7.79998V10.2C3.89998 11.0549 3.90068 11.642 3.93786 12.0971C3.97419 12.5417 4.04079 12.7805 4.12886 12.9534C4.3302 13.3485 4.65146 13.6698 5.0466 13.8711C5.21944 13.9592 5.45827 14.0258 5.90287 14.0621C6.35798 14.0993 6.94505 14.1 7.79998 14.1H8.1ZM11.0466 10.1289C11.2195 10.0408 11.4583 9.97421 11.9029 9.93788C12.358 9.9007 12.9451 9.9 13.8 9.9H16.2C17.0549 9.9 17.642 9.9007 18.0971 9.93788C18.5417 9.97421 18.7805 10.0408 18.9534 10.1289C19.3485 10.3302 19.6698 10.6515 19.8711 11.0466C19.9592 11.2195 20.0258 11.4583 20.0621 11.9029C20.0993 12.358 20.1 12.9451 20.1 13.8V16.2C20.1 17.0549 20.0993 17.642 20.0621 18.0971C20.0258 18.5417 19.9592 18.7805 19.8711 18.9534C19.6698 19.3485 19.3485 19.6698 18.9534 19.8711C18.7805 19.9592 18.5417 20.0258 18.0971 20.0621C17.642 20.0993 17.0549 20.1 16.2 20.1H13.8C12.9451 20.1 12.358 20.0993 11.9029 20.0621C11.4583 20.0258 11.2195 19.9592 11.0466 19.8711C10.6515 19.6698 10.3302 19.3485 10.1289 18.9534C10.0408 18.7805 9.97421 18.5417 9.93788 18.0971C9.9007 17.642 9.9 17.0549 9.9 16.2V13.8C9.9 12.9451 9.9007 12.358 9.93788 11.9029C9.97421 11.4583 10.0408 11.2195 10.1289 11.0466C10.3302 10.6515 10.6515 10.3302 11.0466 10.1289Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import type { Property } from 'csstype';\nimport { Component } from 'solid-js';\nimport { useTheme } from 'solid-styled-components';\n\ninterface DisconnectIconProps {\n fill?: Property.Color;\n}\n\nexport const DisconnectIcon: Component<DisconnectIconProps> = props => {\n const theme = useTheme();\n const fill = (): string => props.fill || theme.colors.icon.primary;\n\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.7624 3.10001C7.95435 3.1 7.29349 3.09999 6.75642 3.14387C6.2005 3.18929 5.69842 3.28617 5.22954 3.52508C4.4957 3.89899 3.89908 4.49561 3.52517 5.22944C3.28626 5.69833 3.18938 6.20041 3.14396 6.75632C3.10008 7.2934 3.10009 7.95424 3.1001 8.76229V15.2377C3.10009 16.0458 3.10008 16.7066 3.14396 17.2437C3.18938 17.7996 3.28626 18.3017 3.52517 18.7706C3.89908 19.5044 4.4957 20.101 5.22954 20.4749C5.69842 20.7138 6.2005 20.8107 6.75642 20.8561C7.29349 20.9 7.95434 20.9 8.76239 20.9H12.0001C12.4972 20.9 12.9001 20.4971 12.9001 20C12.9001 19.503 12.4972 19.1 12.0001 19.1H8.8001C7.94517 19.1 7.3581 19.0993 6.90299 19.0621C6.45839 19.0258 6.21956 18.9592 6.04672 18.8711C5.65158 18.6698 5.33032 18.3485 5.12898 17.9534C5.04092 17.7805 4.97431 17.5417 4.93798 17.0971C4.9008 16.642 4.9001 16.0549 4.9001 15.2V8.80001C4.9001 7.94508 4.9008 7.35801 4.93798 6.9029C4.97431 6.4583 5.04092 6.21947 5.12898 6.04663C5.33032 5.65149 5.65158 5.33023 6.04672 5.12889C6.21956 5.04082 6.45839 4.97422 6.90299 4.93789C7.3581 4.90071 7.94517 4.90001 8.8001 4.90001H12.0001C12.4972 4.90001 12.9001 4.49706 12.9001 4.00001C12.9001 3.50295 12.4972 3.10001 12.0001 3.10001H8.7624Z\"\n fill={fill()}\n />\n <path\n d=\"M17.6364 7.3636C17.2849 7.01212 16.7151 7.01212 16.3636 7.3636C16.0121 7.71507 16.0121 8.28492 16.3636 8.63639L18.8272 11.1H9.00001C8.50295 11.1 8.10001 11.5029 8.10001 12C8.10001 12.497 8.50295 12.9 9.00001 12.9H18.8272L16.3636 15.3636C16.0121 15.7151 16.0121 16.2849 16.3636 16.6364C16.7151 16.9879 17.2849 16.9879 17.6364 16.6364L21.6364 12.6364C21.9879 12.2849 21.9879 11.7151 21.6364 11.3636L17.6364 7.3636Z\"\n fill={fill()}\n />\n </svg>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nconst dropdownBorders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const AccountButtonDropdownStyled = styled.div`\n width: 256px;\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => dropdownBorders[props.theme!.borderRadius]};\n\n background-color: ${props => props.theme!.colors.background.primary}\n \n color: ${props => props.theme!.colors.text.primary}\n`;\n\nexport const UlStyled = styled.ul`\n background-color: ${props => props.theme!.colors.background.primary};\n padding: 8px;\n`;\n\nexport const MenuButtonStyled = styled.button`\n display: flex;\n align-items: center;\n gap: 8px;\n height: 40px;\n padding-left: 8px;\n width: 100%;\n\n background-color: ${props => props.theme!.colors.background.primary};\n border: none;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n cursor: pointer;\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n","import { Component, createSignal, Show, useContext } from 'solid-js';\nimport { Text } from 'src/app/components';\nimport { CopyIcon } from 'src/app/components/icons/copy-icon';\nimport { DisconnectIcon } from 'src/app/components/icons/disconnect-icon';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { CHAIN, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport { copyToClipboard } from 'src/app/utils/copy-to-clipboard';\nimport { AccountButtonDropdownStyled, MenuButtonStyled, UlStyled } from './style';\n\nconst MenuItemText: Component<{ children: string } & Translateable> = props => (\n <Text translationKey={props.translationKey} fontSize=\"15px\" fontWeight=\"590\">\n {props.children}\n </Text>\n);\n\nexport interface AccountButtonDropdownProps extends Styleable {\n onClose: () => void;\n ref: HTMLDivElement | undefined;\n}\n\nexport const AccountButtonDropdown: Component<AccountButtonDropdownProps> = props => {\n const tonConnectUi = useContext(TonConnectUiContext)!;\n const [isCopiedShown, setIsCopiedShown] = createSignal(false);\n\n const onCopy = async (): Promise<void> => {\n const userFriendlyAddress = toUserFriendlyAddress(\n tonConnectUi.account!.address,\n tonConnectUi.account!.chain === CHAIN.TESTNET\n );\n await copyToClipboard(userFriendlyAddress);\n setIsCopiedShown(true);\n\n setTimeout(() => setIsCopiedShown(false), 1000);\n };\n\n const onDisconnect = (): void => {\n tonConnectUi.disconnect();\n props.onClose();\n };\n\n return (\n <AccountButtonDropdownStyled ref={props.ref} class={props.class} data-tc-dropdown=\"true\">\n <UlStyled>\n <li>\n <MenuButtonStyled onClick={() => onCopy()}>\n <CopyIcon />\n <Show when={!isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copy\">\n Copy address\n </MenuItemText>\n </Show>\n <Show when={isCopiedShown()}>\n <MenuItemText translationKey=\"button.dropdown.copied\">\n Address copied!\n </MenuItemText>\n </Show>\n </MenuButtonStyled>\n </li>\n <li>\n <MenuButtonStyled onClick={() => onDisconnect()}>\n <DisconnectIcon />\n <MenuItemText translationKey=\"button.dropdown.disconnect\">\n Disconnect\n </MenuItemText>\n </MenuButtonStyled>\n </li>\n </UlStyled>\n </AccountButtonDropdownStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Text } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\nexport const NotificationStyled = styled.div`\n width: 256px;\n padding: 12px 16px;\n display: flex;\n gap: 9px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const NotificationContentStyled = styled.div`\n width: 192px;\n`;\n\nexport const TextStyled = styled(Text)`\n margin-top: 4px;\n color: ${props => props.theme!.colors.text.secondary};\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { H3 } from 'src/app/components';\nimport { Styleable } from 'src/app/models/styleable';\nimport { Translateable } from 'src/app/models/translateable';\nimport { PropertyRequired } from 'src/app/utils/types';\nimport { NotificationContentStyled, NotificationStyled, TextStyled } from './style';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\nimport {WithDataAttributes} from \"src/app/models/with-data-attributes\";\n\nexport interface NotificationProps extends Styleable, WithDataAttributes {\n header: PropertyRequired<Translateable, 'translationKey'>;\n children?: string;\n text?: Translateable;\n icon?: JSXElement;\n}\n\nexport const Notification: Component<NotificationProps> = props => {\n const dataAttrs = useDataAttributes(props);\n\n return (\n <NotificationStyled class={props.class} data-tc-notification=\"true\" {...dataAttrs()}>\n <NotificationContentStyled>\n <H3\n translationKey={props.header.translationKey}\n translationValues={props.header.translationValues}\n >\n {props.children}\n </H3>\n <Show when={props.text}>\n <TextStyled\n translationKey={props.text!.translationKey}\n translationValues={props.text!.translationValues}\n />\n </Show>\n </NotificationContentStyled>\n {props.icon}\n </NotificationStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { LoaderIcon } from 'src/app/components';\n\nexport const LoaderIconStyled = styled(LoaderIcon)`\n align-self: center;\n`;\n","import { Component, useContext } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { LoaderIconStyled } from 'src/app/views/account-button/notifications/confirm-operation-notification/style';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\n\ninterface ConfirmOperationNotificationProps extends Styleable {}\n\nexport const ConfirmOperationNotification: Component<ConfirmOperationNotificationProps> = props => {\n const tonConnectUI = useContext(TonConnectUiContext);\n const [t] = useI18n();\n const name = tonConnectUI!.wallet?.name || t('common.yourWallet', {}, 'your wallet');\n\n return (\n <Notification\n header={{ translationKey: 'notifications.confirm.header', translationValues: { name } }}\n class={props.class}\n icon={<LoaderIconStyled />}\n data-tc-notification-confirm=\"true\"\n >\n Confirm operation in your wallet\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { ErrorIcon } from 'src/app/components';\n\nexport const ErrorIconStyled = styled(ErrorIcon)`\n margin-top: 2px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { ErrorIconStyled } from './style';\n\ninterface ErrorTransactionNotificationProps extends Styleable {}\n\nexport const ErrorTransactionNotification: Component<ErrorTransactionNotificationProps> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionCanceled.header' }}\n text={{ translationKey: 'notifications.transactionCanceled.text' }}\n icon={<ErrorIconStyled />}\n class={props.class}\n data-tc-notification-tx-cancelled=\"true\"\n >\n Transaction cancelled\n </Notification>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { SuccessIcon } from 'src/app/components';\n\nexport const SuccessIconStyled = styled(SuccessIcon)`\n margin-top: 2px;\n`;\n","import { Component } from 'solid-js';\nimport { Notification } from 'src/app/components/notification';\nimport { Styleable } from 'src/app/models/styleable';\nimport { SuccessIconStyled } from 'src/app/views/account-button/notifications/success-transaction-notification/style';\n\ninterface SuccessTransactionNotificationProps extends Styleable {}\n\nexport const SuccessTransactionNotification: Component<\n SuccessTransactionNotificationProps\n> = props => {\n return (\n <Notification\n header={{ translationKey: 'notifications.transactionSent.header' }}\n text={{ translationKey: 'notifications.transactionSent.text' }}\n icon={<SuccessIconStyled />}\n class={props.class}\n data-tc-notification-tx-sent=\"true\"\n >\n Transaction sent\n </Notification>\n );\n};\n","import { css } from 'solid-styled-components';\n\nexport const NotificationClass = css`\n transform: translateY(-8px);\n margin-bottom: 12px;\n`;\n","import { styled } from 'solid-styled-components';\nimport { Button, LoaderIcon } from 'src/app/components';\nimport { rgba } from 'src/app/utils/css';\nimport { AccountButtonDropdown } from 'src/app/views/account-button/account-button-dropdown';\nimport { Notifications } from 'src/app/views/account-button/notifications';\n\nexport const AccountButtonStyled = styled(Button)`\n background-color: ${props => props.theme!.colors.connectButton.background};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n padding: 8px 16px 8px 12px;\n\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n`;\n\nexport const DropdownButtonStyled = styled(AccountButtonStyled)`\n padding: 12px 16px;\n min-width: 148px;\n justify-content: center;\n background-color: ${props => props.theme!.colors.background.primary};\n`;\n\nexport const LoaderButtonStyled = styled(Button)`\n min-width: 148px;\n height: 40px;\n\n background-color: ${props => props.theme!.colors.background.primary};\n color: ${props => props.theme!.colors.connectButton.foreground};\n box-shadow: ${props => `0 4px 24px ${rgba(props.theme!.colors.constant.black, 0.16)}`};\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nexport const LoaderIconStyled = styled(LoaderIcon)`\n height: 18px;\n width: 18px;\n`;\n\nexport const DropdownContainerStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n`;\n\nexport const DropdownStyled = styled(AccountButtonDropdown)<{ hidden: boolean }>`\n box-sizing: border-box;\n overflow: hidden;\n margin-top: 12px;\n`;\n\nexport const NotificationsStyled = styled(Notifications)`\n > div:first-child {\n margin-top: 20px;\n }\n`;\n","import { Component, createEffect, createSignal, For, Match, on, onCleanup, Switch } from 'solid-js';\nimport { TransitionGroup } from 'solid-transition-group';\nimport { ActionName, action } from 'src/app/state/modals-state';\nimport { ConfirmOperationNotification } from './confirm-operation-notification';\nimport { ErrorTransactionNotification } from './error-transaction-notification';\nimport { SuccessTransactionNotification } from './success-transaction-notification';\nimport { NotificationClass } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface NotificationsProps extends Styleable {}\n\nexport const Notifications: Component<NotificationsProps> = props => {\n const timeouts: ReturnType<typeof setTimeout>[] = [];\n\n const [openedNotifications, setOpenedNotifications] = createSignal<\n { id: number; action: ActionName }[]\n >([]);\n\n let lastId = -1;\n const liveTimeoutMs = 4500;\n\n createEffect(\n on(action, action => {\n if (action && action.showNotification) {\n lastId++;\n const id = lastId;\n\n setOpenedNotifications(notifications =>\n notifications\n .filter(notification => notification.action !== 'confirm-transaction')\n .concat({ id, action: action.name })\n );\n timeouts.push(\n setTimeout(\n () =>\n setOpenedNotifications(notifications =>\n notifications.filter(notification => notification.id !== id)\n ),\n liveTimeoutMs\n )\n );\n }\n })\n );\n\n onCleanup(() => {\n timeouts.forEach(clearTimeout);\n });\n\n return (\n <div class={props.class} data-tc-list-notifications=\"true\">\n <TransitionGroup\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(0)' },\n { opacity: 1, transform: 'translateY(-8px)' }\n ],\n {\n duration: 200\n }\n );\n }}\n onExit={(el, done) => {\n const a = el.animate(\n [\n { opacity: 1, transform: 'translateY(-8px)' },\n { opacity: 0, transform: 'translateY(-30px)' }\n ],\n {\n duration: 200\n }\n );\n a.finished.then(done);\n }}\n >\n <For each={openedNotifications()}>\n {openedNotification => (\n <Switch>\n <Match when={openedNotification.action === 'transaction-sent'}>\n <SuccessTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'transaction-canceled'}>\n <ErrorTransactionNotification class={NotificationClass} />\n </Match>\n <Match when={openedNotification.action === 'confirm-transaction'}>\n <ConfirmOperationNotification class={NotificationClass} />\n </Match>\n </Switch>\n )}\n </For>\n </TransitionGroup>\n </div>\n );\n};\n","function getSide(placement) {\n return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n const commonAlign = reference[length] / 2 - floating[length] / 2;\n const side = getSide(placement);\n const isVertical = mainAxis === 'x';\n let coords;\n\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n\n switch (getAlignment(placement)) {\n case 'start':\n coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n\n case 'end':\n coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n if (process.env.NODE_ENV !== \"production\") {\n if (platform == null) {\n console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n }\n\n if (validMiddleware.filter(_ref => {\n let {\n name\n } = _ref;\n return name === 'autoPlacement' || name === 'flip';\n }).length > 1) {\n throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement` middleware', 'detected. This will lead to an infinite loop. Ensure only one of', 'either has been passed to the `middleware` array.'].join(' '));\n }\n\n if (!reference || !floating) {\n console.error(['Floating UI: The reference and/or floating element was not defined', 'when `computePosition()` was called. Ensure that both elements have', 'been created and can be measured.'].join(' '));\n }\n }\n\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = { ...middlewareData,\n [name]: { ...middlewareData[name],\n ...data\n }\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n if (resetCount > 50) {\n console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n }\n }\n\n if (reset && resetCount <= 50) {\n resetCount++;\n\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n\n i = -1;\n continue;\n }\n }\n\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\n\nfunction getSideObjectFromPadding(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\n\nfunction rectToClientRect(rect) {\n return { ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n var _await$platform$isEle;\n\n if (options === void 0) {\n options = {};\n }\n\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = middlewareArguments;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = options;\n const paddingObject = getSideObjectFromPadding(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? { ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n\n if (process.env.NODE_ENV !== \"production\") ;\n\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n\n async fn(middlewareArguments) {\n // Since `element` is required, we don't Partial<> the type\n const {\n element,\n padding = 0\n } = options != null ? options : {};\n const {\n x,\n y,\n placement,\n rects,\n platform\n } = middlewareArguments;\n\n if (element == null) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n }\n\n return {};\n }\n\n const paddingObject = getSideObjectFromPadding(padding);\n const coords = {\n x,\n y\n };\n const axis = getMainAxisFromPlacement(placement);\n const alignment = getAlignment(placement);\n const length = getLengthFromAxis(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const minProp = axis === 'y' ? 'top' : 'left';\n const maxProp = axis === 'y' ? 'bottom' : 'right';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n if (clientSize === 0) {\n clientSize = rects.floating[length];\n }\n\n const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds\n\n const min = paddingObject[minProp];\n const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset\n }\n };\n }\n\n});\n\nconst hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n\n const alignment = getAlignment(placement);\n const mainAxis = getMainAxisFromPlacement(placement);\n const length = getLengthFromAxis(mainAxis);\n let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n\n return {\n main: mainAlignmentSide,\n cross: getOppositePlacement(mainAlignmentSide)\n };\n}\n\nconst hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n\n return true;\n });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'autoPlacement',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n const {\n x,\n y,\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = middlewareArguments;\n const {\n alignment = null,\n allowedPlacements = allPlacements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = options;\n const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n const currentPlacement = placements[currentIndex];\n\n if (currentPlacement == null) {\n return {};\n }\n\n const {\n main,\n cross\n } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n if (placement !== currentPlacement) {\n return {\n x,\n y,\n reset: {\n placement: placements[0]\n }\n };\n }\n\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n let {\n overflows\n } = _ref;\n return overflows.every(overflow => overflow <= 0);\n })) == null ? void 0 : _placementsSortedByLe.placement;\n const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'flip',\n options,\n\n async fn(middlewareArguments) {\n var _middlewareData$flip;\n\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n flipAlignment = true,\n ...detectOverflowOptions\n } = options;\n const side = getSide(placement);\n const isBasePlacement = side === initialPlacement;\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n\n if (checkCrossAxis) {\n const {\n main,\n cross\n } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n overflows.push(overflow[main], overflow[cross]);\n }\n\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }]; // One or more sides is overflowing\n\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip$, _middlewareData$flip2;\n\n const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n const nextPlacement = placements[nextIndex];\n\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n let resetPlacement = 'bottom';\n\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n if (placement) {\n resetPlacement = placement;\n }\n\n break;\n }\n\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n\n return {};\n }\n\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n let {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = _temp === void 0 ? {} : _temp;\n return {\n name: 'hide',\n\n async fn(middlewareArguments) {\n const {\n rects\n } = middlewareArguments;\n\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n case 'escaped':\n {\n const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n\n default:\n {\n return {};\n }\n }\n }\n\n };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n const {\n placement,\n platform,\n elements\n } = middlewareArguments;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getMainAxisFromPlacement(placement) === 'x';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n if (value === void 0) {\n value = 0;\n }\n\n return {\n name: 'offset',\n options: value,\n\n async fn(middlewareArguments) {\n const {\n x,\n y\n } = middlewareArguments;\n const diffCoords = await convertValueToCoords(middlewareArguments, value);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n\n };\n};\n\nfunction getCrossAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'shift',\n options,\n\n async fn(middlewareArguments) {\n const {\n x,\n y,\n placement\n } = middlewareArguments;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = options;\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const mainAxis = getMainAxisFromPlacement(getSide(placement));\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = within(min, mainAxisCoord, max);\n }\n\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = within(min, crossAxisCoord, max);\n }\n\n const limitedCoords = limiter.fn({ ...middlewareArguments,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return { ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n options,\n\n fn(middlewareArguments) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = middlewareArguments;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = options;\n const coords = {\n x,\n y\n };\n const mainAxis = getMainAxisFromPlacement(placement);\n const crossAxis = getCrossAxis(mainAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = typeof offset === 'function' ? offset(middlewareArguments) : offset;\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n\n };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'size',\n options,\n\n async fn(middlewareArguments) {\n const {\n placement,\n rects,\n platform,\n elements\n } = middlewareArguments;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = options;\n const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n let heightSide;\n let widthSide;\n\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n const dimensions = {\n availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n };\n await apply({ ...middlewareArguments,\n ...dimensions\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n\n if (rects.floating.width !== nextDimensions.width || rects.floating.height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n name: 'inline',\n options,\n\n async fn(middlewareArguments) {\n var _await$platform$getCl;\n\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n\n const {\n padding = 2,\n x,\n y\n } = options;\n const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect: rects.reference,\n offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n strategy\n }) : rects.reference);\n const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n const paddingObject = getSideObjectFromPadding(padding);\n\n function getBoundingClientRect() {\n // There are two rects and they are disjoined\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n var _clientRects$find;\n\n // Find the first rect in which the point is fully inside\n return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n } // There are 2 or more connected rects\n\n\n if (clientRects.length >= 2) {\n if (getMainAxisFromPlacement(placement) === 'x') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n\n return fallback;\n }\n\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n\n return {};\n }\n\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, rectToClientRect, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction getNodeName(node) {\n return isNode(node) ? (node.nodeName || '').toLowerCase() : '';\n}\n\nlet uaString;\nfunction getUAString() {\n if (uaString) {\n return uaString;\n }\n\n const uaData = navigator.userAgentData;\n\n if (uaData && Array.isArray(uaData.brands)) {\n uaString = uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n return uaString;\n }\n\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try and use feature detection here instead\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle(element);\n const backdropFilter = css.backdropFilter || css.WebkitBackdropFilter; // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n return css.transform !== 'none' || css.perspective !== 'none' || (backdropFilter ? backdropFilter !== 'none' : false) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat\n value => {\n const contain = css.contain;\n return contain != null ? contain.includes(value) : false;\n });\n}\nfunction isLayoutViewport() {\n // Not Safari\n return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways\n // • Always-visible scrollbar or not\n // • Width of <html>, etc.\n // const vV = win.visualViewport;\n // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nconst FALLBACK_SCALE = {\n x: 1,\n y: 1\n};\nfunction getScale(element) {\n const domElement = !isElement(element) && element.contextElement ? element.contextElement : isElement(element) ? element : null;\n\n if (!domElement) {\n return FALLBACK_SCALE;\n }\n\n const rect = domElement.getBoundingClientRect();\n const css = getComputedStyle(domElement); // Would need to take into account borders, padding, and potential scrollbars\n // which would require a lot of code. Fallback to the old technique to\n // determine scale.\n\n if (css.boxSizing !== 'border-box') {\n if (!isHTMLElement(domElement)) {\n return FALLBACK_SCALE;\n }\n\n return {\n x: domElement.offsetWidth > 0 ? round(rect.width) / domElement.offsetWidth || 1 : 1,\n y: domElement.offsetHeight > 0 ? round(rect.height) / domElement.offsetHeight || 1 : 1\n };\n }\n\n let x = rect.width / parseFloat(css.width);\n let y = rect.height / parseFloat(css.height); // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n\n return {\n x,\n y\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;\n\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n const clientRect = element.getBoundingClientRect();\n let scale = FALLBACK_SCALE;\n\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n\n const win = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scale.x;\n const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scale.y;\n const width = clientRect.width / scale.x;\n const height = clientRect.height / scale.y;\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, true, strategy === 'fixed', offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n\n const result = // Step into the shadow DOM of the parent of a slotted node\n node.assignedSlot || // DOM Element detected\n node.parentNode || ( // ShadowRoot detected\n isShadowRoot(node) ? node.host : null) || // Fallback\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n}\n\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getDimensions(element) {\n if (isHTMLElement(element)) {\n return {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n\n const rect = getBoundingClientRect(element);\n return {\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n\n if (offsetParent === documentElement) {\n return rect;\n }\n\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = {\n x: 1,\n y: 1\n };\n const offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } // This doesn't appear to need to be negated.\n // else if (documentElement) {\n // offsets.x = getWindowScrollBarX(documentElement);\n // }\n\n }\n\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n\n if (isLastTraversableNode(parentNode)) {\n // @ts-ignore assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n\n if (list === void 0) {\n list = [];\n }\n\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\n// Returns the inner client rect, subtracting scrollbars if present\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : {\n x: 1,\n y: 1\n };\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y,\n width,\n height\n };\n}\n\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n if (clippingAncestor === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n\n if (isElement(clippingAncestor)) {\n return getInnerBoundingClientRect(clippingAncestor, strategy);\n }\n\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\n\n\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element; // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const containingBlock = isContainingBlock(currentNode);\n const shouldDropCurrentNode = elementIsFixed ? !containingBlock && !currentContainingBlockComputedStyle : !containingBlock && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position);\n\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration\n currentContainingBlockComputedStyle = computedStyle;\n }\n\n currentNode = getParentNode(currentNode);\n }\n\n cache.set(element, result);\n return result;\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors\n\n\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n\n if (!isElement(reference) && reference.contextElement && !animationFrame) {\n observer.observe(reference.contextElement);\n }\n\n observer.observe(floating);\n }\n\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n\n if (animationFrame) {\n frameLoop();\n }\n\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n\n update();\n return () => {\n var _observer;\n\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\n\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = { ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, { ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { Component, createSignal, onCleanup, onMount, Show, useContext } from 'solid-js';\nimport { ArrowIcon, Text, TonIcon } from 'src/app/components';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { Account, toUserFriendlyAddress } from '@tonconnect/sdk';\nimport {\n AccountButtonStyled,\n DropdownButtonStyled,\n DropdownContainerStyled,\n DropdownStyled,\n LoaderButtonStyled,\n LoaderIconStyled,\n NotificationsStyled\n} from './style';\nimport { Dynamic, Portal } from 'solid-js/web';\nimport { useFloating } from 'solid-floating-ui';\nimport { autoUpdate } from '@floating-ui/dom';\nimport { Transition } from 'solid-transition-group';\nimport { useTheme } from 'solid-styled-components';\nimport { CHAIN } from '@tonconnect/protocol';\nimport { globalStylesTag } from 'src/app/styles/global-styles';\n\ninterface AccountButtonProps {}\n\nexport const AccountButton: Component<AccountButtonProps> = () => {\n const theme = useTheme();\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext)!;\n const [isOpened, setIsOpened] = createSignal(false);\n const [account, setAccount] = createSignal<Account | null>(connector.account);\n const [restoringProcess, setRestoringProcess] = createSignal<boolean>(true);\n\n let dropDownRef: HTMLDivElement | undefined;\n\n const [floating, setFloating] = createSignal<HTMLDivElement | undefined>();\n const [anchor, setAnchor] = createSignal<HTMLButtonElement | undefined>();\n\n const position = useFloating(anchor, floating, {\n whileElementsMounted: autoUpdate,\n placement: 'bottom-end'\n });\n\n const normalizedAddress = (): string => {\n const acc = account();\n if (acc) {\n const userFriendlyAddress = toUserFriendlyAddress(\n acc.address,\n acc.chain === CHAIN.TESTNET\n );\n return userFriendlyAddress.slice(0, 4) + '…' + userFriendlyAddress.slice(-4);\n }\n\n return '';\n };\n\n tonConnectUI.connectionRestored.then(() => setRestoringProcess(false));\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (!wallet) {\n setIsOpened(false);\n setAccount(null);\n return;\n }\n\n setAccount(wallet.account);\n });\n\n const onClick = (e: Event): void | boolean => {\n if (!account() || !isOpened()) {\n return;\n }\n const clickToButton = anchor()!.contains(e.target as Node);\n const clickToDropdown = dropDownRef!.contains(e.target as Node);\n\n if (!clickToButton && !clickToDropdown) {\n setIsOpened(false);\n }\n };\n\n onMount(() => {\n document.body.addEventListener('click', onClick);\n });\n\n onCleanup(() => {\n document.body.removeEventListener('click', onClick);\n unsubscribe();\n });\n\n return (\n <Dynamic component={globalStylesTag}>\n <Show when={restoringProcess()}>\n <LoaderButtonStyled disabled={true} data-tc-connect-button-loading=\"true\">\n <LoaderIconStyled />\n </LoaderButtonStyled>\n </Show>\n <Show when={!restoringProcess()}>\n <Show when={!account()}>\n <AccountButtonStyled\n onClick={() => tonConnectUI.connectWallet()}\n data-tc-connect-button=\"true\"\n >\n <TonIcon fill={theme.colors.connectButton.foreground} />\n <Text\n translationKey=\"button.connectWallet\"\n fontSize=\"15px\"\n lineHeight=\"18px\"\n fontWeight=\"590\"\n color={theme.colors.connectButton.foreground}\n >\n Connect wallet\n </Text>\n </AccountButtonStyled>\n </Show>\n <Show when={account()}>\n <DropdownContainerStyled>\n <DropdownButtonStyled\n onClick={() => setIsOpened(v => !v)}\n ref={setAnchor}\n data-tc-dropdown-button=\"true\"\n >\n <Text fontSize=\"15px\" fontWeight=\"590\" lineHeight=\"18px\">\n {normalizedAddress()}\n </Text>\n <ArrowIcon direction=\"bottom\" />\n </DropdownButtonStyled>\n <Portal>\n <tc-root\n ref={setFloating}\n style={{\n position: position.strategy,\n top: `${position.y ?? 0}px`,\n left: `${position.x ?? 0}px`,\n 'z-index': 999\n }}\n data-tc-dropdown-container=\"true\"\n >\n <Transition\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(-8px)' },\n { opacity: 1, transform: 'translateY(0)' }\n ],\n {\n duration: 150\n }\n );\n }}\n onExit={(el, done) => {\n const a = el.animate(\n [\n { opacity: 1, transform: 'translateY(0)' },\n { opacity: 0, transform: 'translateY(-8px)' }\n ],\n {\n duration: 150\n }\n );\n a.finished.then(done);\n }}\n >\n <Show when={isOpened()}>\n <DropdownStyled\n hidden={!isOpened()}\n onClose={() => setIsOpened(false)}\n ref={dropDownRef}\n />\n </Show>\n </Transition>\n <NotificationsStyled />\n </tc-root>\n </Portal>\n </DropdownContainerStyled>\n </Show>\n </Show>\n </Dynamic>\n );\n};\n","import{createEffect as f,createMemo as R,createSignal as g,onCleanup as y}from\"solid-js\";import{computePosition as E}from\"@floating-ui/dom\";function P(l,u,e){let c=()=>{var t;return(t=e==null?void 0:e.placement)!=null?t:\"bottom\"},d=()=>{var t;return(t=e==null?void 0:e.strategy)!=null?t:\"absolute\"},[n,o]=g({x:null,y:null,placement:c(),strategy:d(),middlewareData:{}}),[x,F]=g();f(()=>{let t=x();if(t)throw t.value});let s=R(()=>(l(),u(),{}));function i(){let t=l(),r=u();if(t&&r){let a=s();E(t,r,{middleware:e==null?void 0:e.middleware,placement:c(),strategy:d()}).then(m=>{a===s()&&o(m)},m=>{F(m)})}}return f(()=>{let t=l(),r=u();if(e==null||e.middleware,c(),d(),t&&r)if(e!=null&&e.whileElementsMounted){let a=e.whileElementsMounted(t,r,i);a&&y(a)}else i()}),{get x(){return n().x},get y(){return n().y},get placement(){return n().placement},get strategy(){return n().strategy},get middlewareData(){return n().middlewareData},update:i}}export{P as useFloating};\n","import { styled } from 'solid-styled-components';\nimport {Button, H1, IconButton, QRCode, Text} from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nexport const QrCodeModalStyled = styled.div``;\n\nexport const H1Styled = styled(H1)`\n max-width: 320px;\n margin: 0 auto 6px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n position: absolute;\n top: 16px;\n left: 16px;\n`;\n\nexport const QRStyled = styled(QRCode)`\n margin-bottom: 16px;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n gap: 16px;\n height: 56px;\n margin-bottom: 24px;\n`;\n\nexport const ActionButtonStyled = styled(Button)`\n padding: 0 16px;\n height: 56px;\n font-size: 16px;\n line-height: 20px;\n width: 100%;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n`;\n\nexport const GetWalletStyled = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const TextStyled = styled(Text)`\n padding-left: 8px;\n color: ${props => props.theme!.colors.text.secondary};\n font-size: 16px;\n`;\n","import { ConnectAdditionalRequest, ITonConnect } from '@tonconnect/sdk';\nimport { createStore } from 'solid-js/store';\nimport { Locales } from 'src/models/locales';\nimport { WalletsListConfiguration } from 'src/models/wallets-list-configuration';\nimport { ReturnStrategy } from 'src/models/return-strategy';\nimport { Loadable } from 'src/models/loadable';\n\nexport type AppState = {\n connector: ITonConnect;\n buttonRootId: string | null;\n language: Locales;\n walletsListConfiguration: WalletsListConfiguration | {};\n connectRequestParameters?: Loadable<ConnectAdditionalRequest> | null;\n returnStrategy: ReturnStrategy;\n preferredWalletName: string | undefined;\n};\n\nexport const [appState, setAppState] = createStore<AppState>({\n buttonRootId: null,\n language: 'en',\n returnStrategy: 'back',\n walletsListConfiguration: {}\n} as AppState);\n","import { styled } from 'solid-styled-components';\n\nexport const AStyled = styled.a`\n display: block;\n text-decoration: unset;\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { AStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface LinkProps extends Styleable {\n children: JSXElement;\n\n href: string;\n\n blank?: boolean;\n}\n\nexport const Link: Component<LinkProps> = props => {\n const attributes = (): { rel: 'noreferrer noopener' } | {} =>\n props.blank ? { rel: 'noreferrer noopener' } : {};\n\n return (\n <AStyled href={props.href} target={props.blank ? '_blank' : '_self'} {...attributes}>\n {props.children}\n </AStyled>\n );\n};\n","import {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyInjected,\n WalletInfoCurrentlyInjected,\n WalletInfoInjectable,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport { Component, createMemo, Show, useContext } from 'solid-js';\nimport { Button, H2 } from 'src/app/components';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n ActionButtonStyled,\n ButtonsContainerStyled,\n GetWalletStyled,\n H1Styled,\n QrCodeModalStyled,\n QRStyled,\n StyledIconButton,\n TextStyled\n} from './style';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { addReturnStrategy, openLinkBlank } from 'src/app/utils/web-api';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { appState } from 'src/app/state/app.state';\nimport { Link } from 'src/app/components/link';\n\nexport interface QrCodeModalProps {\n additionalRequest?: ConnectAdditionalRequest;\n wallet: WalletInfoRemote | (WalletInfoRemote & WalletInfoInjectable);\n onBackClick: () => void;\n}\n\nexport const QrCodeModal: Component<QrCodeModalProps> = props => {\n const connector = useContext(ConnectorContext)!;\n const universalLink = createMemo(() =>\n connector.connect(\n {\n universalLink: props.wallet.universalLink,\n bridgeUrl: props.wallet.bridgeUrl\n },\n props.additionalRequest\n )\n );\n\n return (\n <QrCodeModalStyled data-tc-wallet-qr-modal-desktop=\"true\">\n <StyledIconButton icon=\"arrow\" onClick={() => props.onBackClick()} />\n <H1Styled\n translationKey=\"walletModal.qrCodeModal.connectWith\"\n translationValues={{ name: props.wallet.name }}\n >\n Connect with {props.wallet.name}\n </H1Styled>\n <H2\n translationKey=\"walletModal.qrCodeModal.scan\"\n translationValues={{ name: props.wallet.name }}\n >\n Scan QR code with your phone’s or {props.wallet.name}’s camera.\n </H2>\n <QRStyled\n disableCopy={false}\n sourceUrl={universalLink()}\n imageUrl={props.wallet.imageUrl}\n />\n <ButtonsContainerStyled>\n <ActionButtonStyled\n scale=\"s\"\n onClick={() => {\n setLastSelectedWalletInfo({\n ...props.wallet,\n openMethod: 'universal-link'\n });\n openLinkBlank(addReturnStrategy(universalLink(), appState.returnStrategy));\n }}\n >\n <Translation\n translationKey=\"walletModal.qrCodeModal.openWallet\"\n translationValues={{ name: props.wallet.name }}\n >\n Open {props.wallet.name}\n </Translation>\n </ActionButtonStyled>\n <Show when={isWalletInfoCurrentlyInjected(props.wallet)}>\n <ActionButtonStyled\n scale=\"s\"\n onClick={() => {\n setLastSelectedWalletInfo(props.wallet as WalletInfoCurrentlyInjected);\n connector.connect(\n {\n jsBridgeKey: (props.wallet as WalletInfoCurrentlyInjected)\n .jsBridgeKey\n },\n props.additionalRequest\n );\n }}\n >\n <Translation translationKey=\"common.openExtension\">\n Open Extension\n </Translation>\n </ActionButtonStyled>\n </Show>\n </ButtonsContainerStyled>\n <GetWalletStyled>\n <TextStyled\n translationKey=\"walletModal.qrCodeModal.dontHave\"\n translationValues={{ name: props.wallet.name }}\n >\n Don't have {props.wallet.name}?\n </TextStyled>\n <Link href={props.wallet.aboutUrl} blank>\n <Button>\n <Translation translationKey=\"common.get\">GET</Translation>\n </Button>\n </Link>\n </GetWalletStyled>\n </QrCodeModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { H1, Modal, TabBar, Text } from 'src/app/components';\nimport { media } from 'src/app/styles/media';\n\nexport const StyledModal = styled(Modal)`\n padding-left: 24px;\n padding-right: 24px;\n\n ${media('mobile')} {\n padding-left: 0;\n padding-right: 0;\n\n min-height: 364px;\n }\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 12px;\n\n ${media('mobile')} {\n padding: 0 10px;\n }\n`;\n\nexport const LoaderContainerStyled = styled.div`\n margin: 30px 0;\n width: 100%;\n display: flex;\n justify-content: center;\n\n ${media('mobile')} {\n height: 160px;\n align-items: center;\n }\n`;\n\nexport const TabTextStyled = styled(Text)`\n min-width: 84px;\n text-align: center;\n font-weight: 590;\n`;\n\nexport const TabBarStyled = styled(TabBar)`\n margin: 0 auto 22px;\n`;\n","import { Component, JSXElement } from 'solid-js';\nimport { InputStyled, LabelStyled, SliderStyled, TabBarStyled } from './style';\nimport { Styleable } from 'src/app/models/styleable';\n\nexport interface TabBarProps extends Styleable {\n tab1: JSXElement;\n tab2: JSXElement;\n\n selectedTabIndex: number;\n\n onSelectedTabIndexChange?: (index: number) => void;\n}\n\nexport const TabBar: Component<TabBarProps> = props => {\n const groupName = 'tabBar' + Math.floor(Math.random() * 10000);\n\n return (\n <TabBarStyled class={props.class} data-tc-tab-bar=\"true\">\n <SliderStyled right={props.selectedTabIndex === 1} />\n <LabelStyled isActive={props.selectedTabIndex === 0}>\n <InputStyled\n type=\"radio\"\n name={groupName}\n onInput={() => props.onSelectedTabIndexChange?.(0)}\n />\n {props.tab1}\n </LabelStyled>\n <LabelStyled isActive={props.selectedTabIndex === 1}>\n <InputStyled\n type=\"radio\"\n name={groupName}\n onInput={() => props.onSelectedTabIndexChange?.(1)}\n />\n {props.tab2}\n </LabelStyled>\n </TabBarStyled>\n );\n};\n","import { WalletInfo, TonConnect } from '@tonconnect/sdk';\nimport { UIWallet } from 'src/models/ui-wallet';\nimport { WalletsListConfiguration } from 'src/models';\nimport { mergeConcat } from 'src/app/utils/array';\n\nexport function uiWalletToWalletInfo(uiWallet: UIWallet): WalletInfo {\n if ('jsBridgeKey' in uiWallet) {\n return {\n ...uiWallet,\n injected: TonConnect.isWalletInjected(uiWallet.jsBridgeKey),\n embedded: TonConnect.isInsideWalletBrowser(uiWallet.jsBridgeKey)\n };\n }\n\n return uiWallet;\n}\n\nexport function applyWalletsListConfiguration(\n walletsList: WalletInfo[],\n configuration?: WalletsListConfiguration\n): WalletInfo[] {\n if (!configuration) {\n return walletsList;\n }\n\n if (configuration.includeWallets?.length) {\n walletsList = mergeConcat(\n 'name',\n walletsList,\n configuration.includeWallets.map(uiWalletToWalletInfo)\n );\n }\n\n return walletsList;\n}\n","export function uniq<T>(array: T[]): T[] {\n return [...new Set(array)];\n}\n\nexport function mergeConcat<K extends PropertyKey, T extends Record<K, unknown>>(\n idKey: K,\n array1: T[],\n array2: T[]\n): T[] {\n return array1\n .map(item1 => {\n const item2 = array2.find(elem => elem[idKey] === item1[idKey]);\n array2 = array2.filter(elem => elem[idKey] !== item1[idKey]);\n\n return item2 === undefined ? item1 : item2;\n })\n .concat(array2);\n}\n","import { createSignal } from 'solid-js';\nimport { isDevice } from 'src/app/styles/media';\nimport { getWindow } from 'src/app/utils/web-api';\n\nconst [isMobile, setIsMobile] = createSignal(isDevice('mobile'));\n\nif (getWindow()) {\n window.addEventListener('resize', () => setIsMobile(isDevice('mobile')));\n}\n\nexport default isMobile;\n","import { styled } from 'solid-styled-components';\nimport { Button, H2 } from 'src/app/components';\nimport { rgba } from 'src/app/utils/css';\nimport { mediaNotTouch, mediaTouch } from 'src/app/styles/media';\n\nexport const UlStyled = styled.ul`\n display: flex;\n margin: 0 auto 24px;\n width: fit-content;\n min-height: 124px;\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n padding: 0 24px;\n\n &&::-webkit-scrollbar {\n display: none;\n }\n\n -ms-overflow-style: none;\n scrollbar-width: none;\n`;\n\nexport const DefaultWallet = styled.li`\n width: 82px;\n min-width: 82px;\n height: 124px;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 8px 4px;\n\n text-align: center;\n cursor: pointer;\n\n transition: transform 0.1s ease-in-out;\n\n ${mediaNotTouch} {\n &:hover {\n transform: scale(1.04);\n }\n }\n\n &:active {\n transform: scale(0.96);\n }\n\n ${mediaTouch} {\n &:active {\n transform: scale(0.92);\n }\n }\n`;\n\nexport const Divider = styled.div`\n width: 1px;\n margin: 0 10px;\n height: 24px;\n position: relative;\n top: 30px;\n\n background-color: ${props => props.theme!.colors.icon.tertiary};\n`;\n\nexport const LongArrowIconContainer = styled.div`\n width: 64px;\n height: 64px;\n border-radius: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: ${props => rgba(props.theme!.colors.accent, 0.12)};\n color: ${props => props.theme!.colors.accent};\n\n margin-bottom: 8px;\n`;\n\nexport const H2Styled = styled(H2)`\n margin-bottom: 24px;\n padding: 0 24px;\n min-height: 44px;\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto;\n`;\n","export const LINKS = {\n LEARN_MORE: 'https://ton.org/wallets'\n};\n","import { ConnectAdditionalRequest, isWalletInfoRemote, WalletInfo } from '@tonconnect/sdk';\nimport { Component, For } from 'solid-js';\nimport { H1, LongArrowIcon, WalletItem, Text } from 'src/app/components';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport {\n ButtonStyled,\n DefaultWallet,\n Divider,\n H2Styled,\n LongArrowIconContainer,\n UlStyled\n} from './style';\nimport { addReturnStrategy, openLink, openLinkBlank } from 'src/app/utils/web-api';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { appState } from 'src/app/state/app.state';\nimport { LINKS } from 'src/app/env/LINKS';\nimport { Link } from 'src/app/components/link';\nimport { useTheme } from 'solid-styled-components';\n\ninterface MobileSelectWalletModalProps {\n walletsList: WalletInfo[];\n\n additionalRequest: ConnectAdditionalRequest;\n}\n\nexport const MobileSelectWalletModal: Component<MobileSelectWalletModalProps> = props => {\n const connector = appState.connector;\n const theme = useTheme();\n\n const onSelect = (walletInfo: WalletInfo): void => {\n if ('universalLink' in walletInfo) {\n setLastSelectedWalletInfo({ ...walletInfo, openMethod: 'universal-link' });\n\n const universalLink = connector.connect(\n {\n universalLink: walletInfo.universalLink,\n bridgeUrl: walletInfo.bridgeUrl\n },\n props.additionalRequest\n );\n\n openLink(addReturnStrategy(universalLink, appState.returnStrategy));\n return;\n }\n\n openLinkBlank(walletInfo.aboutUrl);\n };\n\n const onSelectUniversal = (): void => {\n const universalLink = connector.connect(\n props.walletsList\n .filter(isWalletInfoRemote)\n .map(item => ({ bridgeUrl: item.bridgeUrl, universalLink: item.universalLink })),\n props.additionalRequest\n );\n\n setLastSelectedWalletInfo({ openMethod: 'universal-link' });\n\n openLink(addReturnStrategy(universalLink, appState.returnStrategy));\n };\n\n return (\n <div data-tc-wallets-modal-mobile=\"true\">\n <H1 translationKey=\"walletModal.mobileSelectWalletModal.connectWallet\">\n Connect a wallet\n </H1>\n <H2Styled translationKey=\"walletModal.mobileSelectWalletModal.selectWallet\">\n Select your wallet from the options to get started.\n </H2Styled>\n <UlStyled>\n <DefaultWallet onClick={onSelectUniversal}>\n <LongArrowIconContainer>\n <LongArrowIcon fill={theme!.colors.accent} />\n </LongArrowIconContainer>\n <Text\n fontWeight={590}\n translationKey=\"walletModal.mobileSelectWalletModal.installedWallet\"\n >\n Installed wallet\n </Text>\n </DefaultWallet>\n <Divider>&nbsp;</Divider>\n <For each={props.walletsList.filter(wallet => 'bridgeUrl' in wallet)}>\n {wallet => (\n <li>\n <WalletItem\n iconUrl={wallet.imageUrl}\n name={wallet.name}\n onClick={() => onSelect(wallet)}\n />\n </li>\n )}\n </For>\n </UlStyled>\n <Link href={LINKS.LEARN_MORE} blank>\n <ButtonStyled>\n <Translation translationKey=\"common.learnMore\">Learn more</Translation>\n </ButtonStyled>\n </Link>\n </div>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H2, QRCode, Text, Image } from 'src/app/components';\nimport { BorderRadiusConfig } from 'src/app/models/border-radius-config';\n\nconst borders: BorderRadiusConfig = {\n m: '16px',\n s: '8px',\n none: '0'\n};\n\nconst hoverBorders: BorderRadiusConfig = {\n m: '8px',\n s: '4px',\n none: '0'\n};\n\nexport const UniversalQrModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const H2Styled = styled(H2)`\n max-width: 320px;\n margin-bottom: 24px;\n`;\n\nexport const QRCodeStyled = styled(QRCode)`\n margin-bottom: 16px;\n`;\n\nexport const ButtonsContainerStyled = styled.div`\n display: flex;\n gap: 16px;\n width: 100%;\n`;\n\nexport const ActionButtonStyled = styled(Button)<{ disableEventsAnimation?: boolean }>`\n position: relative;\n font-size: 16px;\n line-height: 20px;\n width: 100%;\n padding: 0 16px;\n height: 56px;\n border-radius: ${props => borders[props.theme!.borderRadius]};\n\n &:hover {\n ${props => (props.disableEventsAnimation ? 'transform: unset;' : '')}\n }\n\n &:active {\n ${props => (props.disableEventsAnimation ? 'transform: unset;' : '')}\n }\n`;\n\nexport const PopupWrapperStyled = styled.ul`\n position: absolute;\n bottom: 100%;\n left: 0;\n margin: 0;\n padding: 8px;\n width: 188px;\n transform: translateY(-16px);\n\n background-color: ${props => props.theme!.colors.background.primary};\n border-radius: ${props => borders[props.theme!.borderRadius]};\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.16);\n`;\n\nexport const ExtensionLiStyled = styled.li`\n padding: 8px;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n cursor: pointer;\n border-radius: ${props => hoverBorders[props.theme!.borderRadius]};\n\n transition: background-color, transform 0.1s ease-in-out;\n\n &:hover {\n background-color: ${props => props.theme!.colors.background.secondary};\n }\n\n &:active {\n transform: scale(0.96);\n }\n`;\n\nexport const ImageStyled = styled(Image)`\n width: 24px;\n height: 24px;\n\n border-radius: 6px;\n`;\n\nexport const GetWalletStyled = styled.div`\n margin-top: 23px;\n margin-bottom: 1px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const TextStyled = styled(Text)`\n color: ${props => props.theme!.colors.text.secondary};\n font-size: 16px;\n`;\n","import { Component, createMemo, createSignal, For, Show } from 'solid-js';\nimport {\n UniversalQrModalStyled,\n H2Styled,\n QRCodeStyled,\n ButtonsContainerStyled,\n ActionButtonStyled,\n PopupWrapperStyled,\n GetWalletStyled,\n ExtensionLiStyled,\n ImageStyled\n} from './style';\nimport {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyInjected,\n isWalletInfoRemote,\n WalletInfo,\n WalletInfoCurrentlyInjected\n} from '@tonconnect/sdk';\nimport { appState } from 'src/app/state/app.state';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { addReturnStrategy, openLink } from 'src/app/utils/web-api';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { Transition } from 'solid-transition-group';\nimport { Button, Text } from 'src/app/components';\nimport { LINKS } from 'src/app/env/LINKS';\nimport { Link } from 'src/app/components/link';\nimport { css } from 'solid-styled-components';\n\ninterface UniversalQrModalProps {\n additionalRequest: ConnectAdditionalRequest;\n\n walletsList: WalletInfo[];\n}\n\nexport const UniversalQrModal: Component<UniversalQrModalProps> = props => {\n const [popupOpened, setPopupOpened] = createSignal(false);\n const connector = appState.connector;\n\n const walletsBridges = props.walletsList\n .filter(isWalletInfoRemote)\n .map(item => ({ bridgeUrl: item.bridgeUrl, universalLink: item.universalLink }));\n const availableInjectableWallets = props.walletsList.filter(isWalletInfoCurrentlyInjected);\n\n setLastSelectedWalletInfo({ openMethod: 'qrcode' });\n const request = createMemo(() => connector.connect(walletsBridges, props.additionalRequest));\n\n const onOpenWalletClick = (): void => {\n function blurHandler(): void {\n setLastSelectedWalletInfo({ openMethod: 'universal-link' });\n window.removeEventListener('blur', blurHandler);\n }\n\n window.addEventListener('blur', blurHandler);\n\n openLink(addReturnStrategy(request(), appState.returnStrategy));\n setTimeout(() => {\n window.removeEventListener('blur', blurHandler);\n }, 200);\n };\n\n const onOpenExtensionClick = (e: Event): void => {\n e.stopPropagation();\n if (availableInjectableWallets.length === 1) {\n const walletInfo = availableInjectableWallets[0]!;\n setLastSelectedWalletInfo(walletInfo);\n\n connector.connect(\n {\n jsBridgeKey: walletInfo.jsBridgeKey\n },\n props.additionalRequest\n );\n return;\n }\n\n setPopupOpened(opened => !opened);\n };\n\n const onExtensionClick = (walletInfo: WalletInfoCurrentlyInjected): void => {\n setLastSelectedWalletInfo(walletInfo);\n\n connector.connect(\n {\n jsBridgeKey: walletInfo.jsBridgeKey\n },\n props.additionalRequest\n );\n };\n\n return (\n <UniversalQrModalStyled\n onClick={() => setPopupOpened(false)}\n data-tc-universal-qr-desktop=\"true\"\n >\n <H2Styled translationKey=\"walletModal.universalQRModal.scanQR\">\n Scan QR code with a TON Connect compatible wallet.\n </H2Styled>\n <QRCodeStyled sourceUrl={request()} disableCopy={popupOpened()} />\n <ButtonsContainerStyled>\n <ActionButtonStyled onClick={onOpenWalletClick} scale=\"s\">\n <Show when={availableInjectableWallets.length}>\n <Translation translationKey=\"walletModal.universalQRModal.openWallet\">\n Open Wallet\n </Translation>\n </Show>\n <Show when={!availableInjectableWallets.length}>\n <Translation translationKey=\"walletModal.universalQRModal.openInstalledWallet\">\n Open Installed Wallet\n </Translation>\n </Show>\n </ActionButtonStyled>\n <Show when={availableInjectableWallets.length}>\n <ActionButtonStyled\n onClick={onOpenExtensionClick}\n disableEventsAnimation={popupOpened()}\n scale=\"s\"\n >\n <Transition\n onBeforeEnter={el => {\n el.animate(\n [\n { opacity: 0, transform: 'translateY(0)' },\n { opacity: 1, transform: 'translateY(-16px)' }\n ],\n {\n duration: 150\n }\n );\n }}\n onExit={(el, done) => {\n el.animate(\n [\n { opacity: 1, transform: 'translateY(-16px)' },\n { opacity: 0, transform: 'translateY(0)' }\n ],\n {\n duration: 150\n }\n ).finished.then(done);\n }}\n >\n <Show when={popupOpened()}>\n <PopupWrapperStyled>\n <For each={availableInjectableWallets}>\n {wallet => (\n <ExtensionLiStyled\n onClick={() => onExtensionClick(wallet)}\n >\n <ImageStyled src={wallet.imageUrl} alt=\"\" />\n <Text fontWeight={590}>{wallet.name}</Text>\n </ExtensionLiStyled>\n )}\n </For>\n </PopupWrapperStyled>\n </Show>\n </Transition>\n <Translation translationKey=\"common.openExtension\">\n Open Extension\n </Translation>\n </ActionButtonStyled>\n </Show>\n </ButtonsContainerStyled>\n <Show when={!availableInjectableWallets.length}>\n <GetWalletStyled>\n <Link href={LINKS.LEARN_MORE} blank>\n <Button\n appearance=\"flat\"\n class={css`\n font-size: 15px;\n `}\n >\n <Translation translationKey=\"common.learnMore\">Learn more</Translation>\n </Button>\n </Link>\n </GetWalletStyled>\n </Show>\n </UniversalQrModalStyled>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H2 } from 'src/app/components';\n\nexport const DesktopSelectWalletModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const H2Styled = styled(H2)`\n margin-bottom: 26px;\n`;\n\nexport const WalletsUl = styled.ul`\n display: grid;\n grid-template-columns: repeat(auto-fit, 92px);\n justify-content: center;\n row-gap: 8px;\n overflow-y: auto;\n max-height: 410px;\n width: calc(100% + 12px);\n margin-bottom: 30px;\n padding: 10px 0;\n align-self: flex-start;\n\n &&::-webkit-scrollbar {\n width: 8px;\n }\n\n &&::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &&::-webkit-scrollbar-thumb {\n background: #cacaca;\n border-radius: 12px;\n }\n`;\n\nexport const ButtonStyled = styled(Button)`\n display: block;\n margin: 0 auto 1px;\n font-size: 15px;\n`;\n","import { Component, For } from 'solid-js';\nimport { DesktopSelectWalletModalStyled, WalletsUl, ButtonStyled, H2Styled } from './style';\nimport { WalletInfo } from '@tonconnect/sdk';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { LINKS } from 'src/app/env/LINKS';\nimport { Link } from 'src/app/components/link';\nimport { WalletItem } from 'src/app/components';\nexport interface DesktopSelectWalletModalProps {\n walletsList: WalletInfo[];\n\n onSelect: (walletInfo: WalletInfo) => void;\n}\n\nexport const DesktopSelectWalletModal: Component<DesktopSelectWalletModalProps> = props => {\n return (\n <DesktopSelectWalletModalStyled data-tc-select-wallet-desktop=\"true\">\n <H2Styled translationKey=\"walletModal.desktopSelectWalletModal.selectWallet\">\n Choose your preferred wallet from the options to get started.\n </H2Styled>\n <WalletsUl>\n <For each={props.walletsList}>\n {wallet => (\n <li>\n <WalletItem\n iconUrl={wallet.imageUrl}\n name={wallet.name}\n onClick={() => props.onSelect(wallet)}\n />\n </li>\n )}\n </For>\n </WalletsUl>\n <Link href={LINKS.LEARN_MORE} blank>\n <ButtonStyled appearance=\"flat\">\n <Translation translationKey=\"common.learnMore\">Learn more</Translation>\n </ButtonStyled>\n </Link>\n </DesktopSelectWalletModalStyled>\n );\n};\n","import {\n ConnectAdditionalRequest,\n isWalletInfoCurrentlyInjected,\n isWalletInfoRemote,\n WalletInfo,\n WalletInfoRemote\n} from '@tonconnect/sdk';\nimport {\n Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n useContext\n} from 'solid-js';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport {\n setLastSelectedWalletInfo,\n setWalletsModalOpen,\n walletsModalOpen\n} from 'src/app/state/modals-state';\nimport { QrCodeModal } from 'src/app/views/modals/wallets-modal/qr-code-modal';\nimport { StyledModal, LoaderContainerStyled, H1Styled, TabBarStyled, TabTextStyled } from './style';\nimport { openLinkBlank } from 'src/app/utils/web-api';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { applyWalletsListConfiguration } from 'src/app/utils/wallets';\nimport isMobile from 'src/app/hooks/isMobile';\nimport { MobileSelectWalletModal } from 'src/app/views/modals/wallets-modal/mobile-select-wallet-modal';\nimport { UniversalQrModal } from 'src/app/views/modals/wallets-modal/universal-qr-modal';\nimport { DesktopSelectWalletModal } from 'src/app/views/modals/wallets-modal/desktop-select-wallet-modal';\nimport { LoaderIcon } from 'src/app/components';\nimport { LoadableReady } from 'src/models/loadable';\n\nexport const WalletsModal: Component = () => {\n const { locale } = useI18n()[1];\n createEffect(() => locale(appState.language));\n\n const connector = useContext(ConnectorContext)!;\n const tonConnectUI = useContext(TonConnectUiContext);\n const [fetchedWalletsList] = createResource(() => tonConnectUI!.getWallets());\n\n const [selectedWalletInfo, setSelectedWalletInfo] = createSignal<WalletInfo | null>(null);\n const [selectedTabIndex, setSelectedTabIndex] = createSignal(0);\n\n const walletsList = createMemo(() => {\n if (fetchedWalletsList.state !== 'ready') {\n return null;\n }\n\n let walletsList = applyWalletsListConfiguration(\n fetchedWalletsList(),\n appState.walletsListConfiguration\n );\n const preferredWalletName = appState.preferredWalletName;\n const preferredWallet = walletsList.find(item => item.name === preferredWalletName);\n const someWalletsWithSameName =\n walletsList.filter(item => item.name === preferredWalletName).length >= 2;\n\n if (preferredWalletName && preferredWallet && !someWalletsWithSameName) {\n walletsList = [preferredWallet].concat(\n walletsList.filter(item => item.name !== preferredWalletName)\n );\n }\n\n return walletsList;\n });\n\n const additionalRequestLoading = (): boolean =>\n appState.connectRequestParameters?.state === 'loading';\n\n const additionalRequest = createMemo(() => {\n if (additionalRequestLoading()) {\n return undefined;\n }\n\n return (appState.connectRequestParameters as LoadableReady<ConnectAdditionalRequest>)\n ?.value;\n });\n\n const onClose = (): void => {\n setWalletsModalOpen(false);\n setSelectedWalletInfo(null);\n };\n\n const onSelectInDesktopList = (walletInfo: WalletInfo): void => {\n if (isWalletInfoCurrentlyInjected(walletInfo)) {\n setLastSelectedWalletInfo(walletInfo);\n connector.connect(\n {\n jsBridgeKey: walletInfo.jsBridgeKey\n },\n additionalRequest()\n );\n return;\n }\n\n if (isWalletInfoRemote(walletInfo)) {\n setLastSelectedWalletInfo({ ...walletInfo, openMethod: 'qrcode' });\n setSelectedWalletInfo(walletInfo);\n return;\n }\n\n openLinkBlank(walletInfo.aboutUrl);\n };\n\n const unsubscribe = connector.onStatusChange(wallet => {\n if (wallet) {\n onClose();\n }\n });\n\n onCleanup(unsubscribe);\n\n return (\n <StyledModal\n opened={walletsModalOpen()}\n onClose={onClose}\n data-tc-wallets-modal-container=\"true\"\n >\n <Show when={additionalRequestLoading() || !walletsList()}>\n <H1Styled translationKey=\"walletModal.loading\">Wallets list is loading</H1Styled>\n <LoaderContainerStyled>\n <LoaderIcon size=\"m\" />\n </LoaderContainerStyled>\n </Show>\n\n <Show when={!additionalRequestLoading() && walletsList()}>\n <Show when={isMobile()}>\n <MobileSelectWalletModal\n walletsList={walletsList()!}\n additionalRequest={additionalRequest()!}\n />\n </Show>\n\n <Show when={!isMobile()}>\n <Show when={!selectedWalletInfo()}>\n <div data-tc-wallets-modal-desktop=\"true\">\n <TabBarStyled\n tab1={\n <TabTextStyled\n translationKey=\"walletModal.qrCode\"\n cursor=\"unset\"\n >\n QR Code\n </TabTextStyled>\n }\n tab2={\n <TabTextStyled\n translationKey=\"walletModal.wallets\"\n cursor=\"unset\"\n >\n Wallets\n </TabTextStyled>\n }\n selectedTabIndex={selectedTabIndex()}\n onSelectedTabIndexChange={setSelectedTabIndex}\n />\n\n <Switch>\n <Match when={selectedTabIndex() === 0}>\n <UniversalQrModal\n walletsList={walletsList()!}\n additionalRequest={additionalRequest()!}\n />\n </Match>\n <Match when={selectedTabIndex() === 1}>\n <DesktopSelectWalletModal\n walletsList={walletsList()!}\n onSelect={onSelectInDesktopList}\n />\n </Match>\n </Switch>\n </div>\n </Show>\n <Show when={selectedWalletInfo()}>\n <QrCodeModal\n additionalRequest={additionalRequest()}\n wallet={selectedWalletInfo() as WalletInfoRemote}\n onBackClick={() => setSelectedWalletInfo(null)}\n />\n </Show>\n </Show>\n </Show>\n </StyledModal>\n );\n};\n","import { styled } from 'solid-styled-components';\nimport { Button, H1, Text } from 'src/app/components';\n\nexport const ActionModalStyled = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-bottom: 8px;\n`;\n\nexport const H1Styled = styled(H1)`\n margin-top: 16px;\n`;\n\nexport const TextStyled = styled(Text)`\n font-weight: 510;\n font-size: 16px;\n line-height: 20px;\n text-align: center;\n max-width: 250px;\n\n color: ${props => props.theme!.colors.text.secondary};\n`;\n\nexport const ButtonStyled = styled(Button)`\n margin-top: 32px;\n`;\n","import { Component, JSXElement, Show } from 'solid-js';\nimport { Translation } from 'src/app/components/typography/Translation';\nimport { ActionModalStyled, ButtonStyled, H1Styled, TextStyled } from './style';\nimport { WithDataAttributes } from 'src/app/models/with-data-attributes';\nimport { useDataAttributes } from 'src/app/hooks/use-data-attributes';\n\ninterface ActionModalProps extends WithDataAttributes {\n headerTranslationKey: string;\n headerTranslationValues?: Record<string, string>;\n icon: JSXElement;\n textTranslationKey?: string;\n textTranslationValues?: Record<string, string>;\n onClose: () => void;\n showButton?: boolean;\n}\n\nexport const ActionModal: Component<ActionModalProps> = props => {\n const dataAttrs = useDataAttributes(props);\n\n return (\n <ActionModalStyled {...dataAttrs}>\n {props.icon}\n <H1Styled\n translationKey={props.headerTranslationKey}\n translationValues={props.headerTranslationValues}\n />\n <TextStyled\n translationKey={props.textTranslationKey}\n translationValues={props.textTranslationValues}\n />\n <Show when={props.showButton !== false}>\n <ButtonStyled onClick={() => props.onClose()}>\n <Translation translationKey=\"common.close\">Close</Translation>\n </ButtonStyled>\n </Show>\n </ActionModalStyled>\n );\n};\n","import { Component, useContext } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { LoaderIcon } from 'src/app/components';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { useI18n } from '@solid-primitives/i18n';\n\ninterface ConfirmTransactionModalProps {\n onClose: () => void;\n}\n\nexport const ConfirmTransactionModal: Component<ConfirmTransactionModalProps> = props => {\n const tonConnectUI = useContext(TonConnectUiContext);\n const [t] = useI18n();\n const name = tonConnectUI!.wallet?.name || t('common.yourWallet', {}, 'your wallet');\n\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.confirmTransaction.header\"\n headerTranslationValues={{ name }}\n textTranslationKey=\"actionModal.confirmTransaction.text\"\n icon={<LoaderIcon size=\"m\" />}\n onClose={() => props.onClose()}\n showButton={false}\n data-tc-confirm-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { ErrorIcon } from 'src/app/components';\n\ninterface TransactionCanceledModalProps {\n onClose: () => void;\n}\n\nexport const TransactionCanceledModal: Component<TransactionCanceledModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionCanceled.header\"\n textTranslationKey=\"actionModal.transactionCanceled.text\"\n icon={<ErrorIcon size=\"m\" />}\n onClose={() => props.onClose()}\n data-tc-transaction-canceled-modal=\"true\"\n />\n );\n};\n","import { Component } from 'solid-js';\nimport { ActionModal } from 'src/app/views/modals/actions-modal/action-modal';\nimport { SuccessIcon } from 'src/app/components';\n\ninterface TransactionSentModalProps {\n onClose: () => void;\n}\n\nexport const TransactionSentModal: Component<TransactionSentModalProps> = props => {\n return (\n <ActionModal\n headerTranslationKey=\"actionModal.transactionSent.header\"\n textTranslationKey=\"actionModal.transactionSent.text\"\n icon={<SuccessIcon size=\"m\" />}\n onClose={() => props.onClose()}\n data-tc-transaction-sent-modal=\"true\"\n />\n );\n};\n","import { Component, Match, Switch } from 'solid-js';\nimport { Modal } from 'src/app/components';\nimport { action, setAction } from 'src/app/state/modals-state';\nimport { ConfirmTransactionModal } from 'src/app/views/modals/actions-modal/confirm-transaction-modal';\nimport { TransactionCanceledModal } from 'src/app/views/modals/actions-modal/transaction-canceled-modal';\nimport { TransactionSentModal } from 'src/app/views/modals/actions-modal/transaction-sent-modal';\n\nexport const ActionsModal: Component = () => {\n return (\n <Modal\n opened={action() !== null && action()?.openModal === true}\n onClose={() => setAction(null)}\n data-tc-actions-modal-container=\"true\"\n >\n <Switch>\n <Match when={action()!.name === 'transaction-sent'}>\n <TransactionSentModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'transaction-canceled'}>\n <TransactionCanceledModal onClose={() => setAction(null)} />\n </Match>\n <Match when={action()!.name === 'confirm-transaction'}>\n <ConfirmTransactionModal onClose={() => setAction(null)} />\n </Match>\n </Switch>\n </Modal>\n );\n};\n","import './global.d.ts';\nimport { Show } from 'solid-js';\nimport type { Component } from 'solid-js';\nimport { Dynamic, Portal } from 'solid-js/web';\nimport { ThemeProvider } from 'solid-styled-components';\nimport { i18nDictionary } from 'src/app/i18n';\nimport { ConnectorContext } from 'src/app/state/connector.context';\nimport { themeState } from 'src/app/state/theme-state';\nimport { GlobalStyles, globalStylesTag } from 'src/app/styles/global-styles';\nimport { AccountButton } from 'src/app/views/account-button';\nimport { ActionsModal, WalletsModal } from 'src/app/views/modals';\nimport './styles/style.d.ts';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport { TonConnectUiContext } from 'src/app/state/ton-connect-ui.context';\nimport { createI18nContext, I18nContext } from '@solid-primitives/i18n';\nimport { appState } from 'src/app/state/app.state';\nimport { defineStylesRoot, fixMobileSafariActiveTransition } from 'src/app/utils/web-api';\n\nexport type AppProps = {\n tonConnectUI: TonConnectUI;\n};\n\nconst App: Component<AppProps> = props => {\n const translations = createI18nContext(i18nDictionary, appState.language);\n\n defineStylesRoot();\n fixMobileSafariActiveTransition();\n\n return (\n <I18nContext.Provider value={translations}>\n <TonConnectUiContext.Provider value={props.tonConnectUI}>\n <ConnectorContext.Provider value={appState.connector}>\n <GlobalStyles />\n <ThemeProvider theme={themeState}>\n <Show when={appState.buttonRootId}>\n <Portal mount={document.getElementById(appState.buttonRootId!)!}>\n <AccountButton />\n </Portal>\n </Show>\n <Dynamic component={globalStylesTag}>\n <WalletsModal />\n <ActionsModal />\n </Dynamic>\n </ThemeProvider>\n </ConnectorContext.Provider>\n </TonConnectUiContext.Provider>\n </I18nContext.Provider>\n );\n};\n\nexport default App;\n","import { render } from 'solid-js/web';\n\nimport {\n Action,\n lastSelectedWalletInfo,\n setAction,\n setWalletsModalOpen\n} from 'src/app/state/modals-state';\nimport { TonConnectUI } from 'src/ton-connect-ui';\nimport App from './App';\nimport { WalletInfoWithOpenMethod, WalletOpenMethod } from 'src/models/connected-wallet';\n\nexport const widgetController = {\n openWalletsModal: (): void => void setTimeout(() => setWalletsModalOpen(true)),\n closeWalletsModal: (): void => void setTimeout(() => setWalletsModalOpen(false)),\n setAction: (action: Action): void => void setTimeout(() => setAction(action)),\n clearAction: (): void => void setTimeout(() => setAction(null)),\n getSelectedWalletInfo: ():\n | WalletInfoWithOpenMethod\n | {\n openMethod: WalletOpenMethod;\n }\n | null => lastSelectedWalletInfo(),\n renderApp: (root: string, tonConnectUI: TonConnectUI): (() => void) =>\n render(\n () => <App tonConnectUI={tonConnectUI} />,\n document.getElementById(root) as HTMLElement\n )\n};\n","import { WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\nimport { checkLocalStorageExists } from 'src/app/utils/web-api';\n\nexport class WalletInfoStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_wallet-info';\n\n constructor() {\n checkLocalStorageExists();\n\n this.localStorage = localStorage;\n }\n\n public setWalletInfo(walletInfo: WalletInfoWithOpenMethod): void {\n this.localStorage.setItem(this.storageKey, JSON.stringify(walletInfo));\n }\n\n public getWalletInfo(): WalletInfoWithOpenMethod | null {\n const walletInfoString = this.localStorage.getItem(this.storageKey);\n\n if (!walletInfoString) {\n return null;\n }\n\n return JSON.parse(walletInfoString);\n }\n\n public removeWalletInfo(): void {\n this.localStorage.removeItem(this.storageKey);\n }\n}\n","import { checkLocalStorageExists } from 'src/app/utils/web-api';\n\nexport class PreferredWalletStorage {\n private readonly localStorage: Storage;\n\n private readonly storageKey = 'ton-connect-ui_preferred-wallet';\n\n constructor() {\n checkLocalStorageExists();\n\n this.localStorage = localStorage;\n }\n\n public setPreferredWalletName(name: string): void {\n this.localStorage.setItem(this.storageKey, name);\n }\n\n public getPreferredWalletName(): string | undefined {\n return this.localStorage.getItem(this.storageKey) || undefined;\n }\n}\n","import type { Account, ConnectAdditionalRequest } from '@tonconnect/sdk';\nimport {\n isWalletInfoCurrentlyEmbedded,\n ITonConnect,\n SendTransactionRequest,\n SendTransactionResponse,\n TonConnect,\n TonConnectError,\n Wallet,\n WalletInfo\n} from '@tonconnect/sdk';\nimport { widgetController } from 'src/app/widget-controller';\nimport { TonConnectUIError } from 'src/errors/ton-connect-ui.error';\nimport { TonConnectUiCreateOptions } from 'src/models/ton-connect-ui-create-options';\nimport { WalletInfoStorage, PreferredWalletStorage } from 'src/storage';\nimport {\n addReturnStrategy,\n getSystemTheme,\n openLink,\n preloadImages,\n subscribeToThemeChange\n} from 'src/app/utils/web-api';\nimport { TonConnectUiOptions } from 'src/models/ton-connect-ui-options';\nimport { setBorderRadius, setColors, setTheme } from 'src/app/state/theme-state';\nimport { mergeOptions } from 'src/app/utils/options';\nimport { appState, setAppState } from 'src/app/state/app.state';\nimport { unwrap } from 'solid-js/store';\nimport { setLastSelectedWalletInfo } from 'src/app/state/modals-state';\nimport { ActionConfiguration, StrictActionConfiguration } from 'src/models/action-configuration';\nimport { ConnectedWallet, WalletInfoWithOpenMethod } from 'src/models/connected-wallet';\nimport { applyWalletsListConfiguration } from 'src/app/utils/wallets';\nimport { uniq } from 'src/app/utils/array';\nimport { Loadable } from 'src/models/loadable';\n\nexport class TonConnectUI {\n public static getWallets(): Promise<WalletInfo[]> {\n return TonConnect.getWallets();\n }\n\n private readonly walletInfoStorage = new WalletInfoStorage();\n\n private readonly preferredWalletStorage = new PreferredWalletStorage();\n\n public readonly connector: ITonConnect;\n\n private walletInfo: WalletInfoWithOpenMethod | null = null;\n\n private systemThemeChangeUnsubscribe: (() => void) | null = null;\n\n private actionsConfiguration?: ActionConfiguration;\n\n private readonly walletsList: Promise<WalletInfo[]>;\n\n private connectRequestParametersCallback?: (\n parameters: ConnectAdditionalRequest | undefined\n ) => void;\n\n /**\n * Promise that resolves after end of th connection restoring process (promise will fire after `onStatusChange`, so you can get actual information about wallet and session after when promise resolved).\n * Resolved value `true`/`false` indicates if the session was restored successfully.\n */\n public readonly connectionRestored = Promise.resolve(false);\n\n /**\n * Current connection status.\n */\n public get connected(): boolean {\n return this.connector.connected;\n }\n\n /**\n * Current connected account or null.\n */\n public get account(): Account | null {\n return this.connector.account;\n }\n\n /**\n * Curren connected wallet app and its info or null.\n */\n public get wallet(): (Wallet & WalletInfoWithOpenMethod) | null {\n if (!this.connector.wallet || !this.walletInfo) {\n return null;\n }\n\n return {\n ...this.connector.wallet,\n ...this.walletInfo\n };\n }\n\n /**\n * Set and apply new UI options. Object with partial options should be passed. Passed options will be merged with current options.\n * @param options\n */\n public set uiOptions(options: TonConnectUiOptions) {\n this.checkButtonRootExist(options.buttonRootId);\n\n this.actionsConfiguration = options.actionsConfiguration;\n\n if (options.uiPreferences?.theme) {\n if (options.uiPreferences?.theme !== 'SYSTEM') {\n this.systemThemeChangeUnsubscribe?.();\n setTheme(options.uiPreferences.theme, options.uiPreferences.colorsSet);\n } else {\n setTheme(getSystemTheme(), options.uiPreferences.colorsSet);\n\n if (!this.systemThemeChangeUnsubscribe) {\n this.systemThemeChangeUnsubscribe = subscribeToThemeChange(setTheme);\n }\n }\n } else {\n if (options.uiPreferences?.colorsSet) {\n setColors(options.uiPreferences.colorsSet);\n }\n }\n\n if (options.uiPreferences?.borderRadius) {\n setBorderRadius(options.uiPreferences.borderRadius);\n }\n\n setAppState(state => {\n const merged = mergeOptions(\n {\n ...(options.language && { language: options.language }),\n ...(!!options.actionsConfiguration?.returnStrategy && {\n returnStrategy: options.actionsConfiguration.returnStrategy\n }),\n ...(!!options.walletsListConfiguration && {\n walletsListConfiguration: options.walletsListConfiguration\n })\n },\n unwrap(state)\n );\n\n if (options.buttonRootId !== undefined) {\n merged.buttonRootId = options.buttonRootId;\n }\n\n return merged;\n });\n }\n\n constructor(options?: TonConnectUiCreateOptions) {\n if (options && 'connector' in options && options.connector) {\n this.connector = options.connector;\n } else if (options && 'manifestUrl' in options && options.manifestUrl) {\n this.connector = new TonConnect({ manifestUrl: options.manifestUrl });\n } else {\n throw new TonConnectUIError(\n 'You have to specify a `manifestUrl` or a `connector` in the options.'\n );\n }\n\n this.walletsList = this.getWallets();\n\n this.walletsList.then(list => preloadImages(uniq(list.map(item => item.imageUrl))));\n\n const rootId = this.normalizeWidgetRoot(options?.widgetRootId);\n\n this.subscribeToWalletChange();\n\n if (options?.restoreConnection !== false) {\n this.connectionRestored = new Promise(async resolve => {\n await this.connector.restoreConnection();\n\n if (!this.connector.connected) {\n this.walletInfoStorage.removeWalletInfo();\n }\n\n resolve(this.connector.connected);\n });\n }\n\n this.uiOptions = mergeOptions(options, { uiPreferences: { theme: 'SYSTEM' } });\n const preferredWalletName = this.preferredWalletStorage.getPreferredWalletName();\n setAppState({\n connector: this.connector,\n preferredWalletName\n });\n\n widgetController.renderApp(rootId, this);\n }\n\n /**\n * Use it to customize ConnectRequest and add `tonProof` payload.\n * You can call it multiply times to set updated tonProof payload if previous one is outdated.\n * If `connectRequestParameters.state === 'loading'` loader will appear instead of the qr code in the wallets modal.\n * If `connectRequestParameters.state` was changed to 'ready' or it's value has been changed, QR will be re-rendered.\n */\n public setConnectRequestParameters(\n connectRequestParameters: Loadable<ConnectAdditionalRequest> | undefined | null\n ): void {\n setAppState({ connectRequestParameters });\n if (connectRequestParameters?.state === 'ready' || !connectRequestParameters) {\n this.connectRequestParametersCallback?.(connectRequestParameters?.value);\n }\n }\n\n /**\n * Returns available wallets list.\n */\n public async getWallets(): Promise<WalletInfo[]> {\n return this.connector.getWallets();\n }\n\n /**\n * Subscribe to connection status change.\n * @return function which has to be called to unsubscribe.\n */\n public onStatusChange(\n callback: (wallet: ConnectedWallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): ReturnType<ITonConnect['onStatusChange']> {\n return this.connector.onStatusChange(async wallet => {\n if (wallet) {\n const lastSelectedWalletInfo = await this.getSelectedWalletInfo(wallet);\n\n callback({\n ...wallet,\n ...(lastSelectedWalletInfo || this.walletInfoStorage.getWalletInfo())!\n });\n } else {\n callback(wallet);\n }\n }, errorsHandler);\n }\n\n /**\n * Opens the modal window and handles a wallet connection.\n */\n public async connectWallet(): Promise<ConnectedWallet> {\n const walletsList = await this.getWallets();\n const embeddedWallet = walletsList.find(isWalletInfoCurrentlyEmbedded);\n\n if (embeddedWallet) {\n const connect = (parameters?: ConnectAdditionalRequest): void => {\n setLastSelectedWalletInfo(embeddedWallet);\n this.connector.connect({ jsBridgeKey: embeddedWallet.jsBridgeKey }, parameters);\n };\n\n const additionalRequest = appState.connectRequestParameters;\n if (additionalRequest?.state === 'loading') {\n this.connectRequestParametersCallback = connect;\n } else {\n connect(additionalRequest?.value);\n }\n } else {\n widgetController.openWalletsModal();\n }\n\n return new Promise((resolve, reject) => {\n const unsubscribe = this.connector.onStatusChange(async wallet => {\n unsubscribe!();\n if (wallet) {\n const lastSelectedWalletInfo = await this.getSelectedWalletInfo(wallet);\n\n resolve({\n ...wallet,\n ...(lastSelectedWalletInfo || this.walletInfoStorage.getWalletInfo())!\n });\n } else {\n reject(new TonConnectUIError('Wallet was not connected'));\n }\n }, reject);\n });\n }\n\n /**\n * Disconnect wallet and clean localstorage.\n */\n public disconnect(): Promise<void> {\n widgetController.clearAction();\n this.walletInfoStorage.removeWalletInfo();\n return this.connector.disconnect();\n }\n\n /**\n * Opens the modal window and handles the transaction sending.\n * @param tx transaction to send.\n * @param options modal and notifications behaviour settings. Default is show only 'before' modal and all notifications.\n */\n public async sendTransaction(\n tx: SendTransactionRequest,\n options?: ActionConfiguration\n ): Promise<SendTransactionResponse> {\n if (!this.connected || !this.walletInfo) {\n throw new TonConnectUIError('Connect wallet to send a transaction.');\n }\n\n const { notifications, modals, returnStrategy } =\n this.getModalsAndNotificationsConfiguration(options);\n\n if ('universalLink' in this.walletInfo && this.walletInfo.openMethod === 'universal-link') {\n openLink(addReturnStrategy(this.walletInfo.universalLink, returnStrategy));\n }\n\n widgetController.setAction({\n name: 'confirm-transaction',\n showNotification: notifications.includes('before'),\n openModal: modals.includes('before')\n });\n\n try {\n const result = await this.connector.sendTransaction(tx);\n\n widgetController.setAction({\n name: 'transaction-sent',\n showNotification: notifications.includes('success'),\n openModal: modals.includes('success')\n });\n\n return result;\n } catch (e) {\n widgetController.setAction({\n name: 'transaction-canceled',\n showNotification: notifications.includes('error'),\n openModal: modals.includes('error')\n });\n\n if (e instanceof TonConnectError) {\n throw e;\n } else {\n console.error(e);\n throw new TonConnectUIError('Unhandled error:' + e);\n }\n }\n }\n\n private subscribeToWalletChange(): void {\n this.connector.onStatusChange(async wallet => {\n if (wallet) {\n await this.updateWalletInfo(wallet);\n this.setPreferredWalletName(this.walletInfo?.name || wallet.device.appName);\n } else {\n this.walletInfoStorage.removeWalletInfo();\n }\n });\n }\n\n private setPreferredWalletName(value: string): void {\n this.preferredWalletStorage.setPreferredWalletName(value);\n setAppState({ preferredWalletName: value });\n }\n\n private async getSelectedWalletInfo(wallet: Wallet): Promise<WalletInfoWithOpenMethod | null> {\n let lastSelectedWalletInfo = widgetController.getSelectedWalletInfo();\n\n if (!lastSelectedWalletInfo) {\n return null;\n }\n\n let fullLastSelectedWalletInfo: WalletInfoWithOpenMethod;\n if (!('name' in lastSelectedWalletInfo)) {\n const walletsList = applyWalletsListConfiguration(\n await this.walletsList,\n appState.walletsListConfiguration\n );\n const walletInfo = walletsList.find(\n item => item.name.toLowerCase() === wallet.device.appName.toLowerCase()\n );\n\n if (!walletInfo) {\n throw new TonConnectUIError(\n `Cannot find WalletInfo for the '${wallet.device.appName}' wallet`\n );\n }\n\n fullLastSelectedWalletInfo = {\n ...walletInfo,\n ...lastSelectedWalletInfo\n };\n } else {\n fullLastSelectedWalletInfo = lastSelectedWalletInfo;\n }\n\n return fullLastSelectedWalletInfo;\n }\n\n private async updateWalletInfo(wallet: Wallet): Promise<void> {\n const selectedWalletInfo = await this.getSelectedWalletInfo(wallet);\n\n if (selectedWalletInfo) {\n this.walletInfo = selectedWalletInfo;\n this.walletInfoStorage.setWalletInfo(selectedWalletInfo);\n } else {\n this.walletInfo = this.walletInfoStorage.getWalletInfo();\n }\n }\n\n private normalizeWidgetRoot(rootId: string | undefined): string {\n if (!rootId || !document.getElementById(rootId)) {\n rootId = 'tc-widget-root';\n const rootElement = document.createElement('div');\n rootElement.id = rootId;\n document.body.appendChild(rootElement);\n }\n\n return rootId;\n }\n\n private checkButtonRootExist(buttonRootId: string | null | undefined): void | never {\n if (buttonRootId == null) {\n return;\n }\n\n if (!document.getElementById(buttonRootId)) {\n throw new TonConnectUIError(`${buttonRootId} element not found in the document.`);\n }\n }\n\n private getModalsAndNotificationsConfiguration(\n options?: ActionConfiguration\n ): StrictActionConfiguration {\n const allActions: StrictActionConfiguration['notifications'] = [\n 'before',\n 'success',\n 'error'\n ];\n\n let notifications: StrictActionConfiguration['notifications'] = allActions;\n if (\n this.actionsConfiguration?.notifications &&\n this.actionsConfiguration?.notifications !== 'all'\n ) {\n notifications = this.actionsConfiguration.notifications;\n }\n\n if (options?.notifications) {\n if (options.notifications === 'all') {\n notifications = allActions;\n } else {\n notifications = options.notifications;\n }\n }\n\n let modals: StrictActionConfiguration['modals'] = ['before'];\n if (this.actionsConfiguration?.modals) {\n if (this.actionsConfiguration.modals === 'all') {\n modals = allActions;\n } else {\n modals = this.actionsConfiguration.modals;\n }\n }\n if (options?.modals) {\n if (options.modals === 'all') {\n modals = allActions;\n } else {\n modals = options.modals;\n }\n }\n\n return {\n notifications,\n modals,\n returnStrategy: options?.returnStrategy || 'back'\n };\n }\n}\n"],"names":["root","f","this","util","validateBase64","s","test","TypeError","decodeUTF8","i","d","unescape","encodeURIComponent","b","Uint8Array","length","charCodeAt","encodeUTF8","arr","push","String","fromCharCode","decodeURIComponent","escape","join","atob","Buffer","from","encodeBase64","toString","decodeBase64","Array","prototype","slice","call","len","btoa","exports","module","nacl","gf","init","r","Float64Array","randombytes","Error","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","x","h","l","vn","xi","y","yi","n","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","out","inp","k","c","o","p","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","m","mpos","z","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","key","t0","t1","t2","t3","t4","t5","t6","t7","buffer","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","update","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","a","car25519","v","Math","floor","sel25519","q","t","pack25519","j","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","e","x32","subarray","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","bytes","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","g","want","crypto_box_afternm","crypto_box_open_afternm","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","pos","crypto_hash","add","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","reduce","crypto_sign","sm","smlen","crypto_sign_open","chk","num","den","den2","den4","den6","unpackneg","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_BOXZEROBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_NONCEBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","arguments","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_ZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_BEFORENMBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","msg","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","publicKey","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","sign","signedMsg","tmp","mlen","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hash","hashLength","setPRNG","fn","crypto","self","msCrypto","getRandomValues","min","require","require$$0","CONNECT_EVENT_ERROR_CODES","CONNECT_ITEM_ERROR_CODES","SEND_TRANSACTION_ERROR_CODES","SIGN_DATA_ERROR_CODES","DISCONNECT_ERROR_CODES","CHAIN","Base64","encode","value","urlSafe","uint8Array","JSON","stringify","encoded","encodeUint8Array","decode","decodedUint8Array","decodeToUint8Array","toObject","parse","toUint8Array","toHexString","byteArray","hexString","forEach","byte","hexToByteArray","result","parseInt","SessionCrypto","constructor","createKeypairFromString","createKeypair","sessionId","nacl$1","createNonce","encrypt","message","receiverPublicKey","encodedMessage","TextEncoder","buffer1","buffer2","mergedArray","set","concatUint8Arrays","decrypt","senderPublicKey","internalMessage","array","index","splitToUint8Arrays","decrypted","TextDecoder","stringifyKeypair","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","apply","TonConnectError","options","super","prefix","name","info","Object","setPrototypeOf","DappMetadataError","args","ManifestContentErrorError","ManifestNotFoundError","WalletAlreadyConnectedError","WalletNotConnectedError","UserRejectsError","BadRequestError","UnknownAppError","WalletNotInjectedError","LocalstorageNotFoundError","FetchWalletsError","WrongAddressError","ParseHexError","UnknownError","connectEventErrorsCodes","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","MANIFEST_NOT_FOUND_ERROR","MANIFEST_CONTENT_ERROR","connectErrorsParser","parseError","error","ErrorConstructor","code","RpcParser","isError","response","sendTransactionErrors","sendTransactionParser","convertToRpcRequest","request","method","params","parseAndThrowError","convertFromRpcResponse","rpcResponse","boc","HttpBridgeGatewayStorage","storage","bridgeUrl","storeKey","storeLastEventId","lastEventId","setItem","removeLastEventId","removeItem","getLastEventId","stored","getItem","addPathToUrl","url","path","removeUrlLastSlash","BridgeGateway","listener","errorsListener","ssePath","postPath","heartbeatMessage","defaultTtl","isClosed","bridgeGatewayStorage","registerSession","URL","searchParams","append","eventSource","EventSource","onerror","onopen","errorsHandler","bind","onmessage","messagesHandler","send","receiver","topic","ttl","fetch","body","pause","_a","close","unPause","setListener","setErrorsListener","_b","readyState","CLOSED","CONNECTING","console","debug","data","bridgeIncomingMessage","BridgeConnectionStorage","storeConnection","connection","type","rawSession","sessionKeyPair","session","sessionCrypto","walletPublicKey","rawConnection","connectEvent","lastWalletEventId","nextRpcRequestId","removeConnection","getConnection","getHttpConnection","getInjectedConnection","storedConnectionType","storeLastWalletEventId","id","getLastWalletEventId","increaseNextRpcRequestId","lastId","getNextRpcRequestId","logDebug","BridgeProvider","walletConnectionSource","standardUniversalLink","pendingRequests","Map","gateway","pendingGateways","listeners","connectionStorage","static","bridgeConnectionStorage","connect","closeGateways","universalLink","isArray","map","source","pendingGatewaysListener","bridge","gatewayListener","gatewayErrorsListener","generateUniversalLink","restoreConnection","storedConnection","sendRequest","onRequestSent","assign","encodedRequest","catch","closeConnection","disconnect","called","removeBridgeAndSession","listen","callback","filter","promises","all","includes","except","walletMessage","get","delete","logError","event","updateSession","tonAddrItem","payload","items","find","item","connectEventToSave","hasProperty","propertyKey","hasProperties","propertyKeys","every","getWindow","window","getWebPageManifest","origin","location","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","isWindowContainsWallet","injectedWallet","tonconnect","jsBridgeKey","isWalletBrowser","entries","_","walletInfo","isJSBridgeWithMetadata","wallet","aboutUrl","about_url","imageUrl","image","tondns","injected","embedded","_connect","makeSubscriptions","closeAllListeners","eventsCallback","protocolVersion","connectEventError","DefaultStorage","localStorage","isWalletInfoCurrentlyInjected","isWalletInfoInjectable","isWalletInfoCurrentlyEmbedded","isWalletInfoRemote","WalletsListManager","walletsListSource","walletsListCache","getWallets","fetchWalletsList","getEmbeddedWallet","embeddedWallets","walletsResponse","walletsList","json","isCorrectWalletConfigDTO","currentlyInjectedWallets","getCurrentlyInjectedWallets","mergeWalletsLists","walletConfigDTOListToWalletConfigList","walletConfigDTO","walletConfig","universal_url","deepLink","isWalletInjected","isInsideWalletBrowser","list1","list2","Set","concat","values","list1Item","list2Item","some","sseBridge","jsBridge","WalletNotSupportFeatureError","checkSendTransactionSupport","features","supportsDeprecatedSendTransactionFeature","sendTransactionFeature","feature","maxMessages","requiredMessagesNumber","warn","logWarning","TonConnect","_wallet","provider","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","manifestUrl","disableAutoPauseConnection","addWindowFocusAndBlurSubscriptions","connected","account","onStatusChange","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","fromStorage","walletEventsListener","sendTransaction","transaction","checkConnection","device","messages","validUntil","hasOwnProperty","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","address","network","chain","valid_until","onWalletDisconnected","pauseConnection","unPauseConnection","document","getDocument","addEventListener","hidden","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","walletStateInit","connectItems","tonProof","walletJSKey","bounceableTag","testOnlyTag","toUserFriendlyAddress","hexAddress","testOnly","wc","hex","parts","split","hexToBytes","parseHexAddress","tag","addr","Int8Array","addressWithChecksum","poly","reg","crc16","replace","toByteMap","ord","length2","toLowerCase","doubled","hexSubstring","substring","sharedConfig","$PROXY","Symbol","$TRACK","signalOptions","equals","runEffects","runQueue","STALE","PENDING","UNOWNED","owned","cleanups","context","owner","NO_INIT","Owner","SuspenseContext","Transition","Listener","Updates","Effects","ExecCount","createRoot","detachedOwner","unowned","updateFn","untrack","cleanNode","runUpdates","createSignal","observers","observerSlots","comparator","readSignal","writeSignal","createComputed","updateComputation","createComputation","createRenderEffect","createEffect","runUserEffects","user","createMemo","createResource","pSource","pFetcher","pOptions","fetcher","pr","initP","scheduled","resolved","dynamic","contexts","setValue","initialValue","setError","track","trigger","state","setState","count","ssrLoadFrom","load","loadEnd","onHydrated","queueMicrotask","err","keys","decrement","clear","completeLoad","read","has","increment","refetching","lookup","castError","defineProperties","loading","latest","refetch","mutate","batch","onCleanup","getListener","createContext","defaultValue","Provider","useContext","ctx","children","memo","resolveChildren","toArray","runningTransition","sources","updates","lookUpstream","sSlot","sourceSlots","node","isComp","current","TransitionRunning","running","disposed","tState","pure","markDownstream","time","nextValue","handleError","updatedAt","runComputation","runTop","suspense","inFallback","effects","ancestors","wait","res","completeUpdates","queue","userLength","ignore","pop","obs","results","props","FALLBACK","dispose","createComponent","Comp","trueFn","propTraps","property","deleteProperty","getOwnPropertyDescriptor","configurable","enumerable","ownKeys","resolveSource","mergeProps","proxy","Proxy","target","descriptors","getOwnPropertyDescriptors","defineProperty","splitProps","blocked","flat","clone","For","fallback","list","mapFn","mapped","disposers","indexes","newItems","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","start","end","newEnd","newLen","disposer","mapper","mapArray","each","Show","strictEqual","keyed","condition","when","child","Switch","conditions","evalConditions","conds","cond","Match","Properties","ChildProperties","Aliases","create","className","htmlFor","PropAliases","class","formnovalidate","ismap","nomodule","playsinline","readonly","DelegatedEvents","SVGElements","SVGNamespace","xlink","xml","$$EVENTS","template","html","check","isSVG","createElement","innerHTML","content","firstChild","setAttribute","removeAttribute","spread","skipChildren","prevProps","insertExpression","ref","skipRef","prop","assignProp","use","element","arg","insert","parent","accessor","marker","initial","getNextElement","registry","hydrate","getHydrationKey","completed","cloneNode","toggleClassKey","classNames","trim","nameLen","classList","toggle","prev","isCE","isProp","isChildProp","nodeStyle","style","cssText","removeProperty","setProperty","classKeys","prevKeys","classValue","removeEventListener","delegate","handler","handlerFn","eventNames","eventHandler","delegateEvents","nodeName","w","toUpperCase","ns","namespace","removeAttributeNS","setAttributeNS","composedPath","querySelectorAll","elem","nodeType","nodeValue","nextSibling","remove","disabled","cancelBubble","_$host","parentNode","host","unwrapArray","childNodes","multi","createTextNode","cleanChildren","textContent","currentArray","normalizeIncomingArray","appendNodes","bLength","aEnd","bEnd","aStart","bStart","insertBefore","sequence","replaceChild","reconcileArrays","Node","appendChild","normalized","unwrap","replacement","inserted","el","isParent","SVG_NAMESPACE","tagName","createElementNS","Portal","useShadow","mount","renderPortal","HTMLHeadElement","clean","setClean","container","renderRoot","attachShadow","mode","removeChild","Dynamic","others","cached","component","isSvg","walletsModalOpen","setWalletsModalOpen","lastSelectedWalletInfo","setLastSelectedWalletInfo","action","setAction","querySelector","_goober","head","exec","shift","unshift","raw","ThemeContext","ThemeProvider","theme","useTheme","makeStyled","_ctx","Styled","withTheme","pClass","css","Boolean","local","newProps","htmlProps","createTag","as","styled","createGlobalStyles","i18nDictionary","en","parseDictionary","ru","dictionary","iterate","subDictionary","obj","ConnectorContext","$RAW","$NODE","$NAME","wrap$1","proxyTraps$1","desc","isWrappable","proto","getPrototypeOf","unwrapped","isFrozen","getDataNodes","nodes","getDataNode","createDataNode","trackSelf","internal","$","tracked","Reflect","writable","deleting","mergeStoreNode","updatePath","traversed","part","partType","to","by","createStore","store","unwrappedStore","updateArray","THEME","defaultLightColorsSet","constant","black","white","connectButton","background","foreground","accent","icon","primary","secondary","tertiary","success","segment","text","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","val","defaultArrayMerge","getKeys","symbol","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","cjs","isObject","isPlainObject","ctor","prot","mergeOptions","defaultOptions","sourceArray","__","themeState","setThemeState","LIGHT","colors","borderRadius","themeColorsMappingDefault","DARK","themeCustomColors","setTheme","colorsSet","globalStylesTag","disableScrollClass","usingMouseClass","GlobalStyles","_$createComponent","ImagePlaceholder","div","Image","imgRef","setImage","img","src","alt","complete","r$","rgba","color","opacity","bigint","hexToRgb","toPx","TonConnectUIError","openLink","href","openLinkBlank","addReturnStrategy","returnStrategy","parsed","addQueryParameter","checkLocalStorageExists","maxWidth","mobile","tablet","isDevice","width","innerWidth","media","mediaTouch","mediaNotTouch","borders","none","scaleValues","ButtonStyled","button","appearance","scale","useDataAttributes","startsWith","dataAttrs","Button","_$mergeProps","onClick","onMouseEnter","onMouseLeave","_ref$","hasOwn","classes","argType","inner","default","nextFrame","requestAnimationFrame","first","s1","set1","s2","set2","onBeforeEnter","onEnter","onAfterEnter","onBeforeExit","onExit","onAfterExit","classnames","enterActiveClass","enterClass","enterToClass","exitActiveClass","exitClass","exitToClass","enterTransition","appear","endTransition","enterActiveClasses","enterToClasses","exitTransition","enterClasses","exitClasses","exitActiveClasses","exitToClasses","getRect","top","bottom","left","right","height","getBoundingClientRect","parentRect","TransitionGroup","moveClass","combined","setCombined","comb","old","splice","new","newPos","once","oldPos","dx","dy","moved","transform","transitionDuration","offsetHeight","propertyName","moveClasses","rotationDegrees","ArrowIcon","svgDirection","viewBox","fill","xmlns","direction","_el$","_tmpl$","_$effect","_$setAttribute","CloseIcon","_el$2","IconButtonStyled","IconButton","ModalBackgroundStyled","ModalWrapperClass","CloseButtonStyled","clickOutside","contains","keyPressed","escPressed","onKeyPress","activeElement","blur","Modal","opened","documentElement","scrollHeight","clientHeight","scrollTop","scrollTo","parseFloat","getComputedStyle","duration","animate","firstElementChild","backgroundAnimation","contentAnimation","finished","_$use","onClose","_$insert","_$className","cn","wrapperBorderRadius","sliderBorderRadius","TabBarStyled","SliderStyled","InputStyled","input","LabelStyled","label","isActive","QrCodeBackground","qrNormalSize","QrCodeWrapper","ImageBackground","ImageStyled","size","CopyButtonStyled","qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","maskPattern","moduleCount","modules","row","col","setupPositionProbePattern","setupTypeInfo","setupTypeNumber","createData","mapData","setupTimingPattern","setupPositionAdjustPattern","QRUtil","getPatternPosition","bits","getBCHTypeNumber","mod","getBCHTypeInfo","inc","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","dataList","rsBlocks","QRRSBlock","getRSBlocks","qrBitBuffer","put","getMode","getLength","getLengthInBits","write","totalDataCount","dataCount","putBit","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","getBuffer","rsPoly","getErrorCorrectPolynomial","modPoly","qrPolynomial","modIndex","getAt","totalCodeCount","createBytes","addData","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","isDark","getModuleCount","make","minLostPoint","pattern","lostPoint","getLostPoint","getBestMaskPattern","createTableTag","cellSize","margin","qrHtml","createSvgTag","title","opts","mr","rect","qrSvg","scalable","escapeXml","createDataURL","createImgTag","escaped","charAt","createASCII","blocksLastLineNoMargin","ascii","_createHalfASCII","line","renderTo2dContext","fillStyle","fillRect","stringToBytes","stringToBytesFuncs","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","unknownChar","PATTERN_POSITION_TABLE","G15","G18","getBCHDigit","QRMode","Q","H","QRMaskPattern","digit","errorCorrectLength","multiply","QRMath","gexp","sameCount","darkCount","abs","EXP_TABLE","LOG_TABLE","_num","glog","ratio","RS_BLOCK_TABLE","qrRSBlock","rsBlock","getRsBlockTable","_buffer","_length","bufIndex","bit","_mode","_data","strToNum","chatToNum","getCode","_bytes","byteArrayOutputStream","writeByte","off","str","_str","_pos","_buflen","match","getPixel","gif","_width","_height","pixel","writeString","writeShort","raster","getLZWRaster","writeBytes","lzwMinCodeSize","clearCode","endCode","bitLength","table","lzwTable","_out","_bitLength","_bitBuffer","byteOut","bitOut","dataIndex","flush","toByteArray","_map","_size","gifImage","setPixel","base64","_base64","writeEncoded","padlen","base64EncodeOutputStream","utf8","charcode","toUTF8Array","copyToClipboard","navigator","clipboard","writeText","textArea","position","focus","select","execCommand","fallbackCopyTextToClipboard","deepReadObject","createI18nContext","lang","language","locale","setLocale","dict","setDict","lang2","I18nContext","useI18n","Translation","_$memo","translationKey","translationValues","copyText","copiedText","QRCode","qrCodeCanvasRef","qrCodeWrapperRef","imageRef","copyButtonOpened","setCopyButtonOpened","copyButtonHovered","setCopyButtonHovered","qrHovered","setQrHovered","copyButtonText","setCopyButtonText","picSize","setPicSize","qr","sourceUrl","qrSize","clientWidth","round","imgSize","ceil","imgOffset","timeoutId","onCopyClick","clearTimeout","setTimeout","disableCopy","TextStyled","fontWeight","fontSize","lineHeight","Text","inputs","textRef","cursor","WalletItemStyled","StyledText","WalletItem","iconUrl","H1Styled","H1","H2Styled","H2","H3Styled","H3","LongArrowIcon","TonIcon","SuccessIcon","_c$","_el$3","_p$","_v$","_v$2","_v$3","undefined","_el$4","_tmpl$2","_el$5","_el$6","_v$4","_v$5","_v$6","ErrorIcon","LoaderIcon","svgClass","keyframes","TonConnectUiContext","CopyIcon","DisconnectIcon","hoverBorders","dropdownBorders","AccountButtonDropdownStyled","UlStyled","ul","MenuButtonStyled","MenuItemText","NotificationStyled","NotificationContentStyled","Notification","header","LoaderIconStyled","ConfirmOperationNotification","tonConnectUI","ErrorIconStyled","ErrorTransactionNotification","SuccessIconStyled","SuccessTransactionNotification","NotificationClass","AccountButtonStyled","DropdownButtonStyled","LoaderButtonStyled","DropdownContainerStyled","DropdownStyled","tonConnectUi","isCopiedShown","setIsCopiedShown","onCopy","__async","userFriendlyAddress","TESTNET","NotificationsStyled","timeouts","openedNotifications","setOpenedNotifications","on","deps","prevInput","defer","prevValue","showNotification","notifications","notification","openedNotification","getSide","placement","computeCoordsFromPlacement","_ref","rtl","reference","floating","commonX","commonY","mainAxis","getMainAxisFromPlacement","commonAlign","isVertical","coords","getAlignment","computePosition","config","strategy","middleware","platform","validMiddleware","isRTL","NODE_ENV","rects","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","initialPlacement","elements","__spreadProps","__spreadValues","rectToClientRect","_node$ownerDocument","ownerDocument","defaultView","getNodeName","isNode","uaString","getUAString","uaData","userAgentData","brands","brand","version","userAgent","isHTMLElement","HTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","isFirefox","backdropFilter","WebkitBackdropFilter","perspective","willChange","contain","isLayoutViewport","isLastTraversableNode","FALLBACK_SCALE","getScale","domElement","contextElement","boxSizing","offsetWidth","Number","isFinite","includeScale","isFixedStrategy","offsetParent","_win$visualViewport$o","_win$visualViewport","_win$visualViewport$o2","_win$visualViewport2","clientRect","win","addVisualOffsets","visualViewport","offsetLeft","offsetTop","getDocumentElement","getNodeScroll","scrollLeft","pageXOffset","pageYOffset","getWindowScrollBarX","getRectRelativeToOffsetParent","isOffsetParentAnElement","scroll","offsets","offsetRect","clientLeft","clientTop","getParentNode","assignedSlot","getTrueOffsetParent","getOffsetParent","currentNode","getContainingBlock","getNearestOverflowAncestor","getOverflowAncestors","scrollableAncestor","isBody","getClientRectFromClippingAncestor","clippingAncestor","layoutViewport","getViewportRect","getInnerBoundingClientRect","_element$ownerDocumen","scrollWidth","getDocumentRect","getClippingRect","boundary","rootBoundary","clippingAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","containingBlock","ancestor","getClippingElementAncestors","_c","firstClippingAncestor","clippingRect","accRect","convertOffsetParentRelativeRectToViewportRelativeRect","getDimensions","getOffsetParentFn","getDimensionsFn","getClientRects","autoUpdate","ancestorScroll","_ancestorScroll","ancestorResize","elementResize","animationFrame","passive","frameId","observer","initialUpdate","ResizeObserver","observe","prevRefRect","frameLoop","nextRefRect","_observer","cancelAnimationFrame","mergedOptions","platformWithCache","computePosition$1","AccountButton","connector","isOpened","setIsOpened","setAccount","restoringProcess","setRestoringProcess","dropDownRef","setFloating","anchor","setAnchor","F","R","E","whileElementsMounted","useFloating","connectionRestored","unsubscribe","clickToButton","clickToDropdown","connectWallet","normalizedAddress","acc","_$untrack","importNode","_$owner","QrCodeModalStyled","StyledIconButton","QRStyled","ButtonsContainerStyled","ActionButtonStyled","GetWalletStyled","appState","setAppState","buttonRootId","walletsListConfiguration","AStyled","Link","blank","attributes","rel","QrCodeModal","additionalRequest","onBackClick","openMethod","StyledModal","LoaderContainerStyled","TabTextStyled","groupName","random","selectedTabIndex","onInput","onSelectedTabIndexChange","tab1","tab2","uiWalletToWalletInfo","uiWallet","applyWalletsListConfiguration","configuration","idKey","array1","array2","includeWallets","item1","item2","isMobile","setIsMobile","DefaultWallet","li","Divider","LongArrowIconContainer","LINKS","MobileSelectWalletModal","onSelectUniversal","UniversalQrModalStyled","QRCodeStyled","disableEventsAnimation","PopupWrapperStyled","ExtensionLiStyled","UniversalQrModal","popupOpened","setPopupOpened","walletsBridges","availableInjectableWallets","onOpenWalletClick","blurHandler","onOpenExtensionClick","stopPropagation","onExtensionClick","DesktopSelectWalletModalStyled","WalletsUl","DesktopSelectWalletModal","onSelect","WalletsModal","fetchedWalletsList","selectedWalletInfo","setSelectedWalletInfo","setSelectedTabIndex","preferredWalletName","preferredWallet","someWalletsWithSameName","additionalRequestLoading","connectRequestParameters","onSelectInDesktopList","ActionModalStyled","ActionModal","headerTranslationKey","headerTranslationValues","textTranslationKey","textTranslationValues","showButton","ConfirmTransactionModal","TransactionCanceledModal","TransactionSentModal","ActionsModal","openModal","App","translations","customElements","define","HTMLDivElement","extends","hasAttribute","getElementById","widgetController","openWalletsModal","clearAction","getSelectedWalletInfo","renderApp","render","WalletInfoStorage","__publicField","setWalletInfo","storageKey","getWalletInfo","walletInfoString","removeWalletInfo","PreferredWalletStorage","setPreferredWalletName","getPreferredWalletName","TonConnectUI","preloadImages","rootId","normalizeWidgetRoot","widgetRootId","subscribeToWalletChange","walletInfoStorage","uiOptions","uiPreferences","preferredWalletStorage","checkButtonRootExist","actionsConfiguration","systemThemeChangeUnsubscribe","matchMedia","matches","subscribeToThemeChange","_d","_e","merged","setConnectRequestParameters","connectRequestParametersCallback","parameters","modals","getModalsAndNotificationsConfiguration","updateWalletInfo","appName","fullLastSelectedWalletInfo","rootElement","allActions"],"mappings":"qpDAEUA,EAAMC,iBAAND,EAQRE,EARcD,EAQR,WAGN,IAAIE,EAAO,CAAA,EAEX,SAASC,EAAeC,GACtB,IAAM,uFAAuFC,KAAKD,GAC1F,MAAA,IAAIE,UAAU,mBAEvB,CA2DM,OAzDFJ,EAAAK,WAAa,SAASH,GACzB,GAAiB,iBAANA,EAAsB,MAAA,IAAIE,UAAU,mBAC3CE,IAAAA,EAAGC,EAAIC,SAASC,mBAAmBP,IAAKQ,EAAI,IAAIC,WAAWJ,EAAEK,QACjE,IAAKN,EAAI,EAAGA,EAAIC,EAAEK,OAAQN,IAAOA,EAAAA,GAAKC,EAAEM,WAAWP,GAC5C,OAAAI,CACX,EAEOV,EAAAc,WAAa,SAASC,GACrBT,IAAAA,EAAGJ,EAAI,GACX,IAAKI,EAAI,EAAGA,EAAIS,EAAIH,OAAQN,IAAKJ,EAAEc,KAAKC,OAAOC,aAAaH,EAAIT,KAChE,OAAOa,mBAAmBC,OAAOlB,EAAEmB,KAAK,KAC5C,EAEsB,oBAATC,UAGkB,IAAhBC,OAAOC,MAEXxB,EAAAyB,aAAe,SAAUV,GAC1B,OAAOQ,OAAOC,KAAKT,GAAKW,SAAS,SAC3C,EAEW1B,EAAA2B,aAAe,SAAUzB,GAE5B,OADAD,EAAeC,GACR,IAAIS,WAAWiB,MAAMC,UAAUC,MAAMC,KAAKR,OAAOC,KAAKtB,EAAG,UAAW,GACnF,IAIWF,EAAAyB,aAAe,SAAUV,GAC5B,OAAQ,IAAIQ,OAAOR,GAAMW,SAAS,SAC1C,EAEW1B,EAAA2B,aAAe,SAASzB,GAE3B,OADAD,EAAeC,GACR,IAAIS,WAAWiB,MAAMC,UAAUC,MAAMC,KAAK,IAAIR,OAAOrB,EAAG,UAAW,GAClF,IAMSF,EAAAyB,aAAe,SAASV,GAC3B,IAAIT,EAAGJ,EAAI,GAAI8B,EAAMjB,EAAIH,OACpBN,IAAAA,EAAI,EAAGA,EAAI0B,EAAK1B,IAAKJ,EAAEc,KAAKC,OAAOC,aAAaH,EAAIT,KACzD,OAAO2B,KAAK/B,EAAEmB,KAAK,IACzB,EAESrB,EAAA2B,aAAe,SAASzB,GAC3BD,EAAeC,GACXI,IAAAA,EAAGC,EAAIe,KAAKpB,GAAIQ,EAAI,IAAIC,WAAWJ,EAAEK,QACzC,IAAKN,EAAI,EAAGA,EAAIC,EAAEK,OAAQN,IAAOA,EAAAA,GAAKC,EAAEM,WAAWP,GAC5C,OAAAI,CACb,GAISV,CAET,QA5E8CkC,QAASC,EAAAD,QAAiBpC,KAC7DD,EAAKuC,OAEZvC,EAAKuC,KAAO,IAFWvC,EAAAuC,KAAKpC,KAAOF,yQCLxB,sEAAA,CAAA,wDCAf,SAAUsC,GASN,IAAAC,EAAK,SAASC,GAChB,IAAIhC,EAAGiC,EAAI,IAAIC,aAAa,IACxB,GAAAF,EAAM,IAAKhC,EAAI,EAAGA,EAAIgC,EAAK1B,OAAQN,IAAKiC,EAAEjC,GAAKgC,EAAKhC,GACjD,OAAAiC,CACT,EAGIE,EAAc,WAA6B,MAAA,IAAIC,MAAM,YAErDC,EAAK,IAAIhC,WAAW,IACpBiC,EAAK,IAAIjC,WAAW,IAAKiC,EAAG,GAAK,EAEjC,IAAAC,EAAMR,IACNS,EAAMT,EAAG,CAAC,IACVU,EAAUV,EAAG,CAAC,MAAQ,IACtBW,EAAIX,EAAG,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAChIY,EAAKZ,EAAG,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,OACjIa,EAAIb,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAChIc,EAAId,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAChIe,EAAIf,EAAG,CAAC,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,IAAQ,MAAQ,MAAQ,MAAQ,KAAQ,QAEpI,SAASgB,EAAKC,EAAGhD,EAAGiD,EAAGC,GACnBlD,EAAAA,GAAQiD,GAAK,GAAM,IACnBjD,EAAAA,EAAE,GAAMiD,GAAK,GAAM,IACnBjD,EAAAA,EAAE,GAAMiD,GAAM,EAAK,IACnBjD,EAAAA,EAAE,GAAS,IAAJiD,EACPjD,EAAAA,EAAE,GAAMkD,GAAK,GAAO,IACpBlD,EAAAA,EAAE,GAAMkD,GAAK,GAAO,IACpBlD,EAAAA,EAAE,GAAMkD,GAAM,EAAM,IACpBlD,EAAAA,EAAE,GAAS,IAAJkD,CACV,CAED,SAASC,EAAGH,EAAGI,EAAIC,EAAGC,EAAIC,GACxB,IAAIvD,EAAEC,EAAI,EACLD,IAAAA,EAAI,EAAGA,EAAIuD,EAAGvD,IAAKC,GAAK+C,EAAEI,EAAGpD,GAAGqD,EAAEC,EAAGtD,GAClC,OAAA,EAAMC,EAAI,IAAO,GAAM,CAChC,CAED,SAASuD,EAAiBR,EAAGI,EAAIC,EAAGC,GAClC,OAAOH,EAAGH,EAAEI,EAAGC,EAAEC,EAAG,GACrB,CAED,SAASG,EAAiBT,EAAGI,EAAIC,EAAGC,GAClC,OAAOH,EAAGH,EAAEI,EAAGC,EAAEC,EAAG,GACrB,CA4UD,SAASI,EAAoBC,EAAIC,EAAIC,EAAEC,IA1UvC,SAAsBC,EAAGC,EAAGH,EAAGC,GAsB7B,IArBA,IAmBeG,EAnBXC,EAAc,IAARJ,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9EK,EAAc,IAARN,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9EO,EAAc,IAARP,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9EQ,EAAc,IAARR,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9ES,EAAc,IAART,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EU,EAAc,IAART,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9EU,EAAc,IAARR,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9ES,EAAc,IAART,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAC9EU,EAAc,IAARV,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EW,EAAc,IAARX,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EY,EAAc,IAARd,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9Ee,EAAc,IAARhB,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EiB,EAAc,IAARjB,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EkB,EAAc,IAARlB,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EmB,EAAc,IAARnB,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAC9EoB,EAAc,IAARnB,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAE9EoB,EAAKhB,EAAIiB,EAAKhB,EAAIiB,EAAKhB,EAAIiB,EAAKhB,EAAIiB,EAAKhB,EAAIiB,EAAKhB,EAAIiB,EAAKhB,EAAIiB,EAAKhB,EACpEiB,EAAKhB,EAAIiB,EAAKhB,EAAIiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EAAKiB,EAAMhB,EACpEiB,EAAMhB,EAEDjF,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAQrBiE,IADNA,GADOA,IADPA,GADMA,IADNA,GADMA,IADNA,EAAIiB,EAAKY,EAAM,IACN,EAAI7B,IAAK,IACTiB,EAAK,IACL,EAAIjB,IAAK,IACTqB,EAAK,IACJ,GAAKrB,IAAK,IACVyB,EAAK,IACN,GAAKzB,IAAK,GASbA,IADNA,GADMA,IADNA,GADOA,IADPA,GADMA,IADNA,EAAIsB,EAAKJ,EAAK,IACL,EAAIlB,IAAK,IACTsB,EAAK,IACJ,EAAItB,IAAK,IACT0B,EAAK,IACN,GAAK1B,IAAK,IACV8B,EAAM,IACN,GAAK9B,IAAK,GASZA,IADPA,GADMA,IADNA,GADMA,IADNA,GADOA,IADPA,EAAI2B,EAAMJ,EAAK,IACL,EAAIvB,IAAK,IACT2B,EAAM,IACP,EAAI3B,IAAK,IACT+B,EAAM,IACN,GAAK/B,IAAK,IACVmB,EAAK,IACJ,GAAKnB,IAAK,GASbA,IADPA,GADOA,IADPA,GADMA,IADNA,GADMA,IADNA,EAAIgC,EAAMJ,EAAM,IACP,EAAI5B,IAAK,IACTgC,EAAM,IACN,EAAIhC,IAAK,IACToB,EAAK,IACJ,GAAKpB,IAAK,IACVwB,EAAK,IACL,GAAKxB,IAAK,GASdA,IADNA,GADMA,IADNA,GADMA,IADNA,GADMA,IADNA,EAAIiB,EAAKG,EAAK,IACL,EAAIpB,IAAK,IACTiB,EAAK,IACL,EAAIjB,IAAK,IACTkB,EAAK,IACL,GAAKlB,IAAK,IACVmB,EAAK,IACL,GAAKnB,IAAK,GASbA,IADNA,GADMA,IADNA,GADMA,IADNA,GADMA,IADNA,EAAIsB,EAAKD,EAAK,IACL,EAAIrB,IAAK,IACTsB,EAAK,IACL,EAAItB,IAAK,IACTuB,EAAK,IACL,GAAKvB,IAAK,IACVwB,EAAK,IACL,GAAKxB,IAAK,GASZA,IADPA,GADMA,IADNA,GADMA,IADNA,GADOA,IADPA,EAAI2B,EAAMD,EAAK,IACL,EAAI1B,IAAK,IACT2B,EAAM,IACP,EAAI3B,IAAK,IACT4B,EAAM,IACN,GAAK5B,IAAK,IACVyB,EAAK,IACJ,GAAKzB,IAAK,GASbA,IADPA,GADOA,IADPA,GADOA,IADPA,GADOA,IADPA,EAAIgC,EAAMD,EAAM,IACN,EAAI/B,IAAK,IACTgC,EAAM,IACN,EAAIhC,IAAK,IACT6B,EAAM,IACN,GAAK7B,IAAK,IACV8B,EAAM,IACN,GAAK9B,IAAK,GAErBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EACjBiB,EAAMA,EAAMhB,EAAK,EAClBiB,EAAMA,EAAMhB,EAAM,EAClBiB,EAAMA,EAAMhB,EAAM,EAClBiB,EAAMA,EAAMhB,EAAM,EAClBiB,EAAMA,EAAMhB,EAAM,EAClBiB,EAAMA,EAAMhB,EAAM,EAClBiB,EAAMA,EAAMhB,EAAM,EAElBlB,EAAG,GAAKmB,IAAQ,EAAI,IACpBnB,EAAG,GAAKmB,IAAQ,EAAI,IACpBnB,EAAG,GAAKmB,IAAO,GAAK,IACpBnB,EAAG,GAAKmB,IAAO,GAAK,IAEpBnB,EAAG,GAAKoB,IAAQ,EAAI,IACpBpB,EAAG,GAAKoB,IAAQ,EAAI,IACpBpB,EAAG,GAAKoB,IAAO,GAAK,IACpBpB,EAAG,GAAKoB,IAAO,GAAK,IAEpBpB,EAAG,GAAKqB,IAAQ,EAAI,IACpBrB,EAAG,GAAKqB,IAAQ,EAAI,IACpBrB,EAAE,IAAMqB,IAAO,GAAK,IACpBrB,EAAE,IAAMqB,IAAO,GAAK,IAEpBrB,EAAE,IAAMsB,IAAQ,EAAI,IACpBtB,EAAE,IAAMsB,IAAQ,EAAI,IACpBtB,EAAE,IAAMsB,IAAO,GAAK,IACpBtB,EAAE,IAAMsB,IAAO,GAAK,IAEpBtB,EAAE,IAAMuB,IAAQ,EAAI,IACpBvB,EAAE,IAAMuB,IAAQ,EAAI,IACpBvB,EAAE,IAAMuB,IAAO,GAAK,IACpBvB,EAAE,IAAMuB,IAAO,GAAK,IAEpBvB,EAAE,IAAMwB,IAAQ,EAAI,IACpBxB,EAAE,IAAMwB,IAAQ,EAAI,IACpBxB,EAAE,IAAMwB,IAAO,GAAK,IACpBxB,EAAE,IAAMwB,IAAO,GAAK,IAEpBxB,EAAE,IAAMyB,IAAQ,EAAI,IACpBzB,EAAE,IAAMyB,IAAQ,EAAI,IACpBzB,EAAE,IAAMyB,IAAO,GAAK,IACpBzB,EAAE,IAAMyB,IAAO,GAAK,IAEpBzB,EAAE,IAAM0B,IAAQ,EAAI,IACpB1B,EAAE,IAAM0B,IAAQ,EAAI,IACpB1B,EAAE,IAAM0B,IAAO,GAAK,IACpB1B,EAAE,IAAM0B,IAAO,GAAK,IAEpB1B,EAAE,IAAM2B,IAAQ,EAAI,IACpB3B,EAAE,IAAM2B,IAAQ,EAAI,IACpB3B,EAAE,IAAM2B,IAAO,GAAK,IACpB3B,EAAE,IAAM2B,IAAO,GAAK,IAEpB3B,EAAE,IAAM4B,IAAQ,EAAI,IACpB5B,EAAE,IAAM4B,IAAQ,EAAI,IACpB5B,EAAE,IAAM4B,IAAO,GAAK,IACpB5B,EAAE,IAAM4B,IAAO,GAAK,IAEpB5B,EAAE,IAAM6B,IAAS,EAAI,IACrB7B,EAAE,IAAM6B,IAAS,EAAI,IACrB7B,EAAE,IAAM6B,IAAQ,GAAK,IACrB7B,EAAE,IAAM6B,IAAQ,GAAK,IAErB7B,EAAE,IAAM8B,IAAS,EAAI,IACrB9B,EAAE,IAAM8B,IAAS,EAAI,IACrB9B,EAAE,IAAM8B,IAAQ,GAAK,IACrB9B,EAAE,IAAM8B,IAAQ,GAAK,IAErB9B,EAAE,IAAM+B,IAAS,EAAI,IACrB/B,EAAE,IAAM+B,IAAS,EAAI,IACrB/B,EAAE,IAAM+B,IAAQ,GAAK,IACrB/B,EAAE,IAAM+B,IAAQ,GAAK,IAErB/B,EAAE,IAAMgC,IAAS,EAAI,IACrBhC,EAAE,IAAMgC,IAAS,EAAI,IACrBhC,EAAE,IAAMgC,IAAQ,GAAK,IACrBhC,EAAE,IAAMgC,IAAQ,GAAK,IAErBhC,EAAE,IAAMiC,IAAS,EAAI,IACrBjC,EAAE,IAAMiC,IAAS,EAAI,IACrBjC,EAAE,IAAMiC,IAAQ,GAAK,IACrBjC,EAAE,IAAMiC,IAAQ,GAAK,IAErBjC,EAAE,IAAMkC,IAAS,EAAI,IACrBlC,EAAE,IAAMkC,IAAS,EAAI,IACrBlC,EAAE,IAAMkC,IAAQ,GAAK,IACrBlC,EAAE,IAAMkC,IAAQ,GAAK,GACtB,CA4IcC,CAAAvC,EAAIC,EAAIC,EAAEC,EACxB,CAED,SAASqC,EAAqBxC,EAAIC,EAAIC,EAAEC,IA7IxC,SAAuBC,EAAEC,EAAEH,EAAEC,GAsB3B,IArBA,IAmBeG,EAFXiB,EAjBc,IAARpB,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAiBrEqB,EAhBK,IAARtB,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAgB5DuB,EAfJ,IAARvB,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAenDwB,EAdb,IAARxB,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAc1CyB,EAbtB,IAARzB,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAajC0B,EAZ/B,IAARzB,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAYxB0B,EAXxC,IAARxB,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAWfyB,EAVjD,IAARzB,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAG,KAAY,IAAc,IAARA,EAAG,KAAY,GAW9E0B,EAVc,IAAR1B,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAUrE2B,EATK,IAAR3B,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAS5D4B,EARJ,IAAR9B,EAAG,IAAqB,IAARA,EAAG,KAAY,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAQjD+B,EAPf,IAARhC,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAOtCiC,EAN1B,IAARjC,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAM3BkC,EALrC,IAARlC,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAKhBmC,EAJhD,IAARnC,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAK9EoC,EAJc,IAARnC,EAAE,KAAsB,IAARA,EAAE,MAAa,GAAa,IAARA,EAAE,MAAa,IAAc,IAARA,EAAE,MAAa,GAMzE9D,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAQrBiE,IADNA,GADOA,IADPA,GADMA,IADNA,GADMA,IADNA,EAAIiB,EAAKY,EAAM,IACN,EAAI7B,IAAK,IACTiB,EAAK,IACL,EAAIjB,IAAK,IACTqB,EAAK,IACJ,GAAKrB,IAAK,IACVyB,EAAK,IACN,GAAKzB,IAAK,GASbA,IADNA,GADMA,IADNA,GADOA,IADPA,GADMA,IADNA,EAAIsB,EAAKJ,EAAK,IACL,EAAIlB,IAAK,IACTsB,EAAK,IACJ,EAAItB,IAAK,IACT0B,EAAK,IACN,GAAK1B,IAAK,IACV8B,EAAM,IACN,GAAK9B,IAAK,GASZA,IADPA,GADMA,IADNA,GADMA,IADNA,GADOA,IADPA,EAAI2B,EAAMJ,EAAK,IACL,EAAIvB,IAAK,IACT2B,EAAM,IACP,EAAI3B,IAAK,IACT+B,EAAM,IACN,GAAK/B,IAAK,IACVmB,EAAK,IACJ,GAAKnB,IAAK,GASbA,IADPA,GADOA,IADPA,GADMA,IADNA,GADMA,IADNA,EAAIgC,EAAMJ,EAAM,IACP,EAAI5B,IAAK,IACTgC,EAAM,IACN,EAAIhC,IAAK,IACToB,EAAK,IACJ,GAAKpB,IAAK,IACVwB,EAAK,IACL,GAAKxB,IAAK,GASdA,IADNA,GADMA,IADNA,GADMA,IADNA,GADMA,IADNA,EAAIiB,EAAKG,EAAK,IACL,EAAIpB,IAAK,IACTiB,EAAK,IACL,EAAIjB,IAAK,IACTkB,EAAK,IACL,GAAKlB,IAAK,IACVmB,EAAK,IACL,GAAKnB,IAAK,GASbA,IADNA,GADMA,IADNA,GADMA,IADNA,GADMA,IADNA,EAAIsB,EAAKD,EAAK,IACL,EAAIrB,IAAK,IACTsB,EAAK,IACL,EAAItB,IAAK,IACTuB,EAAK,IACL,GAAKvB,IAAK,IACVwB,EAAK,IACL,GAAKxB,IAAK,GASZA,IADPA,GADMA,IADNA,GADMA,IADNA,GADOA,IADPA,EAAI2B,EAAMD,EAAK,IACL,EAAI1B,IAAK,IACT2B,EAAM,IACP,EAAI3B,IAAK,IACT4B,EAAM,IACN,GAAK5B,IAAK,IACVyB,EAAK,IACJ,GAAKzB,IAAK,GASbA,IADPA,GADOA,IADPA,GADOA,IADPA,GADOA,IADPA,EAAIgC,EAAMD,EAAM,IACN,EAAI/B,IAAK,IACTgC,EAAM,IACN,EAAIhC,IAAK,IACT6B,EAAM,IACN,GAAK7B,IAAK,IACV8B,EAAM,IACN,GAAK9B,IAAK,GAGtBF,EAAG,GAAKmB,IAAQ,EAAI,IACpBnB,EAAG,GAAKmB,IAAQ,EAAI,IACpBnB,EAAG,GAAKmB,IAAO,GAAK,IACpBnB,EAAG,GAAKmB,IAAO,GAAK,IAEpBnB,EAAG,GAAKwB,IAAQ,EAAI,IACpBxB,EAAG,GAAKwB,IAAQ,EAAI,IACpBxB,EAAG,GAAKwB,IAAO,GAAK,IACpBxB,EAAG,GAAKwB,IAAO,GAAK,IAEpBxB,EAAG,GAAK6B,IAAS,EAAI,IACrB7B,EAAG,GAAK6B,IAAS,EAAI,IACrB7B,EAAE,IAAM6B,IAAQ,GAAK,IACrB7B,EAAE,IAAM6B,IAAQ,GAAK,IAErB7B,EAAE,IAAMkC,IAAS,EAAI,IACrBlC,EAAE,IAAMkC,IAAS,EAAI,IACrBlC,EAAE,IAAMkC,IAAQ,GAAK,IACrBlC,EAAE,IAAMkC,IAAQ,GAAK,IAErBlC,EAAE,IAAMyB,IAAQ,EAAI,IACpBzB,EAAE,IAAMyB,IAAQ,EAAI,IACpBzB,EAAE,IAAMyB,IAAO,GAAK,IACpBzB,EAAE,IAAMyB,IAAO,GAAK,IAEpBzB,EAAE,IAAM0B,IAAQ,EAAI,IACpB1B,EAAE,IAAM0B,IAAQ,EAAI,IACpB1B,EAAE,IAAM0B,IAAO,GAAK,IACpB1B,EAAE,IAAM0B,IAAO,GAAK,IAEpB1B,EAAE,IAAM2B,IAAQ,EAAI,IACpB3B,EAAE,IAAM2B,IAAQ,EAAI,IACpB3B,EAAE,IAAM2B,IAAO,GAAK,IACpB3B,EAAE,IAAM2B,IAAO,GAAK,IAEpB3B,EAAE,IAAM4B,IAAQ,EAAI,IACpB5B,EAAE,IAAM4B,IAAQ,EAAI,IACpB5B,EAAE,IAAM4B,IAAO,GAAK,IACpB5B,EAAE,IAAM4B,IAAO,GAAK,GACrB,CAOeS,CAAAzC,EAAIC,EAAIC,EAAEC,EACzB,CAEG,IAAAuC,EAAQ,IAAIhG,WAAW,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,MAGhG,SAASiG,EAA0BxC,EAAEyC,EAAKC,EAAEC,EAAKrG,EAAEmD,EAAEM,GAC/C,IACAI,EAAGjE,EADH0G,EAAI,IAAIrG,WAAW,IAAK2C,EAAI,IAAI3C,WAAW,IAE1CL,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAK0G,EAAE1G,GAAK,EAC3BA,IAAAA,EAAI,EAAGA,EAAI,EAAGA,IAAK0G,EAAE1G,GAAKuD,EAAEvD,GACjC,KAAOI,GAAK,IAAI,CAETJ,IADe0D,EAAAV,EAAE0D,EAAE7C,EAAEwC,GACrBrG,EAAI,EAAGA,EAAI,GAAIA,IAAK8D,EAAEyC,EAAKvG,GAAKwG,EAAEC,EAAKzG,GAAKgD,EAAEhD,GAEnD,IADAiE,EAAI,EACCjE,EAAI,EAAGA,EAAI,GAAIA,IAClBiE,EAAIA,GAAY,IAAPyC,EAAE1G,IAAa,EACxB0G,EAAE1G,GAAS,IAAJiE,EACPA,KAAO,EAEJ7D,GAAA,GACGmG,GAAA,GACAE,GAAA,EACT,CACD,GAAIrG,EAAI,EAEDJ,IADe0D,EAAAV,EAAE0D,EAAE7C,EAAEwC,GACrBrG,EAAI,EAAGA,EAAII,EAAGJ,IAAK8D,EAAEyC,EAAKvG,GAAKwG,EAAEC,EAAKzG,GAAKgD,EAAEhD,GAE7C,OAAA,CACR,CAED,SAAS2G,EAAsB7C,EAAEyC,EAAKnG,EAAEmD,EAAEM,GACpC,IACAI,EAAGjE,EADH0G,EAAI,IAAIrG,WAAW,IAAK2C,EAAI,IAAI3C,WAAW,IAE1CL,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAK0G,EAAE1G,GAAK,EAC3BA,IAAAA,EAAI,EAAGA,EAAI,EAAGA,IAAK0G,EAAE1G,GAAKuD,EAAEvD,GACjC,KAAOI,GAAK,IAAI,CAETJ,IADe0D,EAAAV,EAAE0D,EAAE7C,EAAEwC,GACrBrG,EAAI,EAAGA,EAAI,GAAIA,IAAK8D,EAAEyC,EAAKvG,GAAKgD,EAAEhD,GAEvC,IADAiE,EAAI,EACCjE,EAAI,EAAGA,EAAI,GAAIA,IAClBiE,EAAIA,GAAY,IAAPyC,EAAE1G,IAAa,EACxB0G,EAAE1G,GAAS,IAAJiE,EACPA,KAAO,EAEJ7D,GAAA,GACGmG,GAAA,EACT,CACD,GAAInG,EAAI,EAEDJ,IADe0D,EAAAV,EAAE0D,EAAE7C,EAAEwC,GACrBrG,EAAI,EAAGA,EAAII,EAAGJ,IAAK8D,EAAEyC,EAAKvG,GAAKgD,EAAEhD,GAEjC,OAAA,CACR,CAED,SAAS4G,EAAc9C,EAAEyC,EAAKtG,EAAEsD,EAAEM,GAC5BjE,IAAAA,EAAI,IAAIS,WAAW,IACFT,EAAAA,EAAE2D,EAAEM,EAAEwC,GAElBrG,IADL,IAAA6G,EAAK,IAAIxG,WAAW,GACfL,EAAI,EAAGA,EAAI,EAAGA,IAAQA,EAAAA,GAAKuD,EAAEvD,EAAE,IACxC,OAAO2G,EAAsB7C,EAAEyC,EAAKtG,EAAE4G,EAAGjH,EAC1C,CAED,SAASkH,EAAkBhD,EAAEyC,EAAKC,EAAEC,EAAKxG,EAAEsD,EAAEM,GACvCjE,IAAAA,EAAI,IAAIS,WAAW,IACFT,EAAAA,EAAE2D,EAAEM,EAAEwC,GAElBrG,IADL,IAAA6G,EAAK,IAAIxG,WAAW,GACfL,EAAI,EAAGA,EAAI,EAAGA,IAAQA,EAAAA,GAAKuD,EAAEvD,EAAE,IACxC,OAAOsG,EAA0BxC,EAAEyC,EAAKC,EAAEC,EAAKxG,EAAE4G,EAAGjH,EACrD,CAOG,IAAAmH,EAAW,SAASC,GAQtB,IAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAP3B/H,KAAAgI,OAAS,IAAIpH,WAAW,IACxBZ,KAAAwC,EAAI,IAAIyF,YAAY,IACpBjI,KAAAwD,EAAI,IAAIyE,YAAY,IACpBjI,KAAAkI,IAAM,IAAID,YAAY,GAC3BjI,KAAKmI,SAAW,EAChBnI,KAAKoI,IAAM,EAIXZ,EAAe,IAAVD,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAQvH,KAAAwC,EAAE,GAAkC,KAA3BgF,EAC3DC,EAAe,IAAVF,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGvH,KAAKwC,EAAE,GAAkC,MAA3BgF,IAAO,GAAOC,GAAO,GAChFC,EAAe,IAAVH,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGvH,KAAKwC,EAAE,GAAkC,MAA3BiF,IAAO,GAAOC,GAAO,GAChFC,EAAe,IAAVJ,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGvH,KAAKwC,EAAE,GAAkC,MAA3BkF,IAAQ,EAAMC,GAAO,GAChFC,EAAe,IAAVL,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGvH,KAAKwC,EAAE,GAAkC,KAA3BmF,IAAQ,EAAMC,GAAM,IAC1E5H,KAAAwC,EAAE,GAAOoF,IAAQ,EAAM,KAC5BC,EAAe,IAAVN,EAAI,KAAwB,IAAVA,EAAI,MAAe,EAAGvH,KAAKwC,EAAE,GAAkC,MAA3BoF,IAAO,GAAOC,GAAO,GAChFC,EAAe,IAAVP,EAAI,KAAwB,IAAVA,EAAI,MAAe,EAAGvH,KAAKwC,EAAE,GAAkC,MAA3BqF,IAAO,GAAOC,GAAO,GAChFC,EAAe,IAAVR,EAAI,KAAwB,IAAVA,EAAI,MAAe,EAAGvH,KAAKwC,EAAE,GAAkC,MAA3BsF,IAAQ,EAAMC,GAAO,GAC3E/H,KAAAwC,EAAE,GAAOuF,IAAQ,EAAM,IAE5B/H,KAAKkI,IAAI,GAAe,IAAVX,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDvH,KAAKkI,IAAI,GAAe,IAAVX,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDvH,KAAKkI,IAAI,GAAe,IAAVX,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDvH,KAAKkI,IAAI,GAAe,IAAVX,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDvH,KAAKkI,IAAI,GAAe,IAAVX,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDvH,KAAKkI,IAAI,GAAe,IAAVX,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDvH,KAAKkI,IAAI,GAAe,IAAVX,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDvH,KAAKkI,IAAI,GAAe,IAAVX,EAAI,KAAwB,IAAVA,EAAI,MAAe,CACrD,EAmUA,SAASc,EAAmBnE,EAAKoE,EAAQvB,EAAGC,EAAMlD,EAAGM,GAC/CjE,IAAAA,EAAI,IAAImH,EAASlD,GAGd,OAFPjE,EAAEoI,OAAOxB,EAAGC,EAAMlD,GAClB3D,EAAEqI,OAAOtE,EAAKoE,GACP,CACR,CAED,SAASG,EAA0BjF,EAAGkF,EAAM3B,EAAGC,EAAMlD,EAAGM,GAClD,IAAAb,EAAI,IAAI3C,WAAW,IAEvB,OADAyH,EAAmB9E,EAAE,EAAEwD,EAAEC,EAAKlD,EAAEM,GACzBL,EAAiBP,EAAEkF,EAAKnF,EAAE,EAClC,CAED,SAASoF,EAAiBtE,EAAE0C,EAAEvG,EAAEsD,EAAEM,GAC5B7D,IAAAA,EACJ,GAAIC,EAAI,GAAW,OAAA,EAGdD,IAFL8G,EAAkBhD,EAAE,EAAE0C,EAAE,EAAEvG,EAAEsD,EAAEM,GAC9BiE,EAAmBhE,EAAG,GAAIA,EAAG,GAAI7D,EAAI,GAAI6D,GACpC9D,EAAI,EAAGA,EAAI,GAAIA,IAAK8D,EAAE9D,GAAK,EACzB,OAAA,CACR,CAED,SAASqI,EAAsB7B,EAAE1C,EAAE7D,EAAEsD,EAAEM,GACjC7D,IAAAA,EACAgD,EAAI,IAAI3C,WAAW,IACvB,GAAIJ,EAAI,GAAW,OAAA,EAEf,GADJ2G,EAAc5D,EAAE,EAAE,GAAGO,EAAEM,GACiC,IAApDqE,EAA0BpE,EAAG,GAAGA,EAAG,GAAG7D,EAAI,GAAG+C,GAAiB,OAAA,EAE7DhD,IADL8G,EAAkBN,EAAE,EAAE1C,EAAE,EAAE7D,EAAEsD,EAAEM,GACzB7D,EAAI,EAAGA,EAAI,GAAIA,IAAKwG,EAAExG,GAAK,EACzB,OAAA,CACR,CAEQ,SAAAsI,EAASrG,EAAGsG,GACfvI,IAAAA,EACCA,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAOA,EAAAA,GAAU,EAALuI,EAAEvI,EACnC,CAED,SAASwI,EAASzE,GACZ/D,IAAAA,EAAGyI,EAAG3E,EAAI,EACd,IAAK9D,EAAI,EAAGA,EAAI,GAAIA,IACd+D,EAAAA,EAAE/D,GAAK8D,EAAI,MACfA,EAAI4E,KAAKC,MAAMF,EAAI,OACnB1E,EAAE/D,GAAKyI,EAAQ,MAAJ3E,EAEbC,EAAE,IAAMD,EAAE,EAAI,IAAMA,EAAE,EACvB,CAEQ,SAAA8E,EAAS5E,EAAG6E,EAAGzI,GAEtB,IADI0I,IAAAA,EAAGhF,IAAM1D,EAAE,GACNJ,EAAI,EAAGA,EAAI,GAAIA,IACtB8I,EAAIhF,GAAKE,EAAEhE,GAAK6I,EAAE7I,IAClBgE,EAAEhE,IAAM8I,EACRD,EAAE7I,IAAM8I,CAEX,CAEQ,SAAAC,EAAUhF,EAAGR,GACpB,IAAIvD,EAAGgJ,EAAG5I,EACNoG,EAAIzE,IAAM+G,EAAI/G,IACb/B,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAK8I,EAAE9I,GAAKuD,EAAEvD,GAIlC,IAHAwI,EAASM,GACTN,EAASM,GACTN,EAASM,GACJE,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAEtB,IADExC,EAAA,GAAKsC,EAAE,GAAK,MACT9I,EAAI,EAAGA,EAAI,GAAIA,IAClBwG,EAAExG,GAAK8I,EAAE9I,GAAK,OAAWwG,EAAExG,EAAE,IAAI,GAAM,GACvCwG,EAAExG,EAAE,IAAM,MAEZwG,EAAE,IAAMsC,EAAE,IAAM,OAAWtC,EAAE,KAAK,GAAM,GACnCpG,EAAAoG,EAAE,KAAK,GAAM,EAClBA,EAAE,KAAO,MACAsC,EAAAA,EAAGtC,EAAG,EAAEpG,EAClB,CACD,IAAKJ,EAAI,EAAGA,EAAI,GAAIA,IAClB+D,EAAE,EAAE/D,GAAY,IAAP8I,EAAE9I,GACX+D,EAAE,EAAE/D,EAAE,GAAK8I,EAAE9I,IAAI,CAEpB,CAEQ,SAAAiJ,EAASV,EAAGnI,GACf0D,IAAAA,EAAI,IAAIzD,WAAW,IAAKJ,EAAI,IAAII,WAAW,IAG/C,OAFA0I,EAAUjF,EAAGyE,GACbQ,EAAU9I,EAAGG,GACNqD,EAAiBK,EAAG,EAAG7D,EAAG,EAClC,CAED,SAASiJ,EAASX,GACZ,IAAAtI,EAAI,IAAII,WAAW,IAEvB,OADA0I,EAAU9I,EAAGsI,GACC,EAAPtI,EAAE,EACV,CAEQ,SAAAkJ,EAAYpF,EAAGR,GAClBvD,IAAAA,EACCA,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAK+D,EAAE/D,GAAKuD,EAAE,EAAEvD,IAAMuD,EAAE,EAAEvD,EAAE,IAAM,GACtD+D,EAAE,KAAO,KACV,CAEQ,SAAAqF,EAAErF,EAAGwE,EAAGnI,GACNJ,IAAAA,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAK+D,EAAE/D,GAAKuI,EAAEvI,GAAKI,EAAEJ,EAC9C,CAEQ,SAAAqJ,EAAEtF,EAAGwE,EAAGnI,GACNJ,IAAAA,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAK+D,EAAE/D,GAAKuI,EAAEvI,GAAKI,EAAEJ,EAC9C,CAEQ,SAAAsJ,EAAEvF,EAAGwE,EAAGnI,GACX,IAAAqI,EAAG3E,EACJmD,EAAK,EAAIC,EAAK,EAAIC,EAAK,EAAIC,EAAK,EAAIC,EAAK,EAAIC,EAAK,EAAIC,EAAK,EAAIC,EAAK,EACpE+B,EAAK,EAAIC,EAAK,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EACrEC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EACrEC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,EAAM,EAC5DC,EAAK1K,EAAE,GACP2K,EAAK3K,EAAE,GACP4K,EAAK5K,EAAE,GACP6K,EAAK7K,EAAE,GACP8K,EAAK9K,EAAE,GACP+K,EAAK/K,EAAE,GACPgL,EAAKhL,EAAE,GACPiL,EAAKjL,EAAE,GACPkL,EAAKlL,EAAE,GACPmL,EAAKnL,EAAE,GACPoL,EAAMpL,EAAE,IACRqL,EAAMrL,EAAE,IACRsL,EAAMtL,EAAE,IACRuL,EAAMvL,EAAE,IACRwL,EAAMxL,EAAE,IACRyL,EAAMzL,EAAE,IAGV6G,IADAwB,EAAIF,EAAE,IACIuC,EACV5D,GAAMuB,EAAIsC,EACV5D,GAAMsB,EAAIuC,EACV5D,GAAMqB,EAAIwC,EACV5D,GAAMoB,EAAIyC,EACV5D,GAAMmB,EAAI0C,EACV5D,GAAMkB,EAAI2C,EACV5D,GAAMiB,EAAI4C,EACV9B,GAAMd,EAAI6C,EACV9B,GAAMf,EAAI8C,EACV9B,GAAOhB,EAAI+C,EACX9B,GAAOjB,EAAIgD,EACX9B,GAAOlB,EAAIiD,EACX9B,GAAOnB,EAAIkD,EACX9B,GAAOpB,EAAImD,EACX9B,GAAOrB,EAAIoD,EAEX3E,IADAuB,EAAIF,EAAE,IACIuC,EACV3D,GAAMsB,EAAIsC,EACV3D,GAAMqB,EAAIuC,EACV3D,GAAMoB,EAAIwC,EACV3D,GAAMmB,EAAIyC,EACV3D,GAAMkB,EAAI0C,EACV3D,GAAMiB,EAAI2C,EACV7B,GAAMd,EAAI4C,EACV7B,GAAMf,EAAI6C,EACV7B,GAAOhB,EAAI8C,EACX7B,GAAOjB,EAAI+C,EACX7B,GAAOlB,EAAIgD,EACX7B,GAAOnB,EAAIiD,EACX7B,GAAOpB,EAAIkD,EACX7B,GAAOrB,EAAImD,EACX7B,GAAOtB,EAAIoD,EAEX1E,IADAsB,EAAIF,EAAE,IACIuC,EACV1D,GAAMqB,EAAIsC,EACV1D,GAAMoB,EAAIuC,EACV1D,GAAMmB,EAAIwC,EACV1D,GAAMkB,EAAIyC,EACV1D,GAAMiB,EAAI0C,EACV5B,GAAMd,EAAI2C,EACV5B,GAAMf,EAAI4C,EACV5B,GAAOhB,EAAI6C,EACX5B,GAAOjB,EAAI8C,EACX5B,GAAOlB,EAAI+C,EACX5B,GAAOnB,EAAIgD,EACX5B,GAAOpB,EAAIiD,EACX5B,GAAOrB,EAAIkD,EACX5B,GAAOtB,EAAImD,EACX5B,GAAOvB,EAAIoD,EAEXzE,IADAqB,EAAIF,EAAE,IACIuC,EACVzD,GAAMoB,EAAIsC,EACVzD,GAAMmB,EAAIuC,EACVzD,GAAMkB,EAAIwC,EACVzD,GAAMiB,EAAIyC,EACV3B,GAAMd,EAAI0C,EACV3B,GAAMf,EAAI2C,EACV3B,GAAOhB,EAAI4C,EACX3B,GAAOjB,EAAI6C,EACX3B,GAAOlB,EAAI8C,EACX3B,GAAOnB,EAAI+C,EACX3B,GAAOpB,EAAIgD,EACX3B,GAAOrB,EAAIiD,EACX3B,GAAOtB,EAAIkD,EACX3B,GAAOvB,EAAImD,EACX3B,GAAOxB,EAAIoD,EAEXxE,IADAoB,EAAIF,EAAE,IACIuC,EACVxD,GAAMmB,EAAIsC,EACVxD,GAAMkB,EAAIuC,EACVxD,GAAMiB,EAAIwC,EACV1B,GAAMd,EAAIyC,EACV1B,GAAMf,EAAI0C,EACV1B,GAAOhB,EAAI2C,EACX1B,GAAOjB,EAAI4C,EACX1B,GAAOlB,EAAI6C,EACX1B,GAAOnB,EAAI8C,EACX1B,GAAOpB,EAAI+C,EACX1B,GAAOrB,EAAIgD,EACX1B,GAAOtB,EAAIiD,EACX1B,GAAOvB,EAAIkD,EACX1B,GAAOxB,EAAImD,EACX1B,GAAOzB,EAAIoD,EAEXvE,IADAmB,EAAIF,EAAE,IACIuC,EACVvD,GAAMkB,EAAIsC,EACVvD,GAAMiB,EAAIuC,EACVzB,GAAMd,EAAIwC,EACVzB,GAAMf,EAAIyC,EACVzB,GAAOhB,EAAI0C,EACXzB,GAAOjB,EAAI2C,EACXzB,GAAOlB,EAAI4C,EACXzB,GAAOnB,EAAI6C,EACXzB,GAAOpB,EAAI8C,EACXzB,GAAOrB,EAAI+C,EACXzB,GAAOtB,EAAIgD,EACXzB,GAAOvB,EAAIiD,EACXzB,GAAOxB,EAAIkD,EACXzB,GAAOzB,EAAImD,EACXzB,GAAO1B,EAAIoD,EAEXtE,IADAkB,EAAIF,EAAE,IACIuC,EACVtD,GAAMiB,EAAIsC,EACVxB,GAAMd,EAAIuC,EACVxB,GAAMf,EAAIwC,EACVxB,GAAOhB,EAAIyC,EACXxB,GAAOjB,EAAI0C,EACXxB,GAAOlB,EAAI2C,EACXxB,GAAOnB,EAAI4C,EACXxB,GAAOpB,EAAI6C,EACXxB,GAAOrB,EAAI8C,EACXxB,GAAOtB,EAAI+C,EACXxB,GAAOvB,EAAIgD,EACXxB,GAAOxB,EAAIiD,EACXxB,GAAOzB,EAAIkD,EACXxB,GAAO1B,EAAImD,EACXxB,GAAO3B,EAAIoD,EAEXrE,IADAiB,EAAIF,EAAE,IACIuC,EACVvB,GAAMd,EAAIsC,EACVvB,GAAMf,EAAIuC,EACVvB,GAAOhB,EAAIwC,EACXvB,GAAOjB,EAAIyC,EACXvB,GAAOlB,EAAI0C,EACXvB,GAAOnB,EAAI2C,EACXvB,GAAOpB,EAAI4C,EACXvB,GAAOrB,EAAI6C,EACXvB,GAAOtB,EAAI8C,EACXvB,GAAOvB,EAAI+C,EACXvB,GAAOxB,EAAIgD,EACXvB,GAAOzB,EAAIiD,EACXvB,GAAO1B,EAAIkD,EACXvB,GAAO3B,EAAImD,EACXvB,GAAO5B,EAAIoD,EAEXtC,IADAd,EAAIF,EAAE,IACIuC,EACVtB,GAAMf,EAAIsC,EACVtB,GAAOhB,EAAIuC,EACXtB,GAAOjB,EAAIwC,EACXtB,GAAOlB,EAAIyC,EACXtB,GAAOnB,EAAI0C,EACXtB,GAAOpB,EAAI2C,EACXtB,GAAOrB,EAAI4C,EACXtB,GAAOtB,EAAI6C,EACXtB,GAAOvB,EAAI8C,EACXtB,GAAOxB,EAAI+C,EACXtB,GAAOzB,EAAIgD,EACXtB,GAAO1B,EAAIiD,EACXtB,GAAO3B,EAAIkD,EACXtB,GAAO5B,EAAImD,EACXtB,GAAO7B,EAAIoD,EAEXrC,IADAf,EAAIF,EAAE,IACIuC,EACVrB,GAAOhB,EAAIsC,EACXrB,GAAOjB,EAAIuC,EACXrB,GAAOlB,EAAIwC,EACXrB,GAAOnB,EAAIyC,EACXrB,GAAOpB,EAAI0C,EACXrB,GAAOrB,EAAI2C,EACXrB,GAAOtB,EAAI4C,EACXrB,GAAOvB,EAAI6C,EACXrB,GAAOxB,EAAI8C,EACXrB,GAAOzB,EAAI+C,EACXrB,GAAO1B,EAAIgD,EACXrB,GAAO3B,EAAIiD,EACXrB,GAAO5B,EAAIkD,EACXrB,GAAO7B,EAAImD,EACXrB,GAAO9B,EAAIoD,EAEXpC,IADAhB,EAAIF,EAAE,KACKuC,EACXpB,GAAOjB,EAAIsC,EACXpB,GAAOlB,EAAIuC,EACXpB,GAAOnB,EAAIwC,EACXpB,GAAOpB,EAAIyC,EACXpB,GAAOrB,EAAI0C,EACXpB,GAAOtB,EAAI2C,EACXpB,GAAOvB,EAAI4C,EACXpB,GAAOxB,EAAI6C,EACXpB,GAAOzB,EAAI8C,EACXpB,GAAO1B,EAAI+C,EACXpB,GAAO3B,EAAIgD,EACXpB,GAAO5B,EAAIiD,EACXpB,GAAO7B,EAAIkD,EACXpB,GAAO9B,EAAImD,EACXpB,GAAO/B,EAAIoD,EAEXnC,IADAjB,EAAIF,EAAE,KACKuC,EACXnB,GAAOlB,EAAIsC,EACXnB,GAAOnB,EAAIuC,EACXnB,GAAOpB,EAAIwC,EACXnB,GAAOrB,EAAIyC,EACXnB,GAAOtB,EAAI0C,EACXnB,GAAOvB,EAAI2C,EACXnB,GAAOxB,EAAI4C,EACXnB,GAAOzB,EAAI6C,EACXnB,GAAO1B,EAAI8C,EACXnB,GAAO3B,EAAI+C,EACXnB,GAAO5B,EAAIgD,EACXnB,GAAO7B,EAAIiD,EACXnB,GAAO9B,EAAIkD,EACXnB,GAAO/B,EAAImD,EACXnB,GAAOhC,EAAIoD,EAEXlC,IADAlB,EAAIF,EAAE,KACKuC,EACXlB,GAAOnB,EAAIsC,EACXlB,GAAOpB,EAAIuC,EACXlB,GAAOrB,EAAIwC,EACXlB,GAAOtB,EAAIyC,EACXlB,GAAOvB,EAAI0C,EACXlB,GAAOxB,EAAI2C,EACXlB,GAAOzB,EAAI4C,EACXlB,GAAO1B,EAAI6C,EACXlB,GAAO3B,EAAI8C,EACXlB,GAAO5B,EAAI+C,EACXlB,GAAO7B,EAAIgD,EACXlB,GAAO9B,EAAIiD,EACXlB,GAAO/B,EAAIkD,EACXlB,GAAOhC,EAAImD,EACXlB,GAAOjC,EAAIoD,EAEXjC,IADAnB,EAAIF,EAAE,KACKuC,EACXjB,GAAOpB,EAAIsC,EACXjB,GAAOrB,EAAIuC,EACXjB,GAAOtB,EAAIwC,EACXjB,GAAOvB,EAAIyC,EACXjB,GAAOxB,EAAI0C,EACXjB,GAAOzB,EAAI2C,EACXjB,GAAO1B,EAAI4C,EACXjB,GAAO3B,EAAI6C,EACXjB,GAAO5B,EAAI8C,EACXjB,GAAO7B,EAAI+C,EACXjB,GAAO9B,EAAIgD,EACXjB,GAAO/B,EAAIiD,EACXjB,GAAOhC,EAAIkD,EACXjB,GAAOjC,EAAImD,EACXjB,GAAOlC,EAAIoD,EAEXhC,IADApB,EAAIF,EAAE,KACKuC,EACXhB,GAAOrB,EAAIsC,EACXhB,GAAOtB,EAAIuC,EACXhB,GAAOvB,EAAIwC,EACXhB,GAAOxB,EAAIyC,EACXhB,GAAOzB,EAAI0C,EACXhB,GAAO1B,EAAI2C,EACXhB,GAAO3B,EAAI4C,EACXhB,GAAO5B,EAAI6C,EACXhB,GAAO7B,EAAI8C,EACXhB,GAAO9B,EAAI+C,EACXhB,GAAO/B,EAAIgD,EACXhB,GAAOhC,EAAIiD,EACXhB,GAAOjC,EAAIkD,EACXhB,GAAOlC,EAAImD,EACXhB,GAAOnC,EAAIoD,EAEX/B,IADArB,EAAIF,EAAE,KACKuC,EAkBX5D,GAAO,IAhBP8C,GAAOvB,EAAIuC,GAiBX7D,GAAO,IAhBP8C,GAAOxB,EAAIwC,GAiBX7D,GAAO,IAhBP8C,GAAOzB,EAAIyC,GAiBX7D,GAAO,IAhBP8C,GAAO1B,EAAI0C,GAiBX7D,GAAO,IAhBP8C,GAAO3B,EAAI2C,GAiBX7D,GAAO,IAhBP8C,GAAO5B,EAAI4C,GAiBX7D,GAAO,IAhBP8C,GAAO7B,EAAI6C,GAiBX/B,GAAO,IAhBPgB,GAAO9B,EAAI8C,GAiBX/B,GAAO,IAhBPgB,GAAO/B,EAAI+C,GAiBX/B,GAAO,IAhBPgB,GAAOhC,EAAIgD,GAiBX/B,GAAO,IAhBPgB,GAAOjC,EAAIiD,GAiBX/B,GAAO,IAhBPgB,GAAOlC,EAAIkD,GAiBX/B,GAAO,IAhBPgB,GAAOnC,EAAImD,GAiBX/B,GAAO,IAhBPgB,GAAOpC,EAAIoD,GAqBsC5E,GAAjDwB,GAnBAxB,GAAO,IAhBP8C,GAAOtB,EAAIsC,KAkCXjH,EAAI,GACU,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSvB,GAAjDuB,EAAKvB,EAAKpD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACStB,GAAjDsB,EAAKtB,EAAKrD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSrB,GAAjDqB,EAAKrB,EAAKtD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSpB,GAAjDoB,EAAKpB,EAAKvD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSnB,GAAjDmB,EAAKnB,EAAKxD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSlB,GAAjDkB,EAAKlB,EAAKzD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSjB,GAAjDiB,EAAKjB,EAAK1D,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSc,GAAjDd,EAAKc,EAAKzF,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSe,GAAjDf,EAAKe,EAAK1F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQgB,GAAhDhB,EAAIgB,EAAM3F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQiB,GAAhDjB,EAAIiB,EAAM5F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQkB,GAAhDlB,EAAIkB,EAAM7F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQmB,GAAhDnB,EAAImB,EAAM9F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQoB,GAAhDpB,EAAIoB,EAAM/F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQqB,GAAhDrB,EAAIqB,EAAMhG,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QAKSxB,GAAjDwB,GAJM3E,GAAAA,EAAE,EAAI,IAAMA,EAAE,KAGpBA,EAAI,GACU,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSvB,GAAjDuB,EAAKvB,EAAKpD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACStB,GAAjDsB,EAAKtB,EAAKrD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSrB,GAAjDqB,EAAKrB,EAAKtD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSpB,GAAjDoB,EAAKpB,EAAKvD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSnB,GAAjDmB,EAAKnB,EAAKxD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSlB,GAAjDkB,EAAKlB,EAAKzD,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSjB,GAAjDiB,EAAKjB,EAAK1D,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSc,GAAjDd,EAAKc,EAAKzF,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACSe,GAAjDf,EAAKe,EAAK1F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQgB,GAAhDhB,EAAIgB,EAAM3F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQiB,GAAhDjB,EAAIiB,EAAM5F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQkB,GAAhDlB,EAAIkB,EAAM7F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQmB,GAAhDnB,EAAImB,EAAM9F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQoB,GAAhDpB,EAAIoB,EAAM/F,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QACQqB,GAAhDrB,EAAIqB,EAAMhG,EAAI,OAAgD,OAAzCA,EAAI4E,KAAKC,MAAMF,EAAI,QAClC3E,GAAAA,EAAE,EAAI,IAAMA,EAAE,GAEpBC,EAAG,GAAKkD,EACRlD,EAAG,GAAKmD,EACRnD,EAAG,GAAKoD,EACRpD,EAAG,GAAKqD,EACRrD,EAAG,GAAKsD,EACRtD,EAAG,GAAKuD,EACRvD,EAAG,GAAKwD,EACRxD,EAAG,GAAKyD,EACRzD,EAAG,GAAKwF,EACRxF,EAAG,GAAKyF,EACRzF,EAAE,IAAM0F,EACR1F,EAAE,IAAM2F,EACR3F,EAAE,IAAM4F,EACR5F,EAAE,IAAM6F,EACR7F,EAAE,IAAM8F,EACR9F,EAAE,IAAM+F,CACT,CAEQ,SAAAgC,EAAE/H,EAAGwE,GACVxE,EAAAA,EAAGwE,EAAGA,EACT,CAEQ,SAAAwD,EAAShI,EAAG/D,GACnB,IACIuI,EADAzE,EAAI/B,IAEHwG,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAKzE,EAAEyE,GAAKvI,EAAEuI,GAClC,IAAKA,EAAI,IAAKA,GAAK,EAAGA,IACpBuD,EAAEhI,EAAGA,GACI,IAANyE,GAAiB,IAANA,GAAWzE,EAAAA,EAAGA,EAAG9D,GAE5BuI,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAKxE,EAAEwE,GAAKzE,EAAEyE,EACnC,CAEQ,SAAAyD,EAAQjI,EAAG/D,GAClB,IACIuI,EADAzE,EAAI/B,IAEHwG,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAKzE,EAAEyE,GAAKvI,EAAEuI,GAClC,IAAKA,EAAI,IAAKA,GAAK,EAAGA,IAClBuD,EAAEhI,EAAGA,GACI,IAANyE,GAAWzE,EAAAA,EAAGA,EAAG9D,GAEnBuI,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAKxE,EAAEwE,GAAKzE,EAAEyE,EACnC,CAEQ,SAAA0D,EAAkBpD,EAAGtF,EAAGS,GAC3B,IAC0B/B,EAAGjC,EAD7B0G,EAAI,IAAIrG,WAAW,IACnB2C,EAAI,IAAId,aAAa,IACrBqG,EAAIxG,IAAM3B,EAAI2B,IAAM+B,EAAI/B,IACxB9B,EAAI8B,IAAMmK,EAAInK,IAAMvC,EAAIuC,IACvB/B,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAK0G,EAAE1G,GAAKuD,EAAEvD,GAIlC,IAHE0G,EAAA,IAAW,IAANnD,EAAE,IAAS,GAClBmD,EAAE,IAAI,IACNyC,EAAYnG,EAAEgB,GACThE,EAAI,EAAGA,EAAI,GAAIA,IAClBI,EAAEJ,GAAGgD,EAAEhD,GACPC,EAAED,GAAGuI,EAAEvI,GAAG8D,EAAE9D,GAAG,EAGjB,IADAuI,EAAE,GAAGtI,EAAE,GAAG,EACLD,EAAE,IAAKA,GAAG,IAAKA,EAETuI,EAAAA,EAAEnI,EADX6B,EAAGyE,EAAE1G,IAAI,MAAQ,EAAFA,GAAM,GAEZ8D,EAAAA,EAAE7D,EAAEgC,GACXiK,EAAAA,EAAE3D,EAAEzE,GACJyE,EAAAA,EAAEA,EAAEzE,GACJA,EAAAA,EAAE1D,EAAEH,GACJoJ,EAAAjJ,EAAEA,EAAEH,GACN6L,EAAE7L,EAAEiM,GACJJ,EAAEtM,EAAE+I,GACFA,EAAAA,EAAEzE,EAAEyE,GACJzE,EAAAA,EAAE1D,EAAE8L,GACJA,EAAAA,EAAE3D,EAAEzE,GACJyE,EAAAA,EAAEA,EAAEzE,GACNgI,EAAE1L,EAAEmI,GACFzE,EAAAA,EAAE7D,EAAET,GACJ+I,EAAAA,EAAEzE,EAAErB,GACJ8F,EAAAA,EAAEA,EAAEtI,GACJ6D,EAAAA,EAAEA,EAAEyE,GACJA,EAAAA,EAAEtI,EAAET,GACJ8J,EAAArJ,EAAEG,EAAE4C,GACN8I,EAAE1L,EAAE8L,GACK3D,EAAAA,EAAEnI,EAAE6B,GACJ6B,EAAAA,EAAE7D,EAAEgC,GAEf,IAAKjC,EAAI,EAAGA,EAAI,GAAIA,IAChBA,EAAAA,EAAE,IAAIuI,EAAEvI,GACRA,EAAAA,EAAE,IAAI8D,EAAE9D,GACRA,EAAAA,EAAE,IAAII,EAAEJ,GACRA,EAAAA,EAAE,IAAIC,EAAED,GAER,IAAAmM,EAAMnJ,EAAEoJ,SAAS,IACjBC,EAAMrJ,EAAEoJ,SAAS,IAId,OAHPL,EAASI,EAAIA,GACX7C,EAAA+C,EAAIA,EAAIF,GACVpD,EAAUF,EAAEwD,GACL,CACR,CAEQ,SAAAC,EAAuBzD,EAAGtF,GAC1B,OAAA0I,EAAkBpD,EAAGtF,EAAGjB,EAChC,CAEQ,SAAAiK,EAAmBlJ,EAAGL,GAEtB,OADPb,EAAYa,EAAG,IACRsJ,EAAuBjJ,EAAGL,EAClC,CAEQ,SAAAwJ,EAAoB3I,EAAGR,EAAGL,GAC7BpD,IAAAA,EAAI,IAAIS,WAAW,IAEvB,OADkBT,EAAAA,EAAGoD,EAAGK,GACjB8C,EAAqBtC,EAAGxB,EAAIzC,EAAGyG,EACvC,CA53BDU,EAASxF,UAAUkL,OAAS,SAASjG,EAAGC,EAAMiG,GA2B5C,IA1BA,IACIzF,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI1D,EAChC6I,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAFpCC,EAAQ5N,KAAKoI,IAAM,EAAK,KAIxByF,EAAK7N,KAAKwD,EAAE,GACZsK,EAAK9N,KAAKwD,EAAE,GACZuK,EAAK/N,KAAKwD,EAAE,GACZwK,EAAKhO,KAAKwD,EAAE,GACZyK,EAAKjO,KAAKwD,EAAE,GACZ0K,EAAKlO,KAAKwD,EAAE,GACZ2K,EAAKnO,KAAKwD,EAAE,GACZ4K,EAAKpO,KAAKwD,EAAE,GACZ6K,EAAKrO,KAAKwD,EAAE,GACZ8K,EAAKtO,KAAKwD,EAAE,GAEZ+K,EAAKvO,KAAKwC,EAAE,GACZgM,EAAKxO,KAAKwC,EAAE,GACZiM,EAAKzO,KAAKwC,EAAE,GACZkM,EAAK1O,KAAKwC,EAAE,GACZmM,EAAK3O,KAAKwC,EAAE,GACZoM,EAAK5O,KAAKwC,EAAE,GACZqM,EAAK7O,KAAKwC,EAAE,GACZsM,EAAK9O,KAAKwC,EAAE,GACZuM,EAAK/O,KAAKwC,EAAE,GACZwM,EAAKhP,KAAKwC,EAAE,GAETyK,GAAS,IAcT5I,EAFLA,EAAI,EAGJ6I,IAdmDW,GAAmC,MAAtFrG,EAAkB,IAAbT,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAcrCuH,EACXrB,IAd2DY,GAA2B,MAA3BtG,IAAO,IAAlEC,EAAkB,IAAbV,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAAgC,KAcpE,EAAIgI,GAChB9B,IAd2Da,GAA2B,MAA3BtG,IAAO,IAAlEC,EAAkB,IAAbX,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAAgC,KAcpE,EAAI+H,GAChB7B,IAd2Dc,GAA2B,MAA3BtG,IAAQ,GAAnEC,EAAkB,IAAbZ,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAAgC,KAcpE,EAAI8H,GAEhBzK,GADA6I,IAd2De,GAA2B,MAA3BtG,IAAQ,GAAnEC,EAAkB,IAAbb,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAA+B,MAcnE,EAAI6H,MACJ,GAAW3B,GAAA,KACvBA,IAfAgB,GAAQtG,IAAQ,EAAM,OAeV,EAAIgH,GAChB1B,IAf2DiB,GAA2B,MAA3BvG,IAAO,IAAlEC,EAAkB,IAAbd,EAAEC,EAAK,KAA2B,IAAbD,EAAEC,EAAK,MAAe,IAAgC,KAepE,EAAI2H,GAChBzB,IAf2DkB,GAA2B,MAA3BvG,IAAO,IAAlEC,EAAkB,IAAbf,EAAEC,EAAK,KAA2B,IAAbD,EAAEC,EAAK,MAAe,IAAgC,KAepE,EAAI0H,GAChBxB,IAf2DmB,GAA2B,MAA3BvG,IAAQ,GAAnEC,EAAkB,IAAbhB,EAAEC,EAAK,KAA2B,IAAbD,EAAEC,EAAK,MAAe,IAAgC,KAepE,EAAIyH,GAIXpK,EAFLA,IADA6I,IAfAoB,GAAQvG,IAAO,EAAM6F,IAeT,EAAIY,MACH,GAGbrB,GAAMU,EAAKW,EACXrB,GAAMW,EAAKS,EACXpB,GAAMY,GAAM,EAAIiB,GAChB7B,GAAMa,GAAM,EAAIe,GAEhB1K,GADA8I,GAAMc,GAAM,EAAIa,MACJ,GAAW3B,GAAA,KACvBA,GAAMe,GAAM,EAAIW,GAChB1B,GAAMgB,GAAM,EAAIS,GAChBzB,GAAMiB,GAAM,EAAIO,GAChBxB,GAAMkB,GAAM,EAAIK,GAEhBrK,IADA8I,GAAMmB,GAAM,EAAIG,MACH,GAAWtB,GAAA,KAEnB9I,EAAAA,EACL+I,GAAMS,EAAKY,EACXrB,GAAMU,EAAKU,EACXpB,GAAMW,EAAKQ,EACXnB,GAAMY,GAAM,EAAIgB,GAEhB3K,GADA+I,GAAMa,GAAM,EAAIc,MACJ,GAAW3B,GAAA,KACvBA,GAAMc,GAAM,EAAIY,GAChB1B,GAAMe,GAAM,EAAIU,GAChBzB,GAAMgB,GAAM,EAAIQ,GAChBxB,GAAMiB,GAAM,EAAIM,GAIXtK,EAFLA,IADA+I,GAAMkB,GAAM,EAAII,MACH,GAGbrB,GAAMQ,EAAKa,EACXrB,GAAMS,EAAKW,EACXpB,GAAMU,EAAKS,EACXnB,GAAMW,EAAKO,EAEXlK,GADAgJ,GAAMY,GAAM,EAAIe,MACJ,GAAW3B,GAAA,KACvBA,GAAMa,GAAM,EAAIa,GAChB1B,GAAMc,GAAM,EAAIW,GAChBzB,GAAMe,GAAM,EAAIS,GAChBxB,GAAMgB,GAAM,EAAIO,GAIXvK,EAFLA,IADAgJ,GAAMiB,GAAM,EAAIK,MACH,GAGbrB,GAAMO,EAAKc,EACXrB,GAAMQ,EAAKY,EACXpB,GAAMS,EAAKU,EACXnB,GAAMU,EAAKQ,EAEXnK,GADAiJ,GAAMW,EAAKM,KACC,GAAWjB,GAAA,KACvBA,GAAMY,GAAM,EAAIc,GAChB1B,GAAMa,GAAM,EAAIY,GAChBzB,GAAMc,GAAM,EAAIU,GAChBxB,GAAMe,GAAM,EAAIQ,GAIXxK,EAFLA,IADAiJ,GAAMgB,GAAM,EAAIM,MACH,GAGbrB,GAAMM,EAAKe,EACXrB,GAAMO,EAAKa,EACXpB,GAAMQ,EAAKW,EACXnB,GAAMS,EAAKS,EAEXpK,GADAkJ,GAAMU,EAAKO,KACC,GAAWjB,GAAA,KACvBA,GAAMW,EAAKK,EACXhB,GAAMY,GAAM,EAAIa,GAChBzB,GAAMa,GAAM,EAAIW,GAChBxB,GAAMc,GAAM,EAAIS,GAIXzK,EAFLA,IADAkJ,GAAMe,GAAM,EAAIO,MACH,GAGbrB,GAAMK,EAAKgB,EACXrB,GAAMM,EAAKc,EACXpB,GAAMO,EAAKY,EACXnB,GAAMQ,EAAKU,EAEXrK,GADAmJ,GAAMS,EAAKQ,KACC,GAAWjB,GAAA,KACvBA,GAAMU,EAAKM,EACXhB,GAAMW,EAAKI,EACXf,GAAMY,GAAM,EAAIY,GAChBxB,GAAMa,GAAM,EAAIU,GAIX1K,EAFLA,IADAmJ,GAAMc,GAAM,EAAIQ,MACH,GAGbrB,GAAMI,EAAKiB,EACXrB,GAAMK,EAAKe,EACXpB,GAAMM,EAAKa,EACXnB,GAAMO,EAAKW,EAEXtK,GADAoJ,GAAMQ,EAAKS,KACC,GAAWjB,GAAA,KACvBA,GAAMS,EAAKO,EACXhB,GAAMU,EAAKK,EACXf,GAAMW,EAAKG,EACXd,GAAMY,GAAM,EAAIW,GAIX3K,EAFLA,IADAoJ,GAAMa,GAAM,EAAIS,MACH,GAGbrB,GAAMG,EAAKkB,EACXrB,GAAMI,EAAKgB,EACXpB,GAAMK,EAAKc,EACXnB,GAAMM,EAAKY,EAEXvK,GADAqJ,GAAMO,EAAKU,KACC,GAAWjB,GAAA,KACvBA,GAAMQ,EAAKQ,EACXhB,GAAMS,EAAKM,EACXf,GAAMU,EAAKI,EACXd,GAAMW,EAAKE,EAINlK,EAFLA,IADAqJ,GAAMY,GAAM,EAAIU,MACH,GAGbrB,GAAME,EAAKmB,EACXrB,GAAMG,EAAKiB,EACXpB,GAAMI,EAAKe,EACXnB,GAAMK,EAAKa,EAEXxK,GADAsJ,GAAMM,EAAKW,KACC,GAAWjB,GAAA,KACvBA,GAAMO,EAAKS,EACXhB,GAAMQ,EAAKO,EACXf,GAAMS,EAAKK,EACXd,GAAMU,EAAKG,EAUNX,EAJLX,EAAS,MADT7I,GADAA,IAFAA,IADAsJ,GAAMW,EAAKC,KACE,KAED,GAAKlK,EAAM,IAhIC6I,GAAA,MAiIT,GAMVY,EAHCzJ,GADNA,KAAW,GAKN0J,EA5GmBX,GAAA,KA6GnBY,EA/FmBX,GAAA,KAgGnBY,EAlFmBX,GAAA,KAmFnBY,EArEmBX,GAAA,KAsEnBY,EAxDmBX,GAAA,KAyDnBY,EA3CmBX,GAAA,KA4CnBY,EA9BmBX,GAAA,KA+BnBY,EAjBmBX,GAAA,KAmBhB3G,GAAA,GACCiG,GAAA,GAEXjN,KAAKwD,EAAE,GAAKqK,EACZ7N,KAAKwD,EAAE,GAAKsK,EACZ9N,KAAKwD,EAAE,GAAKuK,EACZ/N,KAAKwD,EAAE,GAAKwK,EACZhO,KAAKwD,EAAE,GAAKyK,EACZjO,KAAKwD,EAAE,GAAK0K,EACZlO,KAAKwD,EAAE,GAAK2K,EACZnO,KAAKwD,EAAE,GAAK4K,EACZpO,KAAKwD,EAAE,GAAK6K,EACZrO,KAAKwD,EAAE,GAAK8K,CACd,EAEAhH,EAASxF,UAAU0G,OAAS,SAASyG,EAAKC,GACpC,IACA7K,EAAG8K,EAAMpP,EAAGQ,EADZ6O,EAAI,IAAInH,YAAY,IAGxB,GAAIjI,KAAKmI,SAAU,CAGjB,IAFA5H,EAAIP,KAAKmI,SACTnI,KAAKgI,OAAOzH,KAAO,EACZA,EAAI,GAAIA,IAAKP,KAAKgI,OAAOzH,GAAK,EACrCP,KAAKoI,IAAM,EACXpI,KAAKgN,OAAOhN,KAAKgI,OAAQ,EAAG,GAC7B,CAID,IAFA3D,EAAIrE,KAAKwD,EAAE,KAAO,GAClBxD,KAAKwD,EAAE,IAAM,KACRjD,EAAI,EAAGA,EAAI,GAAIA,IAClBP,KAAKwD,EAAEjD,IAAM8D,EACbA,EAAIrE,KAAKwD,EAAEjD,KAAO,GAClBP,KAAKwD,EAAEjD,IAAM,KAaf,IAXKP,KAAAwD,EAAE,IAAW,EAAJa,EACdA,EAAIrE,KAAKwD,EAAE,KAAO,GAClBxD,KAAKwD,EAAE,IAAM,KACbxD,KAAKwD,EAAE,IAAMa,EACbA,EAAIrE,KAAKwD,EAAE,KAAO,GAClBxD,KAAKwD,EAAE,IAAM,KACbxD,KAAKwD,EAAE,IAAMa,EAEX+K,EAAA,GAAKpP,KAAKwD,EAAE,GAAK,EACnBa,EAAI+K,EAAE,KAAO,GACbA,EAAE,IAAM,KACH7O,EAAI,EAAGA,EAAI,GAAIA,IAChBA,EAAAA,GAAKP,KAAKwD,EAAEjD,GAAK8D,EACnBA,EAAI+K,EAAE7O,KAAO,GACb6O,EAAE7O,IAAM,KAKLA,IAHL6O,EAAE,IAAO,KAETD,GAAY,EAAJ9K,GAAS,EACZ9D,EAAI,EAAGA,EAAI,GAAIA,IAAK6O,EAAE7O,IAAM4O,EAE5B5O,IADL4O,GAAQA,EACH5O,EAAI,EAAGA,EAAI,GAAIA,IAAKP,KAAKwD,EAAEjD,GAAMP,KAAKwD,EAAEjD,GAAK4O,EAAQC,EAAE7O,GAa5D,IAXKP,KAAAwD,EAAE,GAAoE,OAA7DxD,KAAKwD,EAAE,GAAcxD,KAAKwD,EAAE,IAAM,IAC3CxD,KAAAwD,EAAE,GAAoE,OAA7DxD,KAAKwD,EAAE,KAAQ,EAAMxD,KAAKwD,EAAE,IAAM,IAC3CxD,KAAAwD,EAAE,GAAoE,OAA7DxD,KAAKwD,EAAE,KAAQ,EAAMxD,KAAKwD,EAAE,IAAO,GAC5CxD,KAAAwD,EAAE,GAAoE,OAA7DxD,KAAKwD,EAAE,KAAQ,EAAMxD,KAAKwD,EAAE,IAAO,GACjDxD,KAAKwD,EAAE,GAAoE,OAA7DxD,KAAKwD,EAAE,KAAO,GAAOxD,KAAKwD,EAAE,IAAO,EAAMxD,KAAKwD,EAAE,IAAM,IAC/DxD,KAAAwD,EAAE,GAAoE,OAA7DxD,KAAKwD,EAAE,KAAQ,EAAMxD,KAAKwD,EAAE,IAAM,IAC3CxD,KAAAwD,EAAE,GAAoE,OAA7DxD,KAAKwD,EAAE,KAAQ,EAAMxD,KAAKwD,EAAE,IAAO,GAC5CxD,KAAAwD,EAAE,GAAoE,OAA7DxD,KAAKwD,EAAE,KAAQ,EAAMxD,KAAKwD,EAAE,IAAO,GAEjDzD,EAAIC,KAAKwD,EAAE,GAAKxD,KAAKkI,IAAI,GACpBlI,KAAAwD,EAAE,GAAS,MAAJzD,EACPQ,EAAI,EAAGA,EAAI,EAAGA,IACVR,GAAAC,KAAKwD,EAAEjD,GAAKP,KAAKkI,IAAI3H,GAAM,IAAMR,IAAM,IAAO,EAChDC,KAAAwD,EAAEjD,GAAS,MAAJR,EAGdkP,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAQ,GAAMlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAO,IAAOlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAO,IAAOlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAO,IAAOlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAO,IAAOlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAO,IAAOlP,KAAKwD,EAAE,KAAO,EAAK,IACrCyL,EAAIC,EAAO,IAAOlP,KAAKwD,EAAE,KAAO,EAAK,GACvC,EAEA8D,EAASxF,UAAUyG,OAAS,SAASxB,EAAGC,EAAMiG,GAC5C,IAAI1M,EAAG8O,EAEP,GAAIrP,KAAKmI,SAAU,CAIZ5H,KAHL8O,EAAQ,GAAKrP,KAAKmI,UACP8E,IACFoC,EAAApC,GACJ1M,EAAI,EAAGA,EAAI8O,EAAM9O,IACpBP,KAAKgI,OAAOhI,KAAKmI,SAAW5H,GAAKwG,EAAEC,EAAKzG,GAI1C,GAHS0M,GAAAoC,EACDrI,GAAAqI,EACRrP,KAAKmI,UAAYkH,EACbrP,KAAKmI,SAAW,GAClB,OACFnI,KAAKgN,OAAOhN,KAAKgI,OAAQ,EAAG,IAC5BhI,KAAKmI,SAAW,CACjB,CASD,GAPI8E,GAAS,KACXoC,EAAOpC,EAASA,EAAQ,GACnBjN,KAAAgN,OAAOjG,EAAGC,EAAMqI,GACbrI,GAAAqI,EACCpC,GAAAoC,GAGPpC,EAAO,CACJ1M,IAAAA,EAAI,EAAGA,EAAI0M,EAAO1M,IACrBP,KAAKgI,OAAOhI,KAAKmI,SAAW5H,GAAKwG,EAAEC,EAAKzG,GAC1CP,KAAKmI,UAAY8E,CAClB,CACH,EA+jBA,IAAIqC,EAAqB3G,EACrB4G,EAA0B3G,EAc9B,IAAI4G,EAAI,CACN,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,YAGtC,SAASC,EAAqBC,EAAIC,EAAI5I,EAAGjD,GAyBvC,IAxBA,IACI8L,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnCC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnCC,EAAIC,EAAItQ,EAAGgJ,EAAG/F,EAAGC,EAAGqF,EAAGnI,EAAG0D,EAAG7D,EAH7BsQ,EAAK,IAAIC,WAAW,IAAKC,EAAK,IAAID,WAAW,IAK7CE,EAAMvB,EAAG,GACTwB,EAAMxB,EAAG,GACTyB,EAAMzB,EAAG,GACT0B,EAAM1B,EAAG,GACT2B,EAAM3B,EAAG,GACT4B,EAAM5B,EAAG,GACT6B,EAAM7B,EAAG,GACT8B,EAAM9B,EAAG,GAET+B,EAAM9B,EAAG,GACT+B,EAAM/B,EAAG,GACTgC,EAAMhC,EAAG,GACTiC,EAAMjC,EAAG,GACTkC,EAAMlC,EAAG,GACTmC,EAAMnC,EAAG,GACToC,EAAMpC,EAAG,GACTqC,EAAMrC,EAAG,GAETsC,EAAM,EACHnO,GAAK,KAAK,CACf,IAAKvD,EAAI,EAAGA,EAAI,GAAIA,IAClBgJ,EAAI,EAAIhJ,EAAI0R,EACZnB,EAAGvQ,GAAMwG,EAAEwC,EAAE,IAAM,GAAOxC,EAAEwC,EAAE,IAAM,GAAOxC,EAAEwC,EAAE,IAAM,EAAKxC,EAAEwC,EAAE,GAC9DyH,EAAGzQ,GAAMwG,EAAEwC,EAAE,IAAM,GAAOxC,EAAEwC,EAAE,IAAM,GAAOxC,EAAEwC,EAAE,IAAM,EAAKxC,EAAEwC,EAAE,GAEhE,IAAKhJ,EAAI,EAAGA,EAAI,GAAIA,IA+HdA,GA9HEqP,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACAC,EAEApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACApB,EAAAqB,EACAC,EAMNlJ,EAAQ,OAFRrF,EAAIuO,GAEYrR,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAIgO,GAIYhR,EAAIgD,IAAM,GAM1BsF,GAAS,OAFTrF,GAAMoO,IAAQ,GAAOR,GAAQ,KAAaQ,IAAQ,GAAOR,GAAQ,KAAaA,IAAS,EAAWQ,GAAQ,KAEzFlR,GAAK8C,IAAM,GAC5BY,GAAS,OAJTb,GAAM6N,IAAQ,GAAOQ,GAAQ,KAAaR,IAAQ,GAAOQ,GAAQ,KAAaA,IAAS,EAAWR,GAAQ,KAIzF7Q,GAAKgD,IAAM,GAM5BsF,GAAS,OAFTrF,EAAKoO,EAAMC,GAASD,EAAME,GAETpR,GAAK8C,IAAM,GAC5BY,GAAS,OAJTb,EAAK6N,EAAMC,GAASD,EAAME,GAIT/Q,GAAKgD,IAAM,GAG5BA,EAAIgM,EAAI,EAAFjP,GAGNuI,GAAS,OAFTrF,EAAI+L,EAAI,EAAFjP,EAAI,IAEOI,GAAK8C,IAAM,GAC5BY,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAG5BA,EAAIsN,EAAGvQ,EAAE,IAGQI,IAFjB8C,EAAIuN,EAAGzQ,EAAE,OAEmB,GAC5B8D,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAG5Ba,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,GAUXqF,EAAQ,OAFRrF,EAJKqF,EAAI,MAAJA,EAAanI,GAAK,IAMPA,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAJKa,EAAI,MAAJA,GAFL7D,GAAK6D,IAAM,KAEY,IAQP7D,EAAIgD,IAAM,GAM1BsF,GAAS,OAFTrF,GAAMgO,IAAQ,GAAOR,GAAQ,IAAaA,IAAS,EAAWQ,GAAQ,KAAkBR,IAAS,EAAWQ,GAAQ,KAEnG9Q,GAAK8C,IAAM,GAC5BY,GAAS,OAJTb,GAAMyN,IAAQ,GAAOQ,GAAQ,IAAaA,IAAS,EAAWR,GAAQ,KAAkBQ,IAAS,EAAWR,GAAQ,KAInGzQ,GAAKgD,IAAM,GAMX7C,IAFjB8C,EAAKgO,EAAMC,EAAQD,EAAME,EAAQD,EAAMC,KAEX,GAC5BtN,GAAS,OAJTb,EAAKyN,EAAMC,EAAQD,EAAME,EAAQD,EAAMC,GAItB3Q,GAAKgD,IAAM,GAMrBa,EAAI,OAHXA,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,KACXjD,GAAK6D,IAAM,KAEgB,GACpByE,EAAI,MAAJA,EAAenI,GAAK,GAM3BmI,EAAQ,OAFRrF,EAAI8M,GAEY5P,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAIuM,GAIYvP,EAAIgD,IAAM,GAKT7C,IAFjB8C,EAAIoN,KAEwB,GAC5BxM,GAAS,OAJTb,EAAIoN,GAIapQ,GAAKgD,IAAM,GAStB0N,EAAAtB,EACAuB,EAAAtB,EACAuB,EAAAtB,EACAuB,EANChN,EAAI,OAHXA,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,KACXjD,GAAK6D,IAAM,KAEgB,GAOrBiN,EAAAtB,EACAuB,EAAAtB,EACAuB,EAAAtB,EACAe,EAAAd,EAEAuB,EAAAtB,EACAuB,EAAAtB,EACAuB,EAAAtB,EACAuB,EAdC/I,EAAI,MAAJA,EAAenI,GAAK,GAerBmR,EAAAtB,EACAuB,EAAAtB,EACAuB,EAAAtB,EACAe,EAAAd,EAEFpQ,EAAE,IAAO,GACX,IAAKgJ,EAAI,EAAGA,EAAI,GAAIA,IAElB/F,EAAIsN,EAAGvH,GAGPT,EAAQ,OAFRrF,EAAIuN,EAAGzH,IAES5I,EAAI8C,IAAM,GAC1BY,EAAQ,MAAJb,EAAYhD,EAAIgD,IAAM,GAE1BA,EAAIsN,GAAIvH,EAAE,GAAG,IAGbT,GAAS,OAFTrF,EAAIuN,GAAIzH,EAAE,GAAG,KAEI5I,GAAK8C,IAAM,GAC5BY,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAGvBoN,EAAAE,GAAIvH,EAAE,GAAG,IAKdT,GAAS,OAFTrF,IAFKoN,EAAAG,GAAIzH,EAAE,GAAG,OAED,EAAMqH,GAAO,KAAYC,IAAO,EAAMD,GAAO,KAAYC,IAAO,EAAMD,GAAO,KAEzEjQ,GAAK8C,IAAM,GAC5BY,GAAS,OAJTb,GAAMoN,IAAO,EAAMC,GAAO,KAAYD,IAAO,EAAMC,GAAO,IAAWD,IAAO,GAI3DpQ,GAAKgD,IAAM,GAGvBoN,EAAAE,GAAIvH,EAAE,IAAI,IAKE5I,IAFjB8C,IAFKoN,EAAAG,GAAIzH,EAAE,IAAI,OAEF,GAAOqH,GAAO,KAAaA,IAAQ,GAAWC,GAAO,IAAkBA,IAAO,EAAMD,GAAO,OAE5E,GAC5BvM,GAAS,OAJTb,GAAMoN,IAAO,GAAOC,GAAO,KAAaA,IAAQ,GAAWD,GAAO,GAAiBA,IAAO,GAIzEpQ,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAERqN,EAAAvH,GAAU,MAAJlF,EAAe7D,GAAK,GAC1BwQ,EAAAzH,GAAU,MAAJT,EAAenI,GAAK,GASnCmI,EAAQ,OAFRrF,EAAIgO,GAEY9Q,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAIyN,GAIYzQ,EAAIgD,IAAM,GAE1BA,EAAIkM,EAAG,GAGU/O,IAFjB8C,EAAIkM,EAAG,MAEqB,GAC5BtL,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAEXiM,EAAG,GAAKuB,EAAW,MAAJ5M,EAAe7D,GAAK,GACnCmP,EAAG,GAAK8B,EAAW,MAAJ3I,EAAenI,GAAK,GAKnCmI,EAAQ,OAFRrF,EAAIiO,GAEY/Q,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAI0N,GAIY1Q,EAAIgD,IAAM,GAE1BA,EAAIkM,EAAG,GAGU/O,IAFjB8C,EAAIkM,EAAG,MAEqB,GAC5BtL,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAEXiM,EAAG,GAAKwB,EAAW,MAAJ7M,EAAe7D,GAAK,GACnCmP,EAAG,GAAK+B,EAAW,MAAJ5I,EAAenI,GAAK,GAKnCmI,EAAQ,OAFRrF,EAAIkO,GAEYhR,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAI2N,GAIY3Q,EAAIgD,IAAM,GAE1BA,EAAIkM,EAAG,GAGU/O,IAFjB8C,EAAIkM,EAAG,MAEqB,GAC5BtL,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAEXiM,EAAG,GAAKyB,EAAW,MAAJ9M,EAAe7D,GAAK,GACnCmP,EAAG,GAAKgC,EAAW,MAAJ7I,EAAenI,GAAK,GAKnCmI,EAAQ,OAFRrF,EAAImO,GAEYjR,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAI4N,GAIY5Q,EAAIgD,IAAM,GAE1BA,EAAIkM,EAAG,GAGU/O,IAFjB8C,EAAIkM,EAAG,MAEqB,GAC5BtL,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAEXiM,EAAG,GAAK0B,EAAW,MAAJ/M,EAAe7D,GAAK,GACnCmP,EAAG,GAAKiC,EAAW,MAAJ9I,EAAenI,GAAK,GAKnCmI,EAAQ,OAFRrF,EAAIoO,GAEYlR,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAI6N,GAIY7Q,EAAIgD,IAAM,GAE1BA,EAAIkM,EAAG,GAGU/O,IAFjB8C,EAAIkM,EAAG,MAEqB,GAC5BtL,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAEXiM,EAAG,GAAK2B,EAAW,MAAJhN,EAAe7D,GAAK,GACnCmP,EAAG,GAAKkC,EAAW,MAAJ/I,EAAenI,GAAK,GAKnCmI,EAAQ,OAFRrF,EAAIqO,GAEYnR,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAI8N,GAIY9Q,EAAIgD,IAAM,GAE1BA,EAAIkM,EAAG,GAGU/O,IAFjB8C,EAAIkM,EAAG,MAEqB,GAC5BtL,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAEXiM,EAAG,GAAK4B,EAAW,MAAJjN,EAAe7D,GAAK,GACnCmP,EAAG,GAAKmC,EAAW,MAAJhJ,EAAenI,GAAK,GAKnCmI,EAAQ,OAFRrF,EAAIsO,GAEYpR,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAI+N,GAIY/Q,EAAIgD,IAAM,GAE1BA,EAAIkM,EAAG,GAGU/O,IAFjB8C,EAAIkM,EAAG,MAEqB,GAC5BtL,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAEXiM,EAAG,GAAK6B,EAAW,MAAJlN,EAAe7D,GAAK,GACnCmP,EAAG,GAAKoC,EAAW,MAAJjJ,EAAenI,GAAK,GAKnCmI,EAAQ,OAFRrF,EAAIuO,GAEYrR,EAAI8C,IAAM,GAC1BY,EAAQ,OAJRb,EAAIgO,GAIYhR,EAAIgD,IAAM,GAE1BA,EAAIkM,EAAG,GAGU/O,IAFjB8C,EAAIkM,EAAG,MAEqB,GAC5BtL,GAAS,MAAJb,EAAYhD,GAAKgD,IAAM,GAI5BhD,IADA6D,IADA1D,IAHAmI,GAAS,MAAJrF,KAGM,MACA,MACA,GAEXiM,EAAG,GAAK8B,EAAW,MAAJnN,EAAe7D,GAAK,GACnCmP,EAAG,GAAKqC,EAAW,MAAJlJ,EAAenI,GAAK,GAE5BsR,GAAA,IACPnO,GAAK,GACN,CAEMA,OAAAA,CACR,CAEQ,SAAAoO,EAAYhO,EAAK6C,EAAGjD,GAC3B,IAGIvD,EAHAmP,EAAK,IAAIqB,WAAW,GACpBpB,EAAK,IAAIoB,WAAW,GACpBxN,EAAI,IAAI3C,WAAW,KAChBD,EAAImD,EAuBNvD,IArBLmP,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,UACRA,EAAG,GAAK,WAERC,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,UACRA,EAAG,GAAK,WACRA,EAAG,GAAK,UAEaF,EAAAC,EAAIC,EAAI5I,EAAGjD,GAChCA,GAAK,IAEAvD,EAAI,EAAGA,EAAIuD,EAAGvD,IAAOA,EAAAA,GAAKwG,EAAEpG,EAAEmD,EAAEvD,GAQhCA,IAPLgD,EAAEO,GAAK,IAGPP,GADAO,EAAI,IAAI,KAAKA,EAAE,IAAI,EAAE,IACjB,GAAK,EACTR,EAAKC,EAAGO,EAAE,EAAKnD,EAAI,UAAc,EAAGA,GAAK,GACpB8O,EAAAC,EAAIC,EAAIpM,EAAGO,GAE3BvD,EAAI,EAAGA,EAAI,EAAGA,IAAK+C,EAAKY,EAAK,EAAE3D,EAAGmP,EAAGnP,GAAIoP,EAAGpP,IAE1C,OAAA,CACR,CAEQ,SAAA4R,EAAI5N,EAAG6E,GACVN,IAAAA,EAAIxG,IAAM3B,EAAI2B,IAAM+B,EAAI/B,IACxB9B,EAAI8B,IAAMmK,EAAInK,IAAMvC,EAAIuC,IACxB8M,EAAI9M,IAAMkB,EAAIlB,IAAM+G,EAAI/G,IAE5BsH,EAAEd,EAAGvE,EAAE,GAAIA,EAAE,IACbqF,EAAEP,EAAGD,EAAE,GAAIA,EAAE,IACXN,EAAAA,EAAGA,EAAGO,GACRM,EAAEhJ,EAAG4D,EAAE,GAAIA,EAAE,IACboF,EAAEN,EAAGD,EAAE,GAAIA,EAAE,IACXS,EAAAlJ,EAAGA,EAAG0I,GACRQ,EAAExF,EAAGE,EAAE,GAAI6E,EAAE,IACX/E,EAAAA,EAAGA,EAAGnB,GACR2G,EAAErJ,EAAG+D,EAAE,GAAI6E,EAAE,IACXO,EAAAnJ,EAAGA,EAAGA,GACNiM,EAAAA,EAAG9L,EAAGmI,GACNc,EAAA7J,EAAGS,EAAG6D,GACNsF,EAAAyF,EAAG5O,EAAG6D,GACNb,EAAAA,EAAG7C,EAAGmI,GAENvE,EAAAA,EAAE,GAAIkI,EAAG1M,GACTwE,EAAAA,EAAE,GAAIf,EAAG4L,GACT7K,EAAAA,EAAE,GAAI6K,EAAGrP,GACTwE,EAAAA,EAAE,GAAIkI,EAAGjJ,EACZ,CAEQ,SAAA4O,GAAM7N,EAAG6E,EAAGzI,GACfJ,IAAAA,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IACjB4I,EAAS5E,EAAEhE,GAAI6I,EAAE7I,GAAII,EAExB,CAEQ,SAAA0R,GAAK7P,EAAG+B,GACf,IAAI+N,EAAKhQ,IAAMiQ,EAAKjQ,IAAMkQ,EAAKlQ,IACtBgK,EAAAkG,EAAIjO,EAAE,IACbsF,EAAAyI,EAAI/N,EAAE,GAAIiO,GACV3I,EAAA0I,EAAIhO,EAAE,GAAIiO,GACZlJ,EAAU9G,EAAG+P,GACX/P,EAAA,KAAOiH,EAAS6I,IAAO,CAC1B,CAEQ,SAAAG,GAAWlO,EAAG6E,EAAGjJ,GACxB,IAAIQ,EAAGJ,EAKP,IAJSgE,EAAAA,EAAE,GAAIzB,GACNyB,EAAAA,EAAE,GAAIxB,GACNwB,EAAAA,EAAE,GAAIxB,GACNwB,EAAAA,EAAE,GAAIzB,GACVvC,EAAI,IAAKA,GAAK,IAAKA,EAEhBgE,GAAAA,EAAG6E,EADTzI,EAAKR,EAAGI,EAAE,EAAG,KAAS,EAAFA,GAAQ,GAE5B4R,EAAI/I,EAAG7E,GACP4N,EAAI5N,EAAGA,GACDA,GAAAA,EAAG6E,EAAGzI,EAEf,CAEQ,SAAA+R,GAAWnO,EAAGpE,GACjB,IAAAiJ,EAAI,CAAC9G,IAAMA,IAAMA,IAAMA,KAClBuG,EAAAO,EAAE,GAAIjG,GACN0F,EAAAO,EAAE,GAAIhG,GACNyF,EAAAO,EAAE,GAAIrG,GACb8G,EAAAT,EAAE,GAAIjG,EAAGC,GACAmB,GAAAA,EAAG6E,EAAGjJ,EAClB,CAEQ,SAAAwS,GAAoBC,EAAIC,EAAIC,GAC/B,IAEAvS,EAFAC,EAAI,IAAII,WAAW,IACnB2D,EAAI,CAACjC,IAAMA,IAAMA,IAAMA,KAYtB/B,IATAuS,GAAQpQ,EAAYmQ,EAAI,IACjBX,EAAA1R,EAAGqS,EAAI,IACnBrS,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,GAETkS,GAAWnO,EAAG/D,GACd6R,GAAKO,EAAIrO,GAEJhE,EAAI,EAAGA,EAAI,GAAIA,IAAQA,EAAAA,EAAE,IAAMqS,EAAGrS,GAChC,OAAA,CACR,CAED,IAAIwS,GAAI,IAAItQ,aAAa,CAAC,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAE9J,SAAAuQ,GAAKxQ,EAAGe,GACX,IAAA0P,EAAO1S,EAAGgJ,EAAGnF,EACjB,IAAK7D,EAAI,GAAIA,GAAK,KAAMA,EAAG,CAEpB,IADG0S,EAAA,EACH1J,EAAIhJ,EAAI,GAAI6D,EAAI7D,EAAI,GAAIgJ,EAAInF,IAAKmF,EACpChG,EAAEgG,IAAM0J,EAAQ,GAAK1P,EAAEhD,GAAKwS,GAAExJ,GAAKhJ,EAAI,KACvC0S,EAAQhK,KAAKC,OAAO3F,EAAEgG,GAAK,KAAO,KAClChG,EAAEgG,IAAc,IAAR0J,EAEV1P,EAAEgG,IAAM0J,EACR1P,EAAEhD,GAAK,CACR,CAED,IADQ0S,EAAA,EACH1J,EAAI,EAAGA,EAAI,GAAIA,IAClBhG,EAAEgG,IAAM0J,GAAS1P,EAAE,KAAO,GAAKwP,GAAExJ,GACjC0J,EAAQ1P,EAAEgG,IAAM,EAChBhG,EAAEgG,IAAM,IAEL,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAOhG,EAAAgG,IAAM0J,EAAQF,GAAExJ,GAC3C,IAAKhJ,EAAI,EAAGA,EAAI,GAAIA,IAChBA,EAAAA,EAAE,IAAMgD,EAAEhD,IAAM,EAChBA,EAAAA,GAAY,IAAPgD,EAAEhD,EAEZ,CAED,SAAS2S,GAAO1Q,GACd,IAA8BjC,EAA1BgD,EAAI,IAAId,aAAa,IACpBlC,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAKgD,EAAEhD,GAAKiC,EAAEjC,GAC7BA,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAKiC,EAAEjC,GAAK,EAChCyS,GAAKxQ,EAAGe,EACT,CAGD,SAAS4P,GAAYC,EAAIrM,EAAGjD,EAAG+O,GAC7B,IACItS,EAAGgJ,EADH/I,EAAI,IAAII,WAAW,IAAK4C,EAAI,IAAI5C,WAAW,IAAK4B,EAAI,IAAI5B,WAAW,IAC7D2C,EAAI,IAAId,aAAa,IAC3B8B,EAAI,CAACjC,IAAMA,IAAMA,IAAMA,KAEf4P,EAAA1R,EAAGqS,EAAI,IACnBrS,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,GAET,IAAI6S,EAAQvP,EAAI,GACXvD,IAAAA,EAAI,EAAGA,EAAIuD,EAAGvD,IAAQ6S,EAAA,GAAK7S,GAAKwG,EAAExG,GAClCA,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAQ6S,EAAA,GAAK7S,GAAKC,EAAE,GAAKD,GAOxCA,IALL2R,EAAY1P,EAAG4Q,EAAGzG,SAAS,IAAK7I,EAAE,IAClCoP,GAAO1Q,GACPkQ,GAAWnO,EAAG/B,GACd6P,GAAKe,EAAI7O,GAEJhE,EAAI,GAAIA,EAAI,GAAIA,IAAK6S,EAAG7S,GAAKsS,EAAGtS,GAIhCA,IAHOiD,EAAAA,EAAG4P,EAAItP,EAAI,IACvBoP,GAAO1P,GAEFjD,EAAI,EAAGA,EAAI,GAAIA,IAAKgD,EAAEhD,GAAK,EAC3BA,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAKgD,EAAEhD,GAAKiC,EAAEjC,GAClC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAClB,IAAKgJ,EAAI,EAAGA,EAAI,GAAIA,IAClBhG,EAAEhD,EAAEgJ,IAAM/F,EAAEjD,GAAKC,EAAE+I,GAKhB,OADPyJ,GAAKI,EAAGzG,SAAS,IAAKpJ,GACf8P,CACR,CAwCD,SAASC,GAAiBvM,EAAGqM,EAAItP,EAAG8O,GAC9BrS,IAAAA,EACA8I,EAAI,IAAIzI,WAAW,IAAK4C,EAAI,IAAI5C,WAAW,IAC3C2D,EAAI,CAACjC,IAAMA,IAAMA,IAAMA,KACvB8G,EAAI,CAAC9G,IAAMA,IAAMA,IAAMA,KAE3B,GAAIwB,EAAI,GAAW,OAAA,EAEf,GA9CG,SAAUtB,EAAG+B,GACpB,IAAI8E,EAAI/G,IAAMiR,EAAMjR,IAAMkR,EAAMlR,IAC5BmR,EAAMnR,IAAMoR,EAAOpR,IAAMqR,EAAOrR,IAChCsR,EAAOtR,IA2BP,OAzBKuG,EAAArG,EAAE,GAAIO,GACH2G,EAAAlH,EAAE,GAAI+B,GAChB8H,EAAAmH,EAAKhR,EAAE,IACPqH,EAAA4J,EAAKD,EAAKvQ,GACV2G,EAAA4J,EAAKA,EAAKhR,EAAE,IACZmH,EAAA8J,EAAKjR,EAAE,GAAIiR,GAEbpH,EAAEqH,EAAMD,GACRpH,EAAEsH,EAAMD,GACN7J,EAAA+J,EAAMD,EAAMD,GACZrK,EAAAA,EAAGuK,EAAMJ,GACTnK,EAAAA,EAAGA,EAAGoK,GAERlH,EAAQlD,EAAGA,GACTA,EAAAA,EAAGA,EAAGmK,GACNnK,EAAAA,EAAGA,EAAGoK,GACNpK,EAAAA,EAAGA,EAAGoK,GACN5J,EAAArH,EAAE,GAAI6G,EAAGoK,GAETpH,EAAAkH,EAAK/Q,EAAE,IACPqH,EAAA0J,EAAKA,EAAKE,GACRjK,EAAS+J,EAAKC,IAAM3J,EAAErH,EAAE,GAAIA,EAAE,GAAIa,GAEpCgJ,EAAAkH,EAAK/Q,EAAE,IACPqH,EAAA0J,EAAKA,EAAKE,GACRjK,EAAS+J,EAAKC,IAAa,GAE3B/J,EAASjH,EAAE,MAAS+B,EAAE,KAAK,GAAIqF,EAAEpH,EAAE,GAAIM,EAAKN,EAAE,IAElDqH,EAAErH,EAAE,GAAIA,EAAE,GAAIA,EAAE,IACT,EACR,CAUKqR,CAAUzK,EAAGwJ,GAAY,OAAA,EAExBrS,IAAAA,EAAI,EAAGA,EAAIuD,EAAGvD,IAAKwG,EAAExG,GAAK6S,EAAG7S,GAC7BA,IAAAA,EAAI,EAAGA,EAAI,GAAIA,IAAOA,EAAAA,EAAE,IAAMqS,EAAGrS,GAUtC,GATYiD,EAAAA,EAAGuD,EAAGjD,GAClBoP,GAAO1P,GACIe,GAAAA,EAAG6E,EAAG5F,GAEjBkP,GAAWtJ,EAAGgK,EAAGzG,SAAS,KAC1BwF,EAAI5N,EAAG6E,GACPiJ,GAAKhJ,EAAG9E,GAERT,GAAK,GACDE,EAAiBoP,EAAI,EAAG/J,EAAG,GAAI,CAC5B9I,IAAAA,EAAI,EAAGA,EAAIuD,EAAGvD,IAAKwG,EAAExG,GAAK,EACxB,OAAA,CACR,CAEIA,IAAAA,EAAI,EAAGA,EAAIuD,EAAGvD,IAAOA,EAAAA,GAAK6S,EAAG7S,EAAI,IAC/BuD,OAAAA,CACR,CAED,IAAIgQ,GAA4B,GAC5BC,GAA8B,GAE9BC,GAAgC,GAGhCC,GAA4B,GAC5BC,GAA4B,GAE5BC,GAAwBJ,GAGxBK,GAAoB,GACpBC,GAA6B,GAC7BC,GAA6B,GAiExB,SAAAC,GAAanQ,EAAGN,GACvB,GAAIM,EAAEvD,SAAWiT,GAAiC,MAAA,IAAInR,MAAM,gBAC5D,GAAImB,EAAEjD,SAAWkT,GAAmC,MAAA,IAAIpR,MAAM,iBAC/D,CAOD,SAAS6R,KACP,IAAA,IAASjU,EAAI,EAAGA,EAAIkU,UAAU5T,OAAQN,IAChC,KAAEkU,UAAUlU,aAAcK,YACtB,MAAA,IAAIP,UAAU,kCAEzB,CAED,SAASqU,GAAQ1T,GACf,IAAA,IAAST,EAAI,EAAGA,EAAIS,EAAIH,OAAQN,IAAKS,EAAIT,GAAK,CAC/C,CAhFD8B,EAAKsS,SAAW,CACdjO,uBACAW,oBACAF,gBACAN,4BACAK,wBACAmB,qBACAI,4BACA1E,mBACAC,mBACA2E,mBACAC,wBACA4D,oBACAK,yBACAE,sBACAuC,qBACAsF,WAxsBF,SAAoBvQ,EAAG0C,EAAGvG,EAAGsD,EAAGF,EAAGL,GAC7B,IAAAa,EAAI,IAAIxD,WAAW,IAEvB,OADoBmM,EAAA3I,EAAGR,EAAGL,GACnB+L,EAAmBjL,EAAG0C,EAAGvG,EAAGsD,EAAGM,EACvC,EAqsBCyQ,gBAnsBF,SAAyB9N,EAAG1C,EAAG7D,EAAGsD,EAAGF,EAAGL,GAClC,IAAAa,EAAI,IAAIxD,WAAW,IAEvB,OADoBmM,EAAA3I,EAAGR,EAAGL,GACnBgM,EAAwBxI,EAAG1C,EAAG7D,EAAGsD,EAAGM,EAC5C,EAgsBC0I,qBACAoF,cACAiB,eACAR,uBACAW,oBAEAQ,6BACAC,+BACAe,2BA1C+B,GA2C/Bd,iCACAe,wBA1C4B,GA2C5BC,8BA1CkC,GA2ClCf,6BACAC,6BACAe,yBA1C6B,GA2C7Bd,yBACAe,qBAlD+B,GAmD/BC,wBA1C4BnB,GA2C5BI,qBACAC,8BACAC,8BACAc,sBA1C0B,GA2C1BC,kBA1CsB,GA4CtB/S,KACAW,IACA8P,KACAzJ,YACAI,cACAG,IACAF,IACA0C,IACAzC,IACA2C,UACA4F,MACAtJ,WACAmK,QACAP,cACAC,eA0BFrQ,EAAKiT,YAAc,SAASxR,GACtB,IAAAnD,EAAI,IAAIC,WAAWkD,GAEhB,OADPpB,EAAY/B,EAAGmD,GACRnD,CACT,EAEA0B,EAAKkT,UAAY,SAASC,EAAKC,EAAOlO,GACpBiN,GAAAgB,EAAKC,EAAOlO,GAC5BgN,GAAahN,EAAKkO,GAGlB,IAFA,IAAI1O,EAAI,IAAInG,WA3GmB,GA2GqB4U,EAAI3U,QACpDwD,EAAI,IAAIzD,WAAWmG,EAAElG,QAChBN,EAAI,EAAGA,EAAIiV,EAAI3U,OAAQN,IAAOA,EAAAA,EA7GR,IA6GwCiV,EAAIjV,GAEpE8D,OADPsE,EAAiBtE,EAAG0C,EAAGA,EAAElG,OAAQ4U,EAAOlO,GACjClD,EAAEsI,SAASqH,GACpB,EAEA3R,EAAKkT,UAAUG,KAAO,SAASC,EAAKF,EAAOlO,GACzBiN,GAAAmB,EAAKF,EAAOlO,GAC5BgN,GAAahN,EAAKkO,GAGlB,IAFA,IAAIpR,EAAI,IAAIzD,WAAWoT,GAAgC2B,EAAI9U,QACvDkG,EAAI,IAAInG,WAAWyD,EAAExD,QAChBN,EAAI,EAAGA,EAAIoV,EAAI9U,OAAQN,IAAK8D,EAAE9D,EAAEyT,IAAiC2B,EAAIpV,GAC9E,OAAI8D,EAAExD,OAAS,IAC2C,IAAtD+H,EAAsB7B,EAAG1C,EAAGA,EAAExD,OAAQ4U,EAAOlO,GADvB,KAEnBR,EAAE4F,SA1HsB,GA2HjC,EAEAtK,EAAKkT,UAAUK,UAAY9B,GAC3BzR,EAAKkT,UAAUM,YAAc9B,GAC7B1R,EAAKkT,UAAUO,eAAiB9B,GAEhC3R,EAAK0T,WAAa,SAASjS,EAAGS,GAE5B,GADAiQ,GAAgB1Q,EAAGS,GA/He,KAgI9BT,EAAEjD,OAAgD,MAAA,IAAI8B,MAAM,cAChE,GAlI4B,KAkIxB4B,EAAE1D,OAA0C,MAAA,IAAI8B,MAAM,cACtD,IAAAyG,EAAI,IAAIxI,WAnIgB,IAqIrB,OADW4L,EAAApD,EAAGtF,EAAGS,GACjB6E,CACT,EAEA/G,EAAK0T,WAAWC,KAAO,SAASlS,GAE9B,GADA0Q,GAAgB1Q,GAxIkB,KAyI9BA,EAAEjD,OAAgD,MAAA,IAAI8B,MAAM,cAC5D,IAAAyG,EAAI,IAAIxI,WA3IgB,IA6IrB,OADPiM,EAAuBzD,EAAGtF,GACnBsF,CACT,EAEA/G,EAAK0T,WAAWE,aA/IoB,GAgJpC5T,EAAK0T,WAAWG,mBAjJc,GAmJ9B7T,EAAKsT,IAAM,SAASH,EAAKC,EAAOU,EAAWC,GACzC,IAAIhS,EAAI/B,EAAKsT,IAAIU,OAAOF,EAAWC,GACnC,OAAO/T,EAAKkT,UAAUC,EAAKC,EAAOrR,EACpC,EAEA/B,EAAKsT,IAAIU,OAAS,SAASF,EAAWC,GACpC5B,GAAgB2B,EAAWC,GAzEpB,SAAgBxD,EAAIC,GAC3B,GAAID,EAAG/R,SAAWoT,GAAiC,MAAA,IAAItR,MAAM,uBAC7D,GAAIkQ,EAAGhS,SAAWqT,GAAiC,MAAA,IAAIvR,MAAM,sBAC9D,CAuEC2T,CAAgBH,EAAWC,GACvB,IAAAhS,EAAI,IAAIxD,WAvJiB,IAyJtB,OADamM,EAAA3I,EAAG+R,EAAWC,GAC3BhS,CACT,EAEA/B,EAAKsT,IAAIY,MAAQlU,EAAKkT,UAEtBlT,EAAKsT,IAAID,KAAO,SAASF,EAAKC,EAAOU,EAAWC,GAC9C,IAAIhS,EAAI/B,EAAKsT,IAAIU,OAAOF,EAAWC,GACnC,OAAO/T,EAAKkT,UAAUG,KAAKF,EAAKC,EAAOrR,EACzC,EAEA/B,EAAKsT,IAAID,KAAKa,MAAQlU,EAAKkT,UAAUG,KAErCrT,EAAKsT,IAAIa,QAAU,WACb,IAAA5D,EAAK,IAAIhS,WAAWqT,IACpBpB,EAAK,IAAIjS,WAAWsT,IAExB,OADApH,EAAmB8F,EAAIC,GAChB,CAACsD,UAAWvD,EAAIwD,UAAWvD,EACpC,EAEAxQ,EAAKsT,IAAIa,QAAQC,cAAgB,SAASL,GAExC,GADA5B,GAAgB4B,GACZA,EAAUvV,SAAWqT,GACjB,MAAA,IAAIvR,MAAM,uBACd,IAAAiQ,EAAK,IAAIhS,WAAWqT,IAExB,OADApH,EAAuB+F,EAAIwD,GACpB,CAACD,UAAWvD,EAAIwD,UAAW,IAAIxV,WAAWwV,GACnD,EAEA/T,EAAKsT,IAAIe,gBAAkBzC,GAC3B5R,EAAKsT,IAAIgB,gBAAkBzC,GAC3B7R,EAAKsT,IAAIiB,gBAvLsB,GAwL/BvU,EAAKsT,IAAIE,YAAc1B,GACvB9R,EAAKsT,IAAIG,eAAiBzT,EAAKkT,UAAUO,eAEzCzT,EAAKwU,KAAO,SAASrB,EAAKY,GAExB,GADA5B,GAAgBgB,EAAKY,GACjBA,EAAUvV,SAAWyT,GACjB,MAAA,IAAI3R,MAAM,uBAClB,IAAImU,EAAY,IAAIlW,WAAWwT,GAAkBoB,EAAI3U,QAE9C,OADPsS,GAAY2D,EAAWtB,EAAKA,EAAI3U,OAAQuV,GACjCU,CACT,EAEAzU,EAAKwU,KAAKnB,KAAO,SAASoB,EAAWX,GAEnC,GADA3B,GAAgBsC,EAAWX,GACvBA,EAAUtV,SAAWwT,GACjB,MAAA,IAAI1R,MAAM,uBAClB,IAAIoU,EAAM,IAAInW,WAAWkW,EAAUjW,QAC/BmW,EAAO1D,GAAiByD,EAAKD,EAAWA,EAAUjW,OAAQsV,GAC9D,GAAIa,EAAO,EAAU,OAAA,KAErB,IADI,IAAAjQ,EAAI,IAAInG,WAAWoW,GACdzW,EAAI,EAAGA,EAAIwG,EAAElG,OAAQN,IAAKwG,EAAExG,GAAKwW,EAAIxW,GACvC,OAAAwG,CACT,EAEA1E,EAAKwU,KAAKI,SAAW,SAASzB,EAAKY,GAGjC,IAFA,IAAIU,EAAYzU,EAAKwU,KAAKrB,EAAKY,GAC3Bc,EAAM,IAAItW,WAAWwT,IAChB7T,EAAI,EAAGA,EAAI2W,EAAIrW,OAAQN,IAAK2W,EAAI3W,GAAKuW,EAAUvW,GACjD,OAAA2W,CACT,EAEA7U,EAAKwU,KAAKI,SAASE,OAAS,SAAS3B,EAAK0B,EAAKf,GAE7C,GADgB3B,GAAAgB,EAAK0B,EAAKf,GACtBe,EAAIrW,SAAWuT,GACX,MAAA,IAAIzR,MAAM,sBAClB,GAAIwT,EAAUtV,SAAWwT,GACjB,MAAA,IAAI1R,MAAM,uBAClB,IAEIpC,EAFA6S,EAAK,IAAIxS,WAAWwT,GAAoBoB,EAAI3U,QAC5CkG,EAAI,IAAInG,WAAWwT,GAAoBoB,EAAI3U,QAE1CN,IAAAA,EAAI,EAAGA,EAAI6T,GAAmB7T,IAAK6S,EAAG7S,GAAK2W,EAAI3W,GACpD,IAAKA,EAAI,EAAGA,EAAIiV,EAAI3U,OAAQN,IAAQA,EAAAA,EAAE6T,IAAqBoB,EAAIjV,GAC/D,OAAQ+S,GAAiBvM,EAAGqM,EAAIA,EAAGvS,OAAQsV,IAAc,CAC3D,EAEA9T,EAAKwU,KAAKL,QAAU,WACd,IAAA5D,EAAK,IAAIhS,WAAWyT,IACpBxB,EAAK,IAAIjS,WAAW0T,IAExB,OADA3B,GAAoBC,EAAIC,GACjB,CAACsD,UAAWvD,EAAIwD,UAAWvD,EACpC,EAEAxQ,EAAKwU,KAAKL,QAAQC,cAAgB,SAASL,GAEzC,GADA5B,GAAgB4B,GACZA,EAAUvV,SAAWyT,GACjB,MAAA,IAAI3R,MAAM,uBAElB,IADI,IAAAiQ,EAAK,IAAIhS,WAAWyT,IACf9T,EAAI,EAAGA,EAAIqS,EAAG/R,OAAQN,IAAQA,EAAAA,GAAK6V,EAAU,GAAG7V,GACzD,MAAO,CAAC4V,UAAWvD,EAAIwD,UAAW,IAAIxV,WAAWwV,GACnD,EAEA/T,EAAKwU,KAAKL,QAAQY,SAAW,SAASC,GAEpC,GADA7C,GAAgB6C,GA/OU,KAgPtBA,EAAKxW,OACD,MAAA,IAAI8B,MAAM,iBAGTpC,IAFL,IAAAqS,EAAK,IAAIhS,WAAWyT,IACpBxB,EAAK,IAAIjS,WAAW0T,IACf/T,EAAI,EAAGA,EAAI,GAAIA,IAAKsS,EAAGtS,GAAK8W,EAAK9W,GAE1C,OADoBoS,GAAAC,EAAIC,GAAI,GACrB,CAACsD,UAAWvD,EAAIwD,UAAWvD,EACpC,EAEAxQ,EAAKwU,KAAKH,gBAAkBrC,GAC5BhS,EAAKwU,KAAKF,gBAAkBrC,GAC5BjS,EAAKwU,KAAKS,WA3PkB,GA4P5BjV,EAAKwU,KAAKU,gBAAkBnD,GAE5B/R,EAAKmV,KAAO,SAAShC,GACnBhB,GAAgBgB,GACZhS,IAAAA,EAAI,IAAI5C,WA/PU,IAiQf4C,OADKA,EAAAA,EAAGgS,EAAKA,EAAI3U,QACjB2C,CACT,EAEAnB,EAAKmV,KAAKC,WApQc,GAsQxBpV,EAAK8U,OAAS,SAAS5T,EAAGK,GAGxB,OAFA4Q,GAAgBjR,EAAGK,GAEF,IAAbL,EAAE1C,QAA6B,IAAb+C,EAAE/C,SACpB0C,EAAE1C,SAAW+C,EAAE/C,QACkB,IAA7B6C,EAAGH,EAAG,EAAGK,EAAG,EAAGL,EAAE1C,QAC3B,EAEAwB,EAAKqV,QAAU,SAASC,GACRjV,EAAAiV,CAChB,EAEA,WAGE,IAAIC,EAAyB,oBAATC,KAAwBA,KAAKD,QAAUC,KAAKC,SAAY,KACxE,GAAAF,GAAUA,EAAOG,gBAAiB,CAGpC1V,EAAKqV,SAAQ,SAASnU,EAAGO,GACvB,IAAIvD,EAAGyI,EAAI,IAAIpI,WAAWkD,GAC1B,IAAKvD,EAAI,EAAGA,EAAIuD,EAAGvD,GAHT,MAIDqX,EAAAG,gBAAgB/O,EAAE2D,SAASpM,EAAGA,EAAI0I,KAAK+O,IAAIlU,EAAIvD,EAJ9C,SAMLA,IAAAA,EAAI,EAAGA,EAAIuD,EAAGvD,IAAKgD,EAAEhD,GAAKyI,EAAEzI,GACjCmU,GAAQ1L,EACd,GACA,WAAgC,IAAZiP,IAEPL,EAAAM,IACKN,EAAOtC,aACnBjT,EAAKqV,SAAQ,SAASnU,EAAGO,GACvB,IAAIvD,EAAGyI,EAAI4O,EAAOtC,YAAYxR,GACzBvD,IAAAA,EAAI,EAAGA,EAAIuD,EAAGvD,IAAKgD,EAAEhD,GAAKyI,EAAEzI,GACjCmU,GAAQ1L,EAChB,IAvBA,EA4BC,CAt1ED,CAs1EoC5G,EAAOD,QAAUC,EAAOD,QAAW0V,KAAKxV,KAAOwV,KAAKxV,MAAQ,CAAE,yBCn1E9F,IAAA8V,EACOA,EASPC,EACOA,EAKPC,EACOA,EAQPC,EACOA,EAQPC,EACOA,EAOPC,EACOA,GA1CAL,EAQRA,IAA8BA,EAA4B,CAAE,IAPjCA,EAA0B,cAAmB,GAAK,gBAC5EA,EAA0BA,EAA0B,kBAAuB,GAAK,oBAChFA,EAA0BA,EAA0B,yBAA8B,GAAK,2BACvFA,EAA0BA,EAA0B,uBAA4B,GAAK,yBACrFA,EAA0BA,EAA0B,kBAAuB,KAAO,oBAClFA,EAA0BA,EAA0B,mBAAwB,KAAO,qBACnFA,EAA0BA,EAA0B,qBAA0B,KAAO,wBAG9EC,EAGRA,IAA6BA,EAA2B,CAAE,IAFhCA,EAAyB,cAAmB,GAAK,gBAC1EA,EAAyBA,EAAyB,qBAA0B,KAAO,wBAI5EC,EAMRA,IAAiCA,EAA+B,CAAE,IALpCA,EAA6B,cAAmB,GAAK,gBAClFA,EAA6BA,EAA6B,kBAAuB,GAAK,oBACtFA,EAA6BA,EAA6B,kBAAuB,KAAO,oBACxFA,EAA6BA,EAA6B,mBAAwB,KAAO,qBACzFA,EAA6BA,EAA6B,qBAA0B,KAAO,wBAIpFC,EAMRA,IAA0BA,EAAwB,CAAE,IAL7BA,EAAsB,cAAmB,GAAK,gBACpEA,EAAsBA,EAAsB,kBAAuB,GAAK,oBACxEA,EAAsBA,EAAsB,kBAAuB,KAAO,oBAC1EA,EAAsBA,EAAsB,mBAAwB,KAAO,qBAC3EA,EAAsBA,EAAsB,qBAA0B,KAAO,wBAItEC,EAKRA,IAA2BA,EAAyB,CAAE,IAJ9BA,EAAuB,cAAmB,GAAK,gBACtEA,EAAuBA,EAAuB,kBAAuB,GAAK,oBAC1EA,EAAuBA,EAAuB,kBAAuB,KAAO,oBAC5EA,EAAuBA,EAAuB,qBAA0B,KAAO,wBAIxEC,EAGRA,IAAUA,EAAQ,CAAE,IAFA,QAAA,OACnBA,EAAmB,QAAA,KAgDvB,MAAMC,EAAS,CACXC,OAjCK,SAAOC,EAAOC,GAAU,GACzB,IAAAC,EAUG,OATHF,aAAiB/X,WACJiY,EAAAF,GAGQ,iBAAVA,IACCA,EAAAG,KAAKC,UAAUJ,IAEdE,EAAAxW,EAAK/B,WAAWqY,IAtB5B,SAAiBA,EAAOC,GACvB,MAAAI,EAAU3W,EAAKX,aAAaiX,GAClC,OAAKC,EAGElY,mBAAmBsY,GAFfA,CAGf,CAkBWC,CAAiBJ,EAAYD,EACxC,EAsBIM,OArBK,SAAOP,EAAOC,GAAU,GACvB,MAAAO,EApBD,SAAmBR,EAAOC,GAIxB,OAHHA,IACAD,EAAQvX,mBAAmBuX,IAExBtW,EAAKT,aAAa+W,EAC7B,CAe8BS,CAAmBT,EAAOC,GAC7C,MAAA,CACHjX,SAAW,IACAU,EAAKtB,WAAWoY,GAE3BE,WACQ,IACA,OAAOP,KAAKQ,MAAMjX,EAAKtB,WAAWoY,GACrC,OACM1M,GACI,OAAA,IACV,CACJ,EACD8M,aAAe,IACJJ,EAGnB,GAoBA,SAASK,EAAYC,GACjB,IAAIC,EAAY,GAIT,OAHPD,EAAUE,SAAgBC,IACtBF,IAAc,KAAc,IAAPE,GAAajY,SAAS,KAAKI,OAAQ,EAAA,IAErD2X,CACX,CACA,SAASG,EAAeH,GAChB,GAAAA,EAAU7Y,OAAS,GAAM,EACnB,MAAA,IAAI8B,MAAM,kBAAkB+W,mBAEtC,MAAMI,EAAS,IAAIlZ,WAAW8Y,EAAU7Y,OAAS,GACjD,IAAA,IAASN,EAAI,EAAGA,EAAImZ,EAAU7Y,OAAQN,GAAK,EAChCA,EAAAA,EAAI,GAAKwZ,SAASL,EAAU3X,MAAMxB,EAAGA,EAAI,GAAI,IAEjD,OAAAuZ,CACX,CAMA,MAAME,EACFC,YAAYzD,GACRxW,KAAK6V,YAAc,GACnB7V,KAAKwW,QAAUA,EAAUxW,KAAKka,wBAAwB1D,GAAWxW,KAAKma,gBACtEna,KAAKoa,UAAYZ,EAAYxZ,KAAKwW,QAAQL,UAC7C,CACDgE,gBACW,OAAAE,EAAO1E,IAAIa,SACrB,CACD0D,wBAAwB1D,GACb,MAAA,CACHL,UAAW0D,EAAerD,EAAQL,WAClCC,UAAWyD,EAAerD,EAAQJ,WAEzC,CACDkE,cACW,OAAAD,EAAO/E,YAAYtV,KAAK6V,YAClC,CACD0E,QAAQC,EAASC,GACb,MAAMC,GAAiB,IAAIC,aAAcjC,OAAO8B,GAC1C/E,EAAQzV,KAAKsa,cAEZ,OA1DN,SAAkBM,EAASC,GAChC,MAAMC,EAAc,IAAIla,WAAWga,EAAQ/Z,OAASga,EAAQha,QAGrD,OAFPia,EAAYC,IAAIH,GACJE,EAAAC,IAAIF,EAASD,EAAQ/Z,QAC1Bia,CACX,CAqDeE,CAAkBvF,EADP4E,EAAO1E,IAAI+E,EAAgBjF,EAAOgF,EAAmBza,KAAKwW,QAAQJ,WAEvF,CACD6E,QAAQT,EAASU,GACb,MAAOzF,EAAO0F,GAvDb,SAAmBC,EAAOC,GAC3B,GAAAA,GAASD,EAAMva,OACT,MAAA,IAAI8B,MAAM,0BAIb,MAAA,CAFWyY,EAAMrZ,MAAM,EAAGsZ,GACfD,EAAMrZ,MAAMsZ,GAElC,CAgDyCC,CAAmBd,EAASxa,KAAK6V,aAC5D0F,EAAYlB,EAAO1E,IAAID,KAAKyF,EAAiB1F,EAAOyF,EAAiBlb,KAAKwW,QAAQJ,WACxF,IAAKmF,EACD,MAAM,IAAI5Y,MAAM,iCAAiC6X,EAAQ7Y,gCAAgCuZ,EAAgBvZ,iCAAiC3B,KAAKwW,QAAQL,UAAUxU,oCAAoC3B,KAAKwW,QAAQJ,UAAUzU,cAEhO,OAAO,IAAI6Z,aAActC,OAAOqC,EACnC,CACDE,mBACW,MAAA,CACHtF,UAAWqD,EAAYxZ,KAAKwW,QAAQL,WACpCC,UAAWoD,EAAYxZ,KAAKwW,QAAQJ,WAE3C,EC9IL,SAASsF,EAAUC,EAASC,EAAYC,EAAGC,GAEvC,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUvD,GAAa,IAAOwD,EAAAL,EAAUM,KAAKzD,GAAQ,OAAUlM,GAAKwP,EAAOxP,GAAO,CAC3F,SAAS4P,EAAS1D,GAAa,IAAOwD,EAAAL,EAAmB,MAAAnD,GAAU,OAAQlM,GAAKwP,EAAOxP,GAAO,CAC9F,SAAS0P,EAAKrC,GAJlB,IAAenB,EAIoBmB,EAAAwC,KAAON,EAAQlC,EAAOnB,QAJ1CA,EAIyDmB,EAAOnB,MAJhDA,aAAiBkD,EAAIlD,EAAQ,IAAIkD,GAAE,SAAUG,GAAWA,EAAQrD,EAAO,KAIhB4D,KAAKL,EAAWG,EAAY,CACxGF,GAAAL,EAAYA,EAAUU,MAAMb,EAASC,GAAc,KAAKQ,OACtE,GACA,CAKA,MAAMK,UAAwB9Z,MAC1BsX,YAAYO,EAASkC,GACjBC,MAAMnC,EAASkC,GACf1c,KAAKwa,QAAU,GAAGiC,EAAgBG,UAAU5c,KAAKia,YAAY4C,OAAO7c,KAAK8c,KAAO,KAAO9c,KAAK8c,KAAO,KAAKtC,EAAU,KAAOA,EAAU,KAC5HuC,OAAAC,eAAehd,KAAMyc,EAAgB3a,UAC/C,CACGgb,WACO,MAAA,EACV,EAELL,EAAgBG,OAAS,0BAKzB,MAAMK,UAA0BR,EACxBK,WACO,MAAA,6CACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMid,EAAkBnb,UACjD,EAML,MAAMqb,UAAkCV,EAChCK,WACO,MAAA,6KACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMmd,EAA0Brb,UACzD,EAML,MAAMsb,UAA8BX,EAC5BK,WACO,MAAA,qNACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMod,EAAsBtb,UACrD,EAML,MAAMub,UAAoCZ,EAClCK,WACO,MAAA,iIACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMqd,EAA4Bvb,UAC3D,EAML,MAAMwb,UAAgCb,EAC9BK,WACO,MAAA,kFACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMsd,EAAwBxb,UACvD,EAUL,MAAMyb,UAAyBd,EACvBK,WACO,MAAA,wCACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMud,EAAiBzb,UAChD,EAML,MAAM0b,UAAwBf,EACtBK,WACO,MAAA,wCACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMwd,EAAgB1b,UAC/C,EAML,MAAM2b,UAAwBhB,EACtBK,WACO,MAAA,2EACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMyd,EAAgB3b,UAC/C,EAML,MAAM4b,UAA+BjB,EAC7BK,WACO,MAAA,8FACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAM0d,EAAuB5b,UACtD,EAML,MAAM6b,UAAkClB,EAChCK,WACO,MAAA,iHACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAM2d,EAA0B7b,UACzD,EAML,MAAM8b,UAA0BnB,EACxBK,WACO,MAAA,oDACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAM4d,EAAkB9b,UACjD,EAML,MAAM+b,UAA0BpB,EACxBK,WACO,MAAA,wCACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAM6d,EAAkB/b,UACjD,EAML,MAAMgc,UAAsBrB,EACpBK,WACO,MAAA,oCACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAM8d,EAAchc,UAC7C,EAML,MAAMic,UAAqBtB,EACvBxC,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAM+d,EAAajc,UAC5C,EAGL,MAAMkc,EAA0B,CAC5B,CAAC7F,EAA0B8F,eAAgBF,EAC3C,CAAC5F,EAA0B+F,oBAAqBX,EAChD,CAACpF,EAA0BgG,mBAAoBX,EAC/C,CAACrF,EAA0BiG,mBAAoBX,EAC/C,CAACtF,EAA0BkG,0BAA2BjB,EACtD,CAACjF,EAA0BmG,wBAAyBnB,GAWlD,MAAAoB,EAAsB,IAT5B,MACIC,WAAWC,GACP,IAAIC,EAAmBX,EAIhB,OAHHU,EAAME,QAAQX,IACKU,EAAAV,EAAwBS,EAAME,OAASZ,GAEvD,IAAIW,EAAiBD,EAAMjE,QACrC,GAIL,MAAMoE,EACFC,QAAQC,GACJ,MAAO,UAAWA,CACrB,EAGL,MAAMC,EAAwB,CAC1B,CAAC1G,EAA6B4F,eAAgBF,EAC9C,CAAC1F,EAA6B6F,oBAAqBX,EACnD,CAAClF,EAA6B8F,mBAAoBX,EAClD,CAACnF,EAA6B+F,mBAAoBX,GAsBhD,MAAAuB,EAAwB,IApB9B,cAAoCJ,EAChCK,oBAAoBC,GACT,MAAA,CACHC,OAAQ,kBACRC,OAAQ,CAACtG,KAAKC,UAAUmG,IAE/B,CACDG,mBAAmBP,GACf,IAAIJ,EAAmBX,EAIvB,MAHIe,EAASL,MAAME,QAAQI,IACJL,EAAAK,EAAsBD,EAASL,MAAME,OAASZ,GAE/D,IAAIW,EAAiBI,EAASL,MAAMjE,QAC7C,CACD8E,uBAAuBC,GACZ,MAAA,CACHC,IAAKD,EAAYzF,OAExB,GAIL,MAAM2F,EACFxF,YAAYyF,EAASC,GACjB3f,KAAK0f,QAAUA,EACf1f,KAAK4f,SAAW,4CAA8CD,CACjE,CACDE,iBAAiBC,GACb,OAAOpE,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,OAAOA,KAAK0f,QAAQK,QAAQ/f,KAAK4f,SAAUE,EACvD,GACK,CACDE,oBACI,OAAOtE,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,OAAOA,KAAK0f,QAAQO,WAAWjgB,KAAK4f,SAChD,GACK,CACDM,iBACI,OAAOxE,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,MAAMmgB,QAAengB,KAAK0f,QAAQU,QAAQpgB,KAAK4f,UAC/C,OAAKO,GACM,IAGvB,GACK,EASI,SAAAE,EAAaC,EAAKC,GAChB,OAPX,SAA4BD,GACxB,MAAsB,MAAlBA,EAAIve,OAAQ,GACLue,EAAIve,MAAM,GAAK,GAEnBue,CACX,CAEWE,CAAmBF,GAAO,IAAMC,CAC3C,CAEA,MAAME,EACFxG,YAAYyF,EAASC,EAAWvF,EAAWsG,EAAUC,GACjD3gB,KAAK2f,UAAYA,EACjB3f,KAAKoa,UAAYA,EACjBpa,KAAK0gB,SAAWA,EAChB1gB,KAAK2gB,eAAiBA,EACtB3gB,KAAK4gB,QAAU,SACf5gB,KAAK6gB,SAAW,UAChB7gB,KAAK8gB,iBAAmB,YACxB9gB,KAAK+gB,WAAa,IAClB/gB,KAAKghB,UAAW,EAChBhhB,KAAKihB,qBAAuB,IAAIxB,EAAyBC,EAASC,EACrE,CACDuB,kBACI,OAAOxF,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAsgB,EAAM,IAAIa,IAAId,EAAargB,KAAK2f,UAAW3f,KAAK4gB,UACtDN,EAAIc,aAAaC,OAAO,YAAarhB,KAAKoa,WAC1C,MAAM0F,QAAoB9f,KAAKihB,qBAAqBf,iBACpD,IAAIlgB,KAAKghB,SAOT,OAJIlB,GACIQ,EAAAc,aAAaC,OAAO,gBAAiBvB,GAE7C9f,KAAKshB,YAAc,IAAIC,YAAYjB,EAAI3e,YAChC,IAAIoa,SAAQ,CAACC,EAASC,KACzBjc,KAAKshB,YAAYE,QAAUvF,EACtBjc,KAAAshB,YAAYG,OAAS,KACtBzhB,KAAKshB,YAAYE,QAAUxhB,KAAK0hB,cAAcC,KAAK3hB,MACnDA,KAAKshB,YAAYM,UAAY5hB,KAAK6hB,gBAAgBF,KAAK3hB,UAE3E,GAEA,GACK,CACD8hB,KAAKtH,EAASuH,EAAUC,EAAOC,GAC3B,OAAOvG,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAsgB,EAAM,IAAIa,IAAId,EAAargB,KAAK2f,UAAW3f,KAAK6gB,WACtDP,EAAIc,aAAaC,OAAO,YAAarhB,KAAKoa,WACtCkG,EAAAc,aAAaC,OAAO,KAAMU,GAC9BzB,EAAIc,aAAaC,OAAO,OAAQY,GAAOjiB,KAAK+gB,YAAYpf,YACpD2e,EAAAc,aAAaC,OAAO,QAASW,SAC3BE,MAAM5B,EAAK,CACbnB,OAAQ,OACRgD,KAAM1J,EAAOC,OAAO8B,IAEpC,GACK,CACD4H,QACQC,IAAAA,EACwB,QAA3BA,EAAKriB,KAAKshB,mBAAgC,IAAPe,GAAyBA,EAAGC,OACnE,CACDC,UACI,OAAOviB,KAAKkhB,iBACf,CACDoB,QACQD,IAAAA,EACJriB,KAAKghB,UAAW,EACY,QAA3BqB,EAAKriB,KAAKshB,mBAAgC,IAAPe,GAAyBA,EAAGC,OACnE,CACDE,YAAY9B,GACR1gB,KAAK0gB,SAAWA,CACnB,CACD+B,kBAAkB9B,GACd3gB,KAAK2gB,eAAiBA,CACzB,CACDe,cAAcjV,GACV,IAAI4V,EAAIK,EACJ,IAAC1iB,KAAKghB,SAAU,CACVqB,IAA2B,QAA3BA,EAAKriB,KAAKshB,mBAAgC,IAAPe,OAAgB,EAASA,EAAGM,cAAgBpB,YAAYqB,OAG7F,OAFA5iB,KAAKshB,YAAYgB,aACjBtiB,KAAKkhB,kBAGH,IAA2B,QAA3BwB,EAAK1iB,KAAKshB,mBAAgC,IAAPoB,OAAgB,EAASA,EAAGC,cAAgBpB,YAAYsB,WAE7F,YADAC,QAAQC,MAAM,uCAAwCjK,KAAKC,UAAUtM,IAGzEzM,KAAK2gB,eAAelU,EACvB,CACJ,CACDoV,gBAAgBpV,GACZ,OAAOiP,EAAU1b,UAAM,OAAQ,GAAQ,YAC/ByM,GAAAA,EAAEuW,OAAShjB,KAAK8gB,yBAGd9gB,KAAKihB,qBAAqBpB,iBAAiBpT,EAAEqT,cAC9C9f,KAAKghB,UAAU,CACZ,IAAAiC,EACA,IACwBA,EAAAnK,KAAKQ,MAAM7M,EAAEuW,KACxC,OACMvW,GACH,MAAM,IAAIgQ,EAAgB,wCAAwChQ,EAAEuW,OACvE,CACDhjB,KAAK0gB,SAASuC,EACjB,CACb,GACK,EAGL,MAAMC,EACFjJ,YAAYyF,GACR1f,KAAK0f,QAAUA,EACf1f,KAAK4f,SAAW,uCACnB,CACDuD,gBAAgBC,GACZ,OAAO1H,EAAU1b,UAAM,OAAQ,GAAQ,YAC/B,GAAoB,aAApBojB,EAAWC,KACJ,OAAArjB,KAAK0f,QAAQK,QAAQ/f,KAAK4f,SAAU9G,KAAKC,UAAUqK,IAE9D,MAAME,EAAa,CACfC,eAAgBH,EAAWI,QAAQC,cAAchI,mBACjDiI,gBAAiBN,EAAWI,QAAQE,gBACpC/D,UAAWyD,EAAWI,QAAQ7D,WAE5BgE,EAAgB,CAClBN,KAAM,OACNO,aAAcR,EAAWQ,aACzBJ,QAASF,EACTO,kBAAmBT,EAAWS,kBAC9BC,iBAAkBV,EAAWU,kBAE1B,OAAA9jB,KAAK0f,QAAQK,QAAQ/f,KAAK4f,SAAU9G,KAAKC,UAAU4K,GACtE,GACK,CACDI,mBACI,OAAOrI,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,OAAOA,KAAK0f,QAAQO,WAAWjgB,KAAK4f,SAChD,GACK,CACDoE,gBACI,OAAOtI,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,MAAMmgB,QAAengB,KAAK0f,QAAQU,QAAQpgB,KAAK4f,UAC/C,IAAKO,EACM,OAAA,KAEL,MAAAiD,EAAatK,KAAKQ,MAAM6G,GAC1B,GAAoB,aAApBiD,EAAWC,KACJ,OAAAD,EAEX,MAAMK,EAAgB,IAAIzJ,EAAcoJ,EAAWI,QAAQD,gBACpD,MAAA,CACHF,KAAM,OACNO,aAAcR,EAAWQ,aACzBC,kBAAmBT,EAAWS,kBAC9BC,iBAAkBV,EAAWU,iBAC7BN,QAAS,CACLC,gBACA9D,UAAWyD,EAAWI,QAAQ7D,UAC9B+D,gBAAiBN,EAAWI,QAAQE,iBAGxD,GACK,CACDO,oBACI,OAAOvI,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAojB,QAAmBpjB,KAAKgkB,gBAC9B,IAAKZ,EACK,MAAA,IAAI3G,EAAgB,iEAE1B,GAAoB,aAApB2G,EAAWC,KACL,MAAA,IAAI5G,EAAgB,6EAEvB,OAAA2G,CACnB,GACK,CACDc,wBACI,OAAOxI,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAojB,QAAmBpjB,KAAKgkB,gBAC9B,IAAKZ,EACK,MAAA,IAAI3G,EAAgB,4EAE9B,GAAkF,UAA7E2G,aAA+C,EAASA,EAAWC,MAC9D,MAAA,IAAI5G,EAAgB,oFAEvB,OAAA2G,CACnB,GACK,CACDe,uBACI,OAAOzI,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,MAAMmgB,QAAengB,KAAK0f,QAAQU,QAAQpgB,KAAK4f,UAC/C,IAAKO,EACM,OAAA,KAGX,OADmBrH,KAAKQ,MAAM6G,GACZkD,IAC9B,GACK,CACDe,uBAAuBC,GACnB,OAAO3I,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAojB,QAAmBpjB,KAAKgkB,gBAC1B,GAAAZ,GAAkC,SAApBA,EAAWC,KAElB,OADPD,EAAWS,kBAAoBQ,EACxBrkB,KAAKmjB,gBAAgBC,EAE5C,GACK,CACDkB,uBACI,OAAO5I,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAojB,QAAmBpjB,KAAKgkB,gBAC1B,GAAAZ,GAAc,sBAAuBA,EACrC,OAAOA,EAAWS,iBAGlC,GACK,CACDU,2BACI,OAAO7I,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAojB,QAAmBpjB,KAAKgkB,gBAC9B,GAAIZ,EAAY,CACN,MAAAoB,EAASpB,EAAWU,kBAAoB,EAEvC,OADPV,EAAWU,iBAAmBU,EAAS,EAChCxkB,KAAKmjB,gBAAgBC,EAC/B,CACb,GACK,CACDqB,sBACI,OAAO/I,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAojB,QAAmBpjB,KAAKgkB,gBAC9B,OAAIZ,GACOA,EAAWU,kBAEf,CACnB,GACK,EAKL,SAASY,KAAYxH,GAET,IACQ4F,QAAAC,MAAM,uBAAwB7F,EACzC,OACMmF,GAAO,CAEtB,CAkBA,MAAMsC,GACF1K,YAAYyF,EAASkF,GACjB5kB,KAAK0f,QAAUA,EACf1f,KAAK4kB,uBAAyBA,EAC9B5kB,KAAKqjB,KAAO,OACZrjB,KAAK6kB,sBAAwB,QACxB7kB,KAAA8kB,oBAAsBC,IAC3B/kB,KAAKwjB,QAAU,KACfxjB,KAAKglB,QAAU,KACfhlB,KAAKilB,gBAAkB,GACvBjlB,KAAKklB,UAAY,GACZllB,KAAAmlB,kBAAoB,IAAIjC,EAAwBxD,EACxD,CACD0F,mBAAmB1F,GACf,OAAOhE,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAqlB,EAA0B,IAAInC,EAAwBxD,GACtD0D,QAAmBiC,EAAwBpB,oBAC1C,OAAA,IAAIU,GAAejF,EAAS,CAAEC,UAAWyD,EAAWI,QAAQ7D,WAC/E,GACK,CACD2F,QAAQ9K,GACJxa,KAAKulB,gBACC,MAAA9B,EAAgB,IAAIzJ,EAC1B,IAAI2F,EAAY,GACZ6F,EAAgBxlB,KAAK6kB,sBAuBlB,OAtBHhjB,MAAM4jB,QAAQzlB,KAAK4kB,yBACnB5kB,KAAKilB,gBAAkBjlB,KAAK4kB,uBAAuBc,KAAcC,IACvD,MAAAX,EAAU,IAAIvE,EAAczgB,KAAK0f,QAASiG,EAAOhG,UAAW8D,EAAcrJ,WAAW,SAAW3N,IAClGqW,QAAQrE,MAAMhS,EAAC,IAGZ,OADCuY,EAAAxC,aAAYhI,GAAWxa,KAAK4lB,wBAAwBZ,EAASW,EAAOhG,UAAWnF,KAChFwK,CAAA,IAEXhlB,KAAKilB,gBAAgBtL,SAAkBkM,GAAAA,EAAO3E,sBAG9CvB,EAAY3f,KAAK4kB,uBAAuBjF,UACpC3f,KAAK4kB,uBAAuBY,gBAC5BA,EAAgBxlB,KAAK4kB,uBAAuBY,eAEhDxlB,KAAKglB,QAAU,IAAIvE,EAAczgB,KAAK0f,QAAS1f,KAAK4kB,uBAAuBjF,UAAW8D,EAAcrJ,UAAWpa,KAAK8lB,gBAAgBnE,KAAK3hB,MAAOA,KAAK+lB,sBAAsBpE,KAAK3hB,OAChLA,KAAKglB,QAAQ9D,mBAEjBlhB,KAAKwjB,QAAU,CACXC,gBACA9D,aAEG3f,KAAKgmB,sBAAsBR,EAAehL,EACpD,CACDyL,oBACI,OAAOvK,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,GAAI6B,MAAM4jB,QAAQzlB,KAAK4kB,wBACb,MAAA,IAAInI,EAAgB,6FAE9Bzc,KAAKulB,gBACL,MAAMW,QAAyBlmB,KAAKmlB,kBAAkBlB,oBACjDiC,IAGLlmB,KAAKwjB,QAAU0C,EAAiB1C,QAC3BxjB,KAAAglB,QAAU,IAAIvE,EAAczgB,KAAK0f,QAAS1f,KAAK4kB,uBAAuBjF,UAAWuG,EAAiB1C,QAAQC,cAAcrJ,UAAWpa,KAAK8lB,gBAAgBnE,KAAK3hB,MAAOA,KAAK+lB,sBAAsBpE,KAAK3hB,aACnMA,KAAKglB,QAAQ9D,kBACnBlhB,KAAKklB,UAAUvL,SAAQ+G,GAAYA,EAASwF,EAAiBtC,gBACzE,GACK,CACDuC,YAAYjH,EAASkH,GACV,OAAA,IAAIrK,SAAQ,CAACC,EAASC,IAAWP,EAAU1b,UAAM,OAAQ,GAAQ,YAChE,IAACA,KAAKglB,UAAYhlB,KAAKwjB,WAAa,oBAAqBxjB,KAAKwjB,SACxD,MAAA,IAAI/G,EAAgB,iDAE9B,MAAM4H,SAAYrkB,KAAKmlB,kBAAkBV,uBAAuB9iB,iBAC1D3B,KAAKmlB,kBAAkBZ,2BAC7BG,EAAS,4BAA6B3H,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,CAAE,EAAEnH,GAAU,CAAEmF,QAC5E,MAAAiC,EAAiBtmB,KAAKwjB,QAAQC,cAAclJ,QAAQzB,KAAKC,UAAUgE,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,CAAA,EAAInH,GAAU,CAAEmF,QAAQxK,EAAe7Z,KAAKwjB,QAAQE,kBACpJ1jB,KAAAglB,QACAlD,KAAKwE,EAAgBtmB,KAAKwjB,QAAQE,gBAAiBxE,EAAQC,QAC3DoH,MAAMtK,GACXjc,KAAK8kB,gBAAgB/J,IAAIsJ,EAAG1iB,WAAYqa,GACxCoK,SAA8DA,GACjE,KACJ,CACDI,kBACIxmB,KAAKulB,gBACLvlB,KAAKklB,UAAY,GACjBllB,KAAKwjB,QAAU,KACfxjB,KAAKglB,QAAU,IAClB,CACDyB,aACI,OAAO/K,EAAU1b,UAAM,OAAQ,GAAQ,YAC5B,OAAA,IAAI+b,SAASC,GAAYN,EAAU1b,UAAM,OAAQ,GAAQ,YAC5D,IAAI0mB,GAAS,EACb,MAAMN,EAAgB,KACTM,GAAA,EACJ1mB,KAAA2mB,yBAAyBpK,KAAKP,EAAO,EAE1C,UACMhc,KAAKmmB,YAAY,CAAEhH,OAAQ,aAAcC,OAAQ,IAAMgH,EAChE,OACM3Z,GACHqW,QAAQC,MAAMtW,GACTia,GACI1mB,KAAA2mB,yBAAyBpK,KAAKP,EAE1C,CACJ,KACb,GACK,CACD4K,OAAOC,GAEI,OADF7mB,KAAAklB,UAAUjkB,KAAK4lB,GACb,IAAO7mB,KAAKklB,UAAYllB,KAAKklB,UAAU4B,QAAOpG,GAAYA,IAAamG,GACjF,CACDzE,QACQC,IAAAA,EACoB,QAAvBA,EAAKriB,KAAKglB,eAA4B,IAAP3C,GAAyBA,EAAGD,QAC5DpiB,KAAKilB,gBAAgBtL,SAAkBkM,GAAAA,EAAOzD,SACjD,CACDG,UACI,OAAO7G,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,MAAM+mB,EAAW/mB,KAAKilB,gBAAgBS,KAAcG,GAAAA,EAAOtD,YACvDviB,KAAKglB,SACL+B,EAAS9lB,KAAKjB,KAAKglB,QAAQzC,iBAEzBxG,QAAQiL,IAAID,EAC9B,GACK,CACDnB,wBAAwBZ,EAASrF,EAAWsD,GACxC,OAAOvH,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,GAAKA,KAAKilB,gBAAgBgC,SAASjC,GAS5B,OALPhlB,KAAKulB,cAAc,CAAE2B,OAAQlC,IAC7BhlB,KAAKwjB,QAAQ7D,UAAYA,EACzB3f,KAAKglB,QAAUA,EACfhlB,KAAKglB,QAAQvC,kBAAkBziB,KAAK+lB,sBAAsBpE,KAAK3hB,OAC/DA,KAAKglB,QAAQxC,YAAYxiB,KAAK8lB,gBAAgBnE,KAAK3hB,OAC5CA,KAAK8lB,gBAAgB7C,GARxB+B,EAAQ1C,OASxB,GACK,CACDwD,gBAAgB7C,GACZ,OAAOvH,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,MAAMmnB,EAAgBrO,KAAKQ,MAAMtZ,KAAKwjB,QAAQC,cAAcxI,QAAQxC,EAAOS,OAAO+J,EAAsBzI,SAASjB,eAAgBM,EAAeoJ,EAAsBxhB,QAElK,GADJijB,EAAS,2BAA4ByC,KAC/B,UAAWA,GAAgB,CACvB,MAAA9C,EAAK8C,EAAc9C,GAAG1iB,WACtBqa,EAAUhc,KAAK8kB,gBAAgBsC,IAAI/C,GACzC,OAAKrI,GAILA,EAAQmL,QACHnnB,KAAA8kB,gBAAgBuC,OAAOhD,SAJxBK,EAAS,eAAeL,mCAM/B,CACG,QAAqB,IAArB8C,EAAc9C,GAAkB,CAChC,MAAMG,QAAexkB,KAAKmlB,kBAAkBb,uBAC5C,QAAe,IAAXE,GAAwB2C,EAAc9C,IAAMG,EAE5C,YA/KpB,YAAqBtH,GAET,IACQ4F,QAAArE,MAAM,uBAAwBvB,EACzC,OACMmF,GAAO,CAEtB,CAuK6BiF,CAAA,uBAAuBH,EAAc9C,0DAA0DG,OAGhF,YAAxB2C,EAAcI,cACRvnB,KAAKmlB,kBAAkBf,uBAAuB+C,EAAc9C,IAEzE,CAED,MAAMa,EAAYllB,KAAKklB,UACK,YAAxBiC,EAAcI,cACRvnB,KAAKwnB,cAAcL,EAAelE,EAAsBxhB,OAEtC,eAAxB0lB,EAAcI,cACRvnB,KAAK2mB,0BAEfzB,EAAUvL,SAAQ+G,GAAYA,EAASyG,IACnD,GACK,CACDpB,sBAAsBtZ,GAClB,OAAOiP,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,MAAM,IAAIyc,EAAgB,gBAAgB3D,KAAKC,UAAUtM,KACrE,GACK,CACD+a,cAAc5D,EAAcF,GACxB,OAAOhI,EAAU1b,UAAM,OAAQ,GAAQ,YACnCA,KAAKwjB,QAAUzG,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,CAAE,EAAErmB,KAAKwjB,SAAU,CAAEE,oBAC1D,MAAA+D,EAAc7D,EAAa8D,QAAQC,MAAMC,MAAaC,GAAc,aAAdA,EAAKhL,OAC3DiL,EAAqB/K,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,CAAE,EAAEzC,GAAe,CAAE8D,QAAS3K,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,CAAA,EAAIzC,EAAa8D,SAAU,CAAEC,MAAO,CAACF,aAChJznB,KAAKmlB,kBAAkBhC,gBAAgB,CACzCE,KAAM,OACNG,QAASxjB,KAAKwjB,QACdK,kBAAmBD,EAAaS,GAChCT,aAAckE,EACdhE,iBAAkB,GAElC,GACK,CACD6C,yBACI,OAAOjL,EAAU1b,UAAM,OAAQ,GAAQ,YACnCA,KAAKwmB,wBACCxmB,KAAKmlB,kBAAkBpB,kBACzC,GACK,CACDiC,sBAAsBR,EAAehL,GAC3B,MAAA8F,EAAM,IAAIa,IAAIqE,GAIpB,OAHAlF,EAAIc,aAAaC,OAAO,IArOP,GAqO6B1f,YAC9C2e,EAAIc,aAAaC,OAAO,KAAMrhB,KAAKwjB,QAAQC,cAAcrJ,WACzDkG,EAAIc,aAAaC,OAAO,IAAKvI,KAAKC,UAAUyB,IACrC8F,EAAI3e,UACd,CACD4jB,cAAc7I,GACN2F,IAAAA,EACoB,QAAvBA,EAAKriB,KAAKglB,eAA4B,IAAP3C,GAAyBA,EAAGC,QAC5DtiB,KAAKilB,gBACA6B,QAAOe,GAAQA,KAAUnL,aAAyC,EAASA,EAAQwK,UACnFvN,SAAkBkM,GAAAA,EAAOvD,UAC9BtiB,KAAKilB,gBAAkB,EAC1B,EAGI,SAAA8C,GAAYpP,EAAOqP,GACxB,OAAOC,GAActP,EAAO,CAACqP,GACjC,CACS,SAAAC,GAActP,EAAOuP,GAC1B,SAAKvP,GAA0B,iBAAVA,IAGduP,EAAaC,OAAqBH,GAAAA,KAAerP,GAC5D,CAcA,SAASyP,KACD,GAAkB,oBAAXC,OAGJ,OAAAA,MACX,CAOA,SAASC,KACDjG,IAAAA,EACE,MAAAkG,EAAgC,QAAtBlG,EAAK+F,YAAgC,IAAP/F,OAAgB,EAASA,EAAGmG,SAASD,OACnF,OAAIA,EACOA,EAAS,4BAEb,EACX,CAEA,MAAME,GACFxO,YAAYyF,EAASgJ,GACjB1oB,KAAK0oB,kBAAoBA,EACzB1oB,KAAKqjB,KAAO,WACZrjB,KAAK2oB,oBAAsB,KAC3B3oB,KAAK4oB,qBAAsB,EAC3B5oB,KAAKklB,UAAY,GACjB,MAAMmD,EAASI,GAAiBJ,OAChC,IAAKI,GAAiBI,uBAAuBR,EAAQK,GACjD,MAAM,IAAIhL,EAET1d,KAAAmlB,kBAAoB,IAAIjC,EAAwBxD,GAChD1f,KAAA8oB,eAAiBT,EAAOK,GAAmBK,UACnD,CACD3D,mBAAmB1F,GACf,OAAOhE,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MAAAqlB,EAA0B,IAAInC,EAAwBxD,GACtD0D,QAAmBiC,EAAwBnB,wBACjD,OAAO,IAAIuE,GAAiB/I,EAAS0D,EAAW4F,YAC5D,GACK,CACD5D,wBAAwBsD,GACpB,OAAOD,GAAiBI,uBAAuB7oB,KAAKqoB,OAAQK,EAC/D,CACDtD,6BAA6BsD,GACzB,QAAID,GAAiBI,uBAAuB7oB,KAAKqoB,OAAQK,IAC9C1oB,KAAKqoB,OAAOK,GAAmBK,WAAWE,eAGxD,CACD7D,qCACQ,IAACplB,KAAKqoB,OACN,MAAO,GAGX,OADgBtL,OAAOmM,QAAQlpB,KAAKqoB,QAAQvB,QAAO,EAAEqC,EAAGxQ,KAnEhE,SAAgCA,GACxB,IACI,SAACoP,GAAYpP,EAAO,gBAAkBoP,GAAYpP,EAAMoQ,WAAY,gBAGjEd,GAActP,EAAMoQ,WAAWK,WAAY,CAAC,OAAQ,QAAS,aACvE,OACM/G,GACI,OAAA,CACV,CACL,CAyD2EgH,CAAuB1Q,KAC3E+M,KAAI,EAAEsD,EAAaM,MAAa,CAC3CzM,KAAMyM,EAAOP,WAAWK,WAAWvM,KACnC0M,SAAUD,EAAOP,WAAWK,WAAWI,UACvCC,SAAUH,EAAOP,WAAWK,WAAWM,MACvCC,OAAQL,EAAOP,WAAWK,WAAWO,OACrCX,cACAY,UAAU,EACVC,SAAUP,EAAOP,WAAWE,mBAEnC,CACD7D,8BAA8BiD,EAAQK,GAC1B,QAAEL,GACNK,KAAqBL,GACgB,iBAA9BA,EAAOK,IACd,eAAgBL,EAAOK,EAC9B,CACDpD,QAAQ9K,GACCxa,KAAA8pB,SAnVY,EAmVetP,EACnC,CACDyL,oBACI,OAAOvK,EAAU1b,UAAM,OAAQ,GAAQ,YAC/B,IACA0kB,EAAS,6CACT,MAAMd,QAAqB5jB,KAAK8oB,eAAe7C,oBAC/CvB,EAAS,kDAAmDd,GACjC,YAAvBA,EAAa2D,OACbvnB,KAAK+pB,oBACL/pB,KAAKklB,UAAUvL,SAAoB+G,GAAAA,EAASkD,YAGtC5jB,KAAKmlB,kBAAkBpB,kBAEpC,OACMtX,SACGzM,KAAKmlB,kBAAkBpB,mBAC7BjB,QAAQrE,MAAMhS,EACjB,CACb,GACK,CACD+Z,kBACQxmB,KAAK4oB,qBACL5oB,KAAK8oB,eAAerC,aAExBzmB,KAAKgqB,mBACR,CACDvD,aACI,OAAO/K,EAAU1b,UAAM,OAAQ,GAAQ,YAC5B,OAAA,IAAI+b,SAAmBC,IAC1B,MAAMoK,EAAgB,KAClBpmB,KAAKgqB,oBACLhqB,KAAKmlB,kBAAkBpB,mBAAmBxH,KAAKP,EAAO,EAEtD,IACAhc,KAAK8oB,eAAerC,gBAEvB,OACMha,GACHiY,EAASjY,GACTzM,KAAKmmB,YAAY,CACbhH,OAAQ,aACRC,OAAQ,IACTgH,EACN,IAEjB,GACK,CACD4D,oBACQ3H,IAAAA,EACJriB,KAAK4oB,qBAAsB,EAC3B5oB,KAAKklB,UAAY,GACmB,QAAnC7C,EAAKriB,KAAK2oB,2BAAwC,IAAPtG,GAAyBA,EAAGrgB,KAAKhC,KAChF,CACD4mB,OAAOqD,GAEI,OADFjqB,KAAAklB,UAAUjkB,KAAKgpB,GACb,IAAOjqB,KAAKklB,UAAYllB,KAAKklB,UAAU4B,QAAOpG,GAAYA,IAAauJ,GACjF,CACD9D,YAAYjH,EAASkH,GACjB,OAAO1K,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,MAAMqkB,SAAYrkB,KAAKmlB,kBAAkBV,uBAAuB9iB,iBAC1D3B,KAAKmlB,kBAAkBZ,2BAC7BG,EAAS,gCAAiC3H,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,CAAE,EAAEnH,GAAU,CAAEmF,QACtF,MAAMvK,EAAS9Z,KAAK8oB,eAAehH,KAAK/E,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,CAAE,EAAEnH,GAAU,CAAEmF,QAG7E,OAFPvK,EAAOyC,MAAKuC,GAAY4F,EAAS,2BAA4B5F,KAC7DsH,SAA8DA,IACvDtM,CACnB,GACK,CACDgQ,SAASI,EAAiB1P,GACtB,OAAOkB,EAAU1b,UAAM,OAAQ,GAAQ,YAC/B,IACS0kB,EAAA,uDAAuDwF,cAA6B1P,GAC7F,MAAMoJ,QAAqB5jB,KAAK8oB,eAAexD,QAAQ4E,EAAiB1P,GACxEkK,EAAS,sCAAuCd,GACrB,YAAvBA,EAAa2D,cACPvnB,KAAKwnB,gBACXxnB,KAAK+pB,qBAET/pB,KAAKklB,UAAUvL,SAAoB+G,GAAAA,EAASkD,IAC/C,OACMnX,GACHiY,EAASjY,GACT,MAAM0d,EAAoB,CACtB5C,MAAO,gBACPG,QAAS,CACL/I,KAAM,EACNnE,QAAS/N,aAA6B,EAASA,EAAE9K,aAGzD3B,KAAKklB,UAAUvL,SAAoB+G,GAAAA,EAASyJ,IAC/C,CACb,GACK,CACDJ,oBACI/pB,KAAK4oB,qBAAsB,EAC3B5oB,KAAK2oB,oBAAsB3oB,KAAK8oB,eAAelC,QAAOna,IAClDiY,EAAS,2BAA4BjY,GACjCzM,KAAK4oB,qBACL5oB,KAAKklB,UAAUvL,SAAoB+G,GAAAA,EAASjU,KAEhC,eAAZA,EAAE8a,OACFvnB,KAAKymB,YACR,GAER,CACDe,gBACW,OAAAxnB,KAAKmlB,kBAAkBhC,gBAAgB,CAC1CE,KAAM,WACN2F,YAAahpB,KAAK0oB,kBAClB5E,iBAAkB,GAEzB,EAEL2E,GAAiBJ,OAASD,KAE1B,MAAMgC,GACFnQ,cACI,MAAMoO,EAASD,KACf,KAAMC,aAAuC,EAASA,EAAOgC,cACzD,MAAM,IAAI1M,EAEd3d,KAAKqoB,OAASA,CACjB,CACDjI,QAAQ7Y,GACJ,OAAOmU,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,OAAO+b,QAAQC,QAAQhc,KAAKqoB,OAAOgC,aAAajK,QAAQ7Y,GACpE,GACK,CACD0Y,WAAW1Y,GACP,OAAOmU,EAAU1b,UAAM,OAAQ,GAAQ,YAEnC,OADKA,KAAAqoB,OAAOgC,aAAapK,WAAW1Y,GAC7BwU,QAAQC,SAC3B,GACK,CACD+D,QAAQxY,EAAKoR,GAET,OADA3Y,KAAKqoB,OAAOgC,aAAatK,QAAQxY,EAAKoR,GAC/BoD,QAAQC,SAClB,EAOL,SAASsO,GAA8B3R,GAC5B,OAaX,SAAgCA,GAC5B,MAAO,gBAAiBA,CAC5B,CAfW4R,CAAuB5R,IAAUA,EAAMiR,QAClD,CAKA,SAASY,GAA8B7R,GAC5B,OAAA2R,GAA8B3R,IAAUA,EAAMkR,QACzD,CAYA,SAASY,GAAmB9R,GACxB,MAAO,cAAeA,CAC1B,CASA,MAAM+R,GACFzQ,YAAY0Q,GACR3qB,KAAK4qB,iBAAmB,KACxB5qB,KAAK2qB,kBAAoB,kFACrBA,IACA3qB,KAAK2qB,kBAAoBA,EAEhC,CACDE,aACI,OAAOnP,EAAU1b,UAAM,OAAQ,GAAQ,YAKnC,OAJKA,KAAK4qB,mBACD5qB,KAAA4qB,iBAAmB5qB,KAAK8qB,mBAC7B9qB,KAAK4qB,iBAAiBrE,OAAM,IAAOvmB,KAAK4qB,iBAAmB,QAExD5qB,KAAK4qB,gBACxB,GACK,CACDG,oBACI,OAAOrP,EAAU1b,UAAM,OAAQ,GAAQ,YAC7B,MACAgrB,SADoBhrB,KAAK6qB,cACK/D,OAAO0D,IACvC,OAA2B,IAA3BQ,EAAgBnqB,OACT,KAEJmqB,EAAgB,EACnC,GACK,CACDF,mBACI,OAAOpP,EAAU1b,UAAM,OAAQ,GAAQ,YAC/B,IACA,MAAMirB,QAAwB/I,MAAMliB,KAAK2qB,mBACnCO,QAAoBD,EAAgBE,OAC1C,IAAKtpB,MAAM4jB,QAAQyF,KACdA,EAAY/C,OAAgBmB,GAAAtpB,KAAKorB,yBAAyB9B,KACrD,MAAA,IAAI1L,EAAkB,6BAE1B,MAAAyN,EAA2B5C,GAAiB6C,8BAClD,OAAOtrB,KAAKurB,kBAAkBvrB,KAAKwrB,sCAAsCN,GAAcG,EAC1F,OACM5e,GACG,MAAA,IAAImR,EAAkBnR,EAC/B,CACb,GACK,CACD+e,sCAAsCC,GAC3B,OAAAA,EAAgB/F,KAAI+F,IACvB,MAAMC,EAAe,CACjB7O,KAAM4O,EAAgB5O,KACtB4M,SAAUgC,EAAgB/B,MAC1BH,SAAUkC,EAAgBjC,UAC1BG,OAAQ8B,EAAgB9B,QAkBrB,OAhBP8B,EAAgB5F,OAAOlM,SAAkBkM,IAOjC,GANgB,QAAhBA,EAAOxC,OACPqI,EAAa/L,UAAYkG,EAAOvF,IAChCoL,EAAalG,cACTiG,EAAgBE,cACpBD,EAAaE,SAAWH,EAAgBG,UAExB,OAAhB/F,EAAOxC,KAAe,CACtB,MAAM2F,EAAcnD,EAAOte,IAC3BmkB,EAAa1C,YAAcA,EACd0C,EAAA9B,SACTnB,GAAiBoD,iBAAiB7C,GACzB0C,EAAA7B,SACTpB,GAAiBqD,sBAAsB9C,EAC9C,KAEE0C,CAAA,GAEd,CACDH,kBAAkBQ,EAAOC,GAErB,MAAO,IADO,IAAIC,IAAIF,EAAMG,OAAOF,GAAOtG,KAAImC,GAAQA,EAAKhL,QAC1CsP,UAAUzG,KAAY7I,IACnC,MAAMuP,EAAYL,EAAMnE,MAAaC,GAAAA,EAAKhL,OAASA,IAC7CwP,EAAYL,EAAMpE,MAAaC,GAAAA,EAAKhL,OAASA,IAC5C,OAAAE,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,GAAK+F,GAAarP,OAAOsJ,OAAO,CAAE,EAAE+F,IAAeC,GAAatP,OAAOsJ,OAAO,CAAE,EAAEgG,MAE5H,CACDjB,yBAAyBzS,GACrB,IAAKA,GAA4B,iBAAVA,EACZ,OAAA,EAKX,KAHqB,SAAUA,MACT,UAAWA,MACX,cAAeA,GAE1B,OAAA,EAEX,KAAM,WAAYA,KACb9W,MAAM4jB,QAAQ9M,EAAMkN,UACpBlN,EAAMkN,OAAOhlB,OACP,OAAA,EAEX,MAAMglB,EAASlN,EAAMkN,OACjB,GAAAA,EAAOyG,MAAKzE,IAASA,GAAwB,iBAATA,KAAuB,SAAUA,KAC9D,OAAA,EAEX,MAAM0E,EAAY1G,EAAO+B,MAAaC,GAAc,QAAdA,EAAKxE,OAC3C,GAAIkJ,MACM,QAASA,KACVA,EAAUjM,MACV3H,EAAMgT,eACA,OAAA,EAGf,MAAMa,EAAW3G,EAAO+B,MAAaC,GAAc,OAAdA,EAAKxE,OAC1C,UAAImJ,GACM,QAASA,GAAcA,EAASjlB,IAK7C,EAML,MAAMklB,WAAqChQ,EACnCK,WACO,MAAA,kDACV,CACD7C,eAAeiD,GACXP,SAASO,GACFH,OAAAC,eAAehd,KAAMysB,GAA6B3qB,UAC5D,EAGI,SAAA4qB,GAA4BC,EAAUjQ,GACrC,MAAAkQ,EAA2CD,EAAS1F,SAAS,mBAC7D4F,EAAyBF,EAAS/E,MAAgBkF,GAAAA,GAA8B,iBAAZA,GAAyC,oBAAjBA,EAAQjQ,OACtG,IAAC+P,IAA6CC,EACxC,MAAA,IAAIJ,GAA6B,mDAEvC,GAAAI,QAAiE,IAAvCA,EAAuBE,aAC7C,GAAAF,EAAuBE,YAAcrQ,EAAQsQ,uBAC7C,MAAM,IAAIP,GAA6B,6FAA6FI,EAAuBE,oBAAoBrQ,EAAQsQ,4CA5nBnM,YAAuB9P,GAEX,IACQ4F,QAAAmK,KAAK,uBAAwB/P,EACxC,OACMmF,GAAO,CAEtB,CAynBI6K,CAAW,gJACf,CAEA,MAAMC,GACFlT,YAAYyC,GAWJ,GAVC1c,KAAAkrB,YAAc,IAAIR,GACvB1qB,KAAKotB,QAAU,KACfptB,KAAKqtB,SAAW,KAChBrtB,KAAKstB,0BAA4B,GACjCttB,KAAKutB,+BAAiC,GACtCvtB,KAAKwtB,aAAe,CAChBC,aAAc/Q,aAAyC,EAASA,EAAQ+Q,cAAgBnF,KACxF5I,SAAUhD,aAAyC,EAASA,EAAQgD,UAAY,IAAI0K,IAEnFpqB,KAAAkrB,YAAc,IAAIR,GAAmBhO,aAAyC,EAASA,EAAQiO,oBAC/F3qB,KAAKwtB,aAAaC,YACb,MAAA,IAAIxQ,EAAkB,qLAEhCjd,KAAKqlB,wBAA0B,IAAInC,EAAwBljB,KAAKwtB,aAAa9N,UACvEhD,aAAyC,EAASA,EAAQgR,6BAC5D1tB,KAAK2tB,oCAEZ,CAIDvI,oBACW,OAAAplB,KAAKkrB,YAAYL,YAC3B,CAIG+C,gBACA,OAAwB,OAAjB5tB,KAAKotB,OACf,CAIGS,cACIxL,IAAAA,EACKA,OAAuB,QAAvBA,EAAKriB,KAAKotB,eAA4B,IAAP/K,OAAgB,EAASA,EAAGwL,UAAY,IACnF,CAIGvE,aACA,OAAOtpB,KAAKotB,OACf,CACG9D,WAAO3Q,GACP3Y,KAAKotB,QAAUzU,EACf3Y,KAAKstB,0BAA0B3T,SAAQkN,GAAYA,EAAS7mB,KAAKotB,UACpE,CAIDvC,aACW,OAAA7qB,KAAKkrB,YAAYL,YAC3B,CAODiD,eAAejH,EAAUnF,GAKrB,OAJK1hB,KAAAstB,0BAA0BrsB,KAAK4lB,GAChCnF,GACK1hB,KAAAutB,+BAA+BtsB,KAAKygB,GAEtC,KACH1hB,KAAKstB,0BAA4BttB,KAAKstB,0BAA0BxG,QAAOe,GAAQA,IAAShB,IACpFnF,IACA1hB,KAAKutB,+BAAiCvtB,KAAKutB,+BAA+BzG,QAAOe,GAAQA,IAASnG,IACrG,CAER,CACD4D,QAAQgE,EAAQpK,GACRmD,IAAAA,EACJ,GAAIriB,KAAK4tB,UACL,MAAM,IAAIvQ,EAId,OAFyB,QAAxBgF,EAAKriB,KAAKqtB,gBAA6B,IAAPhL,GAAyBA,EAAGmE,kBACxDxmB,KAAAqtB,SAAWrtB,KAAK+tB,eAAezE,GAC7BtpB,KAAKqtB,SAAS/H,QAAQtlB,KAAKguB,qBAAqB9O,GAC1D,CAID+G,oBACI,OAAOvK,EAAU1b,UAAM,OAAQ,GAAQ,YACnC,MAAOiuB,EAAsBC,SAAwBnS,QAAQiL,IAAI,CAC7DhnB,KAAKqlB,wBAAwBlB,uBAC7BnkB,KAAKkrB,YAAYH,sBAEjB,IACA,OAAQkD,GACJ,IAAK,OACDjuB,KAAKqtB,eAAiB1I,GAAewJ,YAAYnuB,KAAKwtB,aAAa9N,SACnE,MACJ,IAAK,WACD1f,KAAKqtB,eAAiB5E,GAAiB0F,YAAYnuB,KAAKwtB,aAAa9N,SACrE,MACJ,QACI,IAAIwO,EAIA,OAHAluB,KAAKqtB,eAAiBrtB,KAAK+tB,eAAeG,GAMzD,OACM7L,GAGH,aAFMriB,KAAKqlB,wBAAwBtB,wBACnC/jB,KAAKqtB,SAAW,KAEnB,CAEM,OADPrtB,KAAKqtB,SAASzG,OAAO5mB,KAAKouB,qBAAqBzM,KAAK3hB,OAC7CA,KAAKqtB,SAASpH,mBACjC,GACK,CAODoI,gBAAgBC,GACZ,OAAO5S,EAAU1b,UAAM,OAAQ,GAAQ,YACnCA,KAAKuuB,kBACuB7B,GAAA1sB,KAAKspB,OAAOkF,OAAO7B,SAAU,CACrDK,uBAAwBsB,EAAYG,SAAS5tB,SAE3C,MAAA6tB,WAAEA,GAAeJ,EAAahc,EA/yCvC,SAAOnS,EAAGsM,GACf,IAAIpD,EAAI,CAAA,EACR,IAAA,IAAS9E,KAAKpE,EAAO4c,OAAOjb,UAAU6sB,eAAe3sB,KAAK7B,EAAGoE,IAAMkI,EAAEmiB,QAAQrqB,GAAK,IAC9E8E,EAAE9E,GAAKpE,EAAEoE,IACb,GAAS,MAALpE,GAAqD,mBAAjC4c,OAAO8R,sBAClBtuB,KAAAA,EAAI,EAAJA,IAAOgE,EAAIwY,OAAO8R,sBAAsB1uB,GAAII,EAAIgE,EAAE1D,OAAQN,IAC3DkM,EAAEmiB,QAAQrqB,EAAEhE,IAAM,GAAKwc,OAAOjb,UAAUgtB,qBAAqB9sB,KAAK7B,EAAGoE,EAAEhE,MACvE8I,EAAE9E,EAAEhE,IAAMJ,EAAEoE,EAAEhE,IAF4B,CAI/C8I,OAAAA,CACX,CAqyCqD0lB,CAAOT,EAAa,CAAC,eACxD7sB,EAAO6sB,EAAY7sB,MAAQzB,KAAK6tB,QAAQmB,QACxCC,EAAUX,EAAYW,SAAWjvB,KAAK6tB,QAAQqB,MAC9CpQ,QAAiB9e,KAAKqtB,SAASlH,YAAYnH,EAAsBC,oBAAoBlC,OAAOsJ,OAAOtJ,OAAOsJ,OAAO,GAAI/T,GAAK,CAAE6c,YAAaT,EAAYjtB,OACvJwtB,cACA,OAAAjQ,EAAsBH,QAAQC,GACvBE,EAAsBK,mBAAmBP,GAE7CE,EAAsBM,uBAAuBR,EAChE,GACK,CAID2H,aACI,OAAO/K,EAAU1b,UAAM,OAAQ,GAAQ,YAC/B,IAACA,KAAK4tB,UACN,MAAM,IAAItQ,QAERtd,KAAKqtB,SAAS5G,aACpBzmB,KAAKovB,sBACjB,GACK,CAKDC,kBACQhN,IAAAA,EACwE,UAA9C,QAAxBA,EAAKriB,KAAKqtB,gBAA6B,IAAPhL,OAAgB,EAASA,EAAGgB,OAGlErjB,KAAKqtB,SAASjL,OACjB,CAIDkN,oBACQjN,IAAAA,EACEA,MAAsE,UAA9C,QAAxBA,EAAKriB,KAAKqtB,gBAA6B,IAAPhL,OAAgB,EAASA,EAAGgB,MACvDtH,QAAQC,UAEZhc,KAAKqtB,SAAS9K,SACxB,CACDoL,qCACI,MAAM4B,EAnjBd,WACQ,GAAoB,oBAAbA,SAGJ,OAAAA,QACX,CA8iByBC,GACjB,GAAKD,EAGD,IACAA,EAASE,iBAAiB,oBAAoB,KACtCF,EAASG,OACT1vB,KAAKqvB,kBAGLrvB,KAAKsvB,mBACR,GAER,OACM7iB,GACKqW,QAAArE,MAAM,sDAAuDhS,EACxE,CACJ,CACDshB,eAAezE,GACP,IAAA+D,EAQG,OANHA,GADCxrB,MAAM4jB,QAAQ6D,IAzwChB,gBAywCsDA,EAC1C,IAAIb,GAAiBzoB,KAAKwtB,aAAa9N,QAAS4J,EAAON,aAGvD,IAAIrE,GAAe3kB,KAAKwtB,aAAa9N,QAAS4J,GAE7D+D,EAASzG,OAAO5mB,KAAKouB,qBAAqBzM,KAAK3hB,OACxCqtB,CACV,CACDe,qBAAqB3hB,GACjB,OAAQA,EAAE8a,OACN,IAAK,UACIvnB,KAAA2vB,kBAAkBljB,EAAEib,SACzB,MACJ,IAAK,gBACI1nB,KAAA4vB,qBAAqBnjB,EAAEib,SAC5B,MACJ,IAAK,aACD1nB,KAAKovB,uBAEhB,CACDO,kBAAkB/L,GACd,MAAMiM,EAAiBjM,EAAa+D,MAAMC,MAAaC,GAAc,aAAdA,EAAKhL,OACtDiT,EAAelM,EAAa+D,MAAMC,MAAaC,GAAc,cAAdA,EAAKhL,OAC1D,IAAKgT,EACK,MAAA,IAAIpT,EAAgB,0CAE9B,MAAM6M,EAAS,CACXkF,OAAQ5K,EAAa4K,OACrBnB,SAAUrtB,KAAKqtB,SAAShK,KACxBwK,QAAS,CACLmB,QAASa,EAAeb,QACxBE,MAAOW,EAAeZ,QACtBc,gBAAiBF,EAAeE,gBAChC5Z,UAAW0Z,EAAe1Z,YAG9B2Z,IACAxG,EAAO0G,aAAe,CAClBC,SAAUH,IAGlB9vB,KAAKspB,OAASA,CACjB,CACDsG,qBAAqBzF,GACX,MAAA1L,EAAQF,EAAoBC,WAAW2L,GAGzC,GAFJnqB,KAAKutB,+BAA+B5T,SAAyB+H,GAAAA,EAAcjD,KAC3EqE,QAAQC,MAAMtE,GACVA,aAAiBrB,GAAyBqB,aAAiBtB,EAErD,MADN2F,QAAQrE,MAAMA,GACRA,CAEb,CACD2Q,uBACIpvB,KAAKspB,OAAS,IACjB,CACDiF,kBACQ,IAACvuB,KAAK4tB,UACN,MAAM,IAAItQ,CAEjB,CACD0Q,qBAAqB9O,GACjB,MAAMyI,EAAQ,CACV,CACI9K,KAAM,aASP,OANHqC,aAAyC,EAASA,EAAQ+Q,WAC1DtI,EAAM1mB,KAAK,CACP4b,KAAM,YACN6K,QAASxI,EAAQ+Q,WAGlB,CACHxC,YAAaztB,KAAKwtB,aAAaC,YAC/B9F,QAEP,EAEMwF,GAAAjC,YAAc,IAAIR,GAK7ByC,GAAWtB,iBAAoBqE,GAAgBzH,GAAiBoD,iBAAiBqE,GAKjF/C,GAAWrB,sBAAyBoE,GAAgBzH,GAAiBqD,sBAAsBoE,GAE3F,MAAMC,GAAgB,GAChBC,GAAc,IAMX,SAAAC,GAAsBC,EAAYC,GAAW,GAClD,MAAMC,GAAEA,EAAAC,IAAIA,GAehB,SAAyBH,GACrB,IAAKA,EAAWrJ,SAAS,KACf,MAAA,IAAIpJ,EAAkB,iBAAiByS,gCAE3C,MAAAI,EAAQJ,EAAWK,MAAM,KAC3B,GAAiB,IAAjBD,EAAM7vB,OACA,MAAA,IAAIgd,EAAkB,iBAAiByS,0CAE3C,MAAAE,EAAKzW,SAAS2W,EAAM,IACtB,GAAO,IAAPF,IAAuB,IAAXA,EACZ,MAAM,IAAI3S,EAAkB,iBAAiByS,iCAA0CE,eAE3F,MAAMC,EAAMC,EAAM,GAClB,GAA+D,MAA1DD,aAAiC,EAASA,EAAI5vB,QACzC,MAAA,IAAIgd,EAAkB,iBAAiByS,2CAAoDG,aAAiC,EAASA,EAAI5vB,oBAE5I,MAAA,CACH2vB,KACAC,IAAKG,GAAWH,GAExB,CAnCwBI,CAAgBP,GACpC,IAAIQ,EAAMX,GACNI,IACOO,GAAAV,IAEL,MAAAW,EAAO,IAAIC,UAAU,IAC3BD,EAAK,GAAKD,EACVC,EAAK,GAAKP,EACLO,EAAAhW,IAAI0V,EAAK,GACR,MAAAQ,EAAsB,IAAIrwB,WAAW,IAI3C,OAHAqwB,EAAoBlW,IAAIgW,GACxBE,EAAoBlW,IAyBxB,SAAeiI,GACX,MAAMkO,EAAO,KACb,IAAIC,EAAM,EACV,MAAM3W,EAAU,IAAI5Z,WAAWoiB,EAAKniB,OAAS,GAC7C2Z,EAAQO,IAAIiI,GACZ,IAAA,IAASpJ,KAAQY,EAAS,CACtB,IAAIrL,EAAO,IACX,KAAOA,EAAO,GACFgiB,IAAA,EACJvX,EAAOzK,IACAgiB,GAAA,GAEFhiB,IAAA,EACLgiB,EAAM,QACCA,GAAA,MACAA,GAAAD,EAGlB,CACM,OAAA,IAAItwB,WAAW,CAACqI,KAAKC,MAAMioB,EAAM,KAAMA,EAAM,KACxD,CA7C4BC,CAAML,GAAO,IACjBtY,EAAOC,OAAOuY,GACbI,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAC5D,CA2CA,MAAMC,GAAY,CAAA,EAClB,IAAA,IAASC,GAAM,EAAGA,IAAO,IAAMA,KAAO,CAC9BpxB,IAAAA,EAAIoxB,GAAI5vB,SAAS,IACjBxB,EAAEU,OAAS,IACXV,EAAI,IAAMA,GAEdmxB,GAAUnxB,GAAKoxB,EACnB,CACA,SAASX,GAAWH,GAEhB,MAAMe,GADNf,EAAMA,EAAIgB,eACU5wB,OAChB,GAAA2wB,EAAU,GAAM,EACV,MAAA,IAAI1T,EAAc,gDAAkD2S,GAE9E,MAAM5vB,EAAS2wB,EAAU,EACnB1X,EAAS,IAAIlZ,WAAWC,GAC9B,IAAA,IAASN,EAAI,EAAGA,EAAIM,EAAQN,IAAK,CAC7B,MAAMmxB,EAAc,EAAJnxB,EACVoxB,EAAelB,EAAImB,UAAUF,EAASA,EAAU,GACtD,IAAKJ,GAAU3C,eAAegD,GACpB,MAAA,IAAI7T,EAAc,0BAA4B6T,GAExD7X,EAAOvZ,GAAK+wB,GAAUK,EACzB,CACM,OAAA7X,CACX,CCr8CA,MAAM+X,GAAe,CAAA,EAYrB,MACMC,GAASC,OAAO,eAChBC,GAASD,OAAO,eAEhBE,GAAgB,CACpBC,OALc,CAACppB,EAAGnI,IAAMmI,IAAMnI,GAQhC,IAAIwxB,GAAaC,GACjB,MAAMC,GAAQ,EACRC,GAAU,EACVC,GAAU,CACdC,MAAO,KACPC,SAAU,KACVC,QAAS,KACTC,MAAO,MAEHC,GAAU,CAAA,EAChB,IAAIC,GAAQ,KACZ,IA+XIC,GA/XAC,GAAa,KAGbC,GAAW,KACXC,GAAU,KACVC,GAAU,KACVC,GAAY,EAEP,SAAAC,GAAWzb,EAAI0b,GAChB,MAAA3S,EAAWsS,GACfL,EAAQE,GACRS,EAAwB,IAAd3b,EAAG9W,OACbf,EAAOwzB,EAAUf,GAAU,CACzBC,MAAO,KACPC,SAAU,KACVC,QAAS,KACTC,WAAyB,IAAlBU,EAA8BV,EAAQU,GAE/CE,EAAWD,EAAU3b,EAAK,IAAMA,GAAG,IAAM6b,IAAQ,IAAMC,GAAU3zB,OAC3D+yB,GAAA/yB,EACGkzB,GAAA,KACP,IACK,OAAAU,GAAWH,GAAU,EAChC,CAAY,QACGP,GAAAtS,EACHmS,GAAAF,CACT,CACH,CACS,SAAAgB,GAAahb,EAAO+D,GAE3B,MAAMvc,EAAI,CACRwY,QACAib,UAAW,KACXC,cAAe,KACfC,YALFpX,EAAUA,EAAUK,OAAOsJ,OAAO,CAAE,EAAE4L,GAAevV,GAAWuV,IAK1CC,aAAU,GAQhC,MAAO,CAAC6B,GAAWpS,KAAKxhB,GANTwY,IACQ,mBAAVA,IACuFA,EAAQA,EAAMxY,EAAEwY,QAE3Gqb,GAAY7zB,EAAGwY,IAG1B,CACS,SAAAsb,GAAetc,EAAIgB,EAAO+D,GAEuCwX,GAD9DC,GAAkBxc,EAAIgB,GAAO,EAAM0Z,IAE/C,CACS,SAAA+B,GAAmBzc,EAAIgB,EAAO+D,GAEmCwX,GAD9DC,GAAkBxc,EAAIgB,GAAO,EAAO0Z,IAEhD,CACS,SAAAgC,GAAa1c,EAAIgB,EAAO+D,GAClByV,GAAAmC,GACR,MAACjwB,EAAI8vB,GAAkBxc,EAAIgB,GAAO,EAAO0Z,IAG9ChuB,EAAEkwB,MAAO,EACTrB,GAAUA,GAAQjyB,KAAKoD,GAAK6vB,GAAkB7vB,EAChD,CAeS,SAAAmwB,GAAW7c,EAAIgB,EAAO+D,GAC7BA,EAAUA,EAAUK,OAAOsJ,OAAO,CAAE,EAAE4L,GAAevV,GAAWuV,GAChE,MAAM5tB,EAAI8vB,GAAkBxc,EAAIgB,GAAO,EAAM,GAQtC,OAPPtU,EAAEuvB,UAAY,KACdvvB,EAAEwvB,cAAgB,KAClBxvB,EAAEyvB,WAAapX,EAAQwV,aAAU,EAI1BgC,GAAkB7vB,GAClB0vB,GAAWpS,KAAKtd,EACzB,CACS,SAAAowB,GAAeC,EAASC,EAAUC,GACrC,IAAAjP,EACAkP,EACAnY,EACqB,IAArBjI,UAAU5T,QAAoC,iBAAb8zB,GAA8C,IAArBlgB,UAAU5T,QAC7D8kB,GAAA,EACCkP,EAAAH,EACVhY,EAAUiY,GAAY,KAEbhP,EAAA+O,EACCG,EAAAF,EACVjY,EAAUkY,GAAY,IAErB,IAACE,EAAK,KACPC,EAAQnC,GACRvO,EAAK,KAEL2Q,GAAY,EACZC,EAAY,iBAAkBvY,EAC9BwY,EAA4B,mBAAXvP,GAAyB6O,GAAW7O,GACjD,MAAAwP,EAAe,IAAAlJ,KAClBtT,EAAOyc,IAAa1Y,EAAQgD,SAAWiU,IAAcjX,EAAQ2Y,eAC7D5W,EAAO6W,GAAY3B,QAAa,IAChC4B,EAAOC,GAAW7B,QAAa,EAAW,CACzCzB,QAAQ,KAETuD,EAAOC,GAAY/B,GAAasB,EAAW,QAAU,cACxD,GAAIpD,GAAaa,QAAS,CAEpB,IAAA1pB,EADJqb,EAAK,GAAGwN,GAAaa,QAAQrO,KAAKwN,GAAaa,QAAQiD,UAE3B,YAAxBjZ,EAAQkZ,YAA2Bb,EAAQrY,EAAQ2Y,aAAsBxD,GAAagE,OAAS7sB,EAAI6oB,GAAagE,KAAKxR,MAAM0Q,EAAQ/rB,EAAE,GAC1I,CACD,SAAS8sB,EAAQvxB,EAAGyE,EAAGyV,EAAOlX,GAiBrB,OAhBHutB,IAAOvwB,IACJuwB,EAAA,KACMG,GAAA,EACN1wB,IAAMwwB,GAAS/rB,IAAM+rB,IAAUrY,EAAQqZ,YAA2BC,gBAAA,IAAMtZ,EAAQqZ,WAAWxuB,EAAK,CACnGoR,MAAO3P,MAED+rB,EAAAnC,GAYH,SAAa5pB,EAAGitB,GACvBvC,IAAW,UACG,IAARuC,GAAmBb,GAAS,IAAMpsB,IAC7B0sB,OAAQ,IAARO,EAAoB,UAAY,SACzCX,EAASW,GACE5xB,IAAAA,MAAAA,KAAK8wB,EAASe,OAAQ7xB,EAAE8xB,YACnChB,EAASiB,OAAK,IACb,EACJ,CAZUC,CAAartB,EAAGyV,IAElBzV,CACR,CAUD,SAASstB,IACP,MAAMjyB,EAAIyuB,GACR9pB,EAAI2P,IACJsd,EAAMxX,IACJ,QAAQ,IAARwX,IAAsBnB,EAAU,MAAAmB,EAY7B,OAXHjD,KAAaA,GAASuB,MAAQlwB,GAChC4vB,IAAe,SAETa,IACEzwB,EAAE4wB,UAAuFE,EAASoB,IAAIlyB,KACxGA,EAAEmyB,YACFrB,EAAShjB,IAAI9N,IAEhB,IAGE2E,CACR,CACQ,SAAA6sB,EAAKY,GAAa,GACzB,IAAmB,IAAfA,GAAwBzB,EAAW,OAC3BA,GAAA,EACN0B,MAAAA,EAASxB,EAAUA,IAAYvP,EAEjC+Q,GAAU,MAAVA,IAA6B,IAAXA,EAEpB,YADQZ,EAAAhB,EAAItB,GAAQ7a,IAItB,MAAMpU,EAAIwwB,IAAUnC,GAAUmC,EAAQvB,IAAQ,IAAMqB,EAAQ6B,EAAQ,CAClE/d,MAAOA,IACP8d,iBAEF,MAAiB,iBAANlyB,GAAoBA,GAAK,SAAUA,GAIzCA,EAAAA,EACOywB,GAAA,EACGgB,gBAAA,IAAMhB,GAAY,IACjCtB,IAAW,KACAgC,EAAAT,EAAW,aAAe,kBAElC,GACI1wB,EAAEgY,MAAKvT,GAAK8sB,EAAQvxB,EAAGyE,OAAG,EAAW0tB,KAASjqB,GAAKqpB,EAAQvxB,OAAG,EAAWoyB,GAAUlqB,GAAIiqB,OAVpFZ,EAAAhB,EAAIvwB,OAAG,EAAWmyB,GACnBnyB,EAUV,CAwBD,OAvBAwY,OAAO6Z,iBAAiBN,EAAM,CAC5Bb,MAAO,CACLrO,IAAK,IAAMqO,KAEbhX,MAAO,CACL2I,IAAK,IAAM3I,KAEboY,QAAS,CACPzP,MACE,MAAMjnB,EAAIs1B,IACHt1B,MAAM,YAANA,GAAyB,eAANA,CAC3B,GAEH22B,OAAQ,CACN1P,MACE,IAAK6N,EAAU,OAAOqB,IACtB,MAAML,EAAMxX,IACZ,GAAIwX,IAAQnB,EAAU,MAAAmB,EACtB,OAAOtd,GACR,KAGDuc,EAAwBjB,IAAA,IAAM4B,GAAK,KAAaA,GAAK,GAClD,CAACS,EAAM,CACZS,QAASlB,EACTmB,OAAQ5B,GAEZ,CAyCA,SAAS6B,GAAMtf,GACN,OAAA+b,GAAW/b,GAAI,EACxB,CACA,SAAS6b,GAAQ7b,GACf,GAAiB,OAAbqb,GAAmB,OAAOrb,IAC9B,MAAM+I,EAAWsS,GACNA,GAAA,KACP,IACF,OAAOrb,GACX,CAAY,QACGqb,GAAAtS,CACZ,CACH,CAuBA,SAASwW,GAAUvf,GAEV,OADO,OAAVkb,KAA6C,OAAnBA,GAAMJ,SAAyBI,GAAAJ,SAAW,CAAC9a,GAAekb,GAAAJ,SAASxxB,KAAK0W,IAC/FA,CACT,CAOA,SAASwf,KACA,OAAAnE,EACT,CAwDS,SAAAoE,GAAcC,EAAc3a,GAC7B,MAAA2H,EAAK0N,OAAO,WACX,MAAA,CACL1N,KACAiT,SAAUvJ,GAAe1J,GACzBgT,eAEJ,CACA,SAASE,GAAW7E,GACd,IAAA8E,EACI,YAAqC,KAArCA,EAAMd,GAAO7D,GAAOH,EAAQrO,KAAqBmT,EAAM9E,EAAQ2E,YACzE,CACA,SAASI,GAAS9f,GACV8f,MAAAA,EAAWjD,GAAW7c,GACtB+f,EAAOlD,IAAW,IAAMmD,GAAgBF,OAKvC,OAJPC,EAAKE,QAAU,KACb,MAAMvzB,EAAIqzB,IACH,OAAA71B,MAAM4jB,QAAQphB,GAAKA,EAAS,MAALA,EAAY,CAACA,GAAK,IAE3CqzB,CACT,CAuBA,SAAS3D,KACP,MAAM8D,EAAoB9E,GAC1B,GAAI/yB,KAAK83B,UAAkC93B,KAAKy1B,OAASoC,GAC7B,GAAA73B,KAAKy1B,QAAUpD,IAASwF,EAA4C3D,GAAkBl0B,UAAW,CACzH,MAAM+3B,EAAU9E,GACNA,GAAA,KACVS,IAAW,IAAMsE,GAAah4B,QAAO,GAC3BizB,GAAA8E,CACX,CAEH,GAAI/E,GAAU,CACZ,MAAMiF,EAAQj4B,KAAK4zB,UAAY5zB,KAAK4zB,UAAU/yB,OAAS,EAClDmyB,GAAS8E,SAIH9E,GAAA8E,QAAQ72B,KAAKjB,MACbgzB,GAAAkF,YAAYj3B,KAAKg3B,KAJjBjF,GAAA8E,QAAU,CAAC93B,MACXgzB,GAAAkF,YAAc,CAACD,IAKrBj4B,KAAK4zB,WAIH5zB,KAAA4zB,UAAU3yB,KAAK+xB,IACpBhzB,KAAK6zB,cAAc5yB,KAAK+xB,GAAS8E,QAAQj3B,OAAS,KAJ7Cb,KAAA4zB,UAAY,CAACZ,IAClBhzB,KAAK6zB,cAAgB,CAACb,GAAS8E,QAAQj3B,OAAS,GAKnD,CAED,OAAOb,KAAK2Y,KACd,CACS,SAAAqb,GAAYmE,EAAMxf,EAAOyf,GAChC,IAAIC,EAA2FF,EAAKxf,MA8B7F,OA7BFwf,EAAKrE,YAAeqE,EAAKrE,WAAWuE,EAAS1f,KAQzCwf,EAAKxf,MAAQA,EAChBwf,EAAKvE,WAAauE,EAAKvE,UAAU/yB,QACnC6yB,IAAW,KACT,IAAA,IAASnzB,EAAI,EAAGA,EAAI43B,EAAKvE,UAAU/yB,OAAQN,GAAK,EAAG,CAC3C+D,MAAAA,EAAI6zB,EAAKvE,UAAUrzB,GACnB+3B,EAAoBvF,IAAcA,GAAWwF,QAC/CD,GAAqBvF,GAAWyF,SAASjC,IAAIjyB,IAC7Cg0B,IAAsBh0B,EAAEm0B,SAAWH,IAAsBh0B,EAAEmxB,SACzDnxB,EAAEo0B,KAAMzF,GAAQhyB,KAAKqD,GAAQ4uB,GAAQjyB,KAAKqD,GAC1CA,EAAEsvB,WAAW+E,GAAer0B,IAE9Bg0B,IAAyCh0B,EAAEmxB,MAAQpD,GACxD,CACG,GAAAY,GAAQpyB,OAAS,IAGnB,MAFAoyB,GAAU,GAEJ,IAAItwB,KACX,IACA,IAGAgW,CACT,CACA,SAASub,GAAkBiE,GACzB,IAAKA,EAAKxgB,GAAI,OACd8b,GAAU0E,GACV,MAAMxF,EAAQE,GACZnS,EAAWsS,GACX4F,EAAOzF,GACTH,GAAWH,GAAQsF,EAeZ,SAAeA,EAAMxf,EAAOigB,GAC/B,IAAAC,EACA,IACUA,EAAAV,EAAKxgB,GAAGgB,EACrB,OAAQsd,GACHkC,EAAKO,OAMLP,EAAK1C,MAAQpD,GACb8F,EAAK3F,OAAS2F,EAAK3F,MAAM7Y,QAAQ8Z,IACjC0E,EAAK3F,MAAQ,MAGjBsG,GAAY7C,EACb,GACIkC,EAAKY,WAAaZ,EAAKY,WAAaH,KACjB,MAAlBT,EAAKY,WAAqB,cAAeZ,EAC3CnE,GAAYmE,EAAMU,GAIbV,EAAKxf,MAAQkgB,EACpBV,EAAKY,UAAYH,EAErB,CAzCiBI,CAAAb,EAAuFA,EAAKxf,MAAOigB,GAWvG5F,GAAAtS,EACHmS,GAAAF,CACV,CA6BA,SAASwB,GAAkBxc,EAAIpV,EAAMm2B,EAAMjD,EAAQpD,GAAO3V,GACxD,MAAMrY,EAAI,CACRsT,KACA8d,QACAsD,UAAW,KACXvG,MAAO,KACPsF,QAAS,KACTI,YAAa,KACbzF,SAAU,KACV9Z,MAAOpW,EACPowB,MAAOE,GACPH,QAAS,KACTgG,QA0BKr0B,OApBO,OAAVwuB,IAA0BA,KAAUN,KAI/BM,GAAML,MAAoCK,GAAAL,MAAMvxB,KAAKoD,GAAlCwuB,GAAAL,MAAQ,CAACnuB,IAgB9BA,CACT,CACA,SAAS40B,GAAOd,GACd,MAAMN,EAAoB9E,GACA,GAAe,IAAfoF,EAAK1C,OAAeoC,EAAwC,OAC5D,GAAAM,EAAK1C,QAAUnD,IAAWuF,EAA8C,OAAOG,GAAaG,GACtH,GAAIA,EAAKe,UAAY1F,GAAQ2E,EAAKe,SAASC,YAAa,OAAOhB,EAAKe,SAASE,QAAQn4B,KAAKk3B,GACpF,MAAAkB,EAAY,CAAClB,GACX,MAAAA,EAAOA,EAAKxF,UAAYwF,EAAKY,WAAaZ,EAAKY,UAAY5F,MAEvCgF,EAAK1C,OAASoC,IAAkCwB,EAAUp4B,KAAKk3B,GAE3F,IAAA,IAAS53B,EAAI84B,EAAUx4B,OAAS,EAAGN,GAAK,EAAGA,IASf,IAR1B43B,EAAOkB,EAAU94B,IAQck1B,QAAUpD,IAASwF,EAChD3D,GAAkBiE,QACa,GAAAA,EAAK1C,QAAUnD,IAAWuF,EAA8C,CACvG,MAAME,EAAU9E,GACNA,GAAA,KACVS,IAAW,IAAMsE,GAAaG,EAAMkB,EAAU,MAAK,GACzCpG,GAAA8E,CACX,CAEL,CACS,SAAArE,GAAW/b,EAAIpV,GAClB,GAAA0wB,GAAS,OAAOtb,IACpB,IAAI2hB,GAAO,EACN/2B,IAAM0wB,GAAU,IACjBC,GAAgBoG,GAAA,EAAUpG,GAAU,GACxCC,KACI,IACF,MAAMoG,EAAM5hB,IAEL,OAOX,SAAyB2hB,GACnBrG,KAC6Eb,GAASa,IAC9EA,GAAA,MAER,GAAAqG,EAAM,OAmCV,MAAM7sB,EAAIymB,GACAA,GAAA,KACNzmB,EAAE5L,QAAQ6yB,IAAW,IAAMvB,GAAW1lB,KAAI,EAEhD,CApDI+sB,CAAgBF,GACTC,CACR,OAAQtD,GACFqD,IAAgBpG,GAAA,MACXD,GAAA,KACV6F,GAAY7C,EACb,CACH,CA8CA,SAAS7D,GAASqH,GAChB,IAAA,IAASl5B,EAAI,EAAGA,EAAIk5B,EAAM54B,OAAQN,IAAK04B,GAAOQ,EAAMl5B,GACtD,CAkBA,SAAS+zB,GAAemF,GACtB,IAAIl5B,EACFm5B,EAAa,EACf,IAAKn5B,EAAI,EAAGA,EAAIk5B,EAAM54B,OAAQN,IAAK,CACjC,MAAMkM,EAAIgtB,EAAMl5B,GACXkM,EAAE8nB,KAAqBkF,EAAMC,KAAgBjtB,EAArCwsB,GAAOxsB,EACrB,CA/rBH,IAA2BimB,EAisBpBnyB,IADDsxB,GAAaa,UA/rBjBb,GAAaa,QAAUA,GAgsBlBnyB,EAAI,EAAGA,EAAIm5B,EAAYn5B,IAAK04B,GAAOQ,EAAMl5B,GAChD,CACS,SAAAy3B,GAAaG,EAAMwB,GAC1B,MAAM9B,EAAoB9E,GACkBoF,EAAK1C,MAAQ,EACzD,IAAA,IAASl1B,EAAI,EAAGA,EAAI43B,EAAKL,QAAQj3B,OAAQN,GAAK,EAAG,CACzC,MAAAolB,EAASwS,EAAKL,QAAQv3B,GACxBolB,EAAOmS,UACiBnS,EAAO8P,QAAUpD,IAASwF,EAC9ClS,IAAWgU,GAAQV,GAAOtT,IACCA,EAAO8P,QAAUnD,IAAWuF,IAAgDG,GAAarS,EAAQgU,GAErI,CACH,CACA,SAAShB,GAAeR,GACtB,MAAMN,EAAoB9E,GAC1B,IAAA,IAASxyB,EAAI,EAAGA,EAAI43B,EAAKvE,UAAU/yB,OAAQN,GAAK,EAAG,CAC3C+D,MAAAA,EAAI6zB,EAAKvE,UAAUrzB,GACE+D,EAAEmxB,QAASoC,IACWvzB,EAAEmxB,MAAQnD,GACrDhuB,EAAEo0B,KAAMzF,GAAQhyB,KAAKqD,GAAQ4uB,GAAQjyB,KAAKqD,GAC9CA,EAAEsvB,WAAa+E,GAAer0B,GAEjC,CACH,CACA,SAASmvB,GAAU0E,GACb53B,IAAAA,EACJ,GAAI43B,EAAKL,QACA,KAAAK,EAAKL,QAAQj3B,QAAQ,CACpB,MAAA8kB,EAASwS,EAAKL,QAAQ8B,MAC1Bve,EAAQ8c,EAAKD,YAAY0B,MACzBC,EAAMlU,EAAOiO,UACX,GAAAiG,GAAOA,EAAIh5B,OAAQ,CACrB,MAAMiD,EAAI+1B,EAAID,MACZz5B,EAAIwlB,EAAOkO,cAAc+F,MACvBve,EAAQwe,EAAIh5B,SACdiD,EAAEo0B,YAAY/3B,GAAKkb,EACnBwe,EAAIxe,GAASvX,EACb6hB,EAAOkO,cAAcxY,GAASlb,EAEjC,CACF,CAQI,GAAIg4B,EAAK3F,MAAO,CACrB,IAAKjyB,EAAI,EAAGA,EAAI43B,EAAK3F,MAAM3xB,OAAQN,IAAekzB,GAAA0E,EAAK3F,MAAMjyB,IAC7D43B,EAAK3F,MAAQ,IACd,CACD,GAAI2F,EAAK1F,SAAU,CACjB,IAAKlyB,EAAI,EAAGA,EAAI43B,EAAK1F,SAAS5xB,OAAQN,IAAK43B,EAAK1F,SAASlyB,KACzD43B,EAAK1F,SAAW,IACjB,CAC0D0F,EAAK1C,MAAQ,EACxE0C,EAAKzF,QAAU,IACjB,CAUA,SAASiE,GAAUV,GACb,OAAAA,aAAetzB,OAAwB,iBAARszB,EAAyBA,EACrD,IAAItzB,MAAM,gBACnB,CAIA,SAASm2B,GAAY7C,GAGH,MAFhBA,EAAMU,GAAUV,EASlB,CACS,SAAAS,GAAO/D,EAAOprB,GACrB,OAAOorB,EAAQA,EAAMD,cAAkC,IAAvBC,EAAMD,QAAQnrB,GAAqBorB,EAAMD,QAAQnrB,GAAOmvB,GAAO/D,EAAMA,MAAOprB,QAAO,CACrH,CACA,SAASowB,GAAgBF,GACvB,GAAwB,mBAAbA,IAA4BA,EAAS52B,OAAe,OAAA82B,GAAgBF,KAC3E,GAAA51B,MAAM4jB,QAAQgS,GAAW,CAC3B,MAAMqC,EAAU,GAChB,IAAA,IAASv5B,EAAI,EAAGA,EAAIk3B,EAAS52B,OAAQN,IAAK,CAClC,MAAAuZ,EAAS6d,GAAgBF,EAASl3B,IAClCsB,MAAA4jB,QAAQ3L,GAAUggB,EAAQ74B,KAAKub,MAAMsd,EAAShgB,GAAUggB,EAAQ74B,KAAK6Y,EAC5E,CACM,OAAAggB,CACR,CACMrC,OAAAA,CACT,CACS,SAAA1J,GAAe1J,EAAI3H,GACnB,OAAA,SAAkBqd,GACnB,IAAAR,EAOG,OANYnF,IAAA,IAAMmF,EAAM/F,IAAQ,KACrCX,GAAMH,QAAU,CACdrO,CAACA,GAAK0V,EAAMphB,OAEP8e,IAAS,IAAMsC,EAAMtC,oBAC1B,GACG8B,CACX,CACA,CA+CM,MAAAS,GAAWjI,OAAO,YACxB,SAASkI,GAAQz5B,GACf,IAAA,IAASD,EAAI,EAAGA,EAAIC,EAAEK,OAAQN,IAAKC,EAAED,IACvC,CAyKS,SAAA25B,GAAgBC,EAAMJ,GAU7B,OAAOvG,IAAQ,IAAM2G,EAAKJ,GAAS,CAAA,IACrC,CACA,SAASK,KACA,OAAA,CACT,CACA,MAAMC,GAAY,CAChBjT,IAAA,CAAI+B,EAAGmR,EAAUvY,IACXuY,IAAaxI,GAAe/P,EACzBoH,EAAE/B,IAAIkT,GAEf/D,IAAA,CAAIpN,EAAGmR,IACDA,IAAaxI,IACV3I,EAAEoN,IAAI+D,GAEfvf,IAAKqf,GACLG,eAAgBH,GAChBI,yBAAA,CAAyBrR,EAAGmR,KACnB,CACLG,cAAc,EACdC,YAAY,EACZtT,IAAM,IACG+B,EAAE/B,IAAIkT,GAEfvf,IAAKqf,GACLG,eAAgBH,KAGpBO,QAAQxR,GACCA,EAAE+M,QAGb,SAAS0E,GAAcz6B,GACd,OAAEA,EAAiB,mBAANA,EAAmBA,IAAMA,GAAUA,EAAL,CAAE,CACtD,CACA,SAAS06B,MAAc/C,GACrB,IAAIgD,GAAQ,EACZ,IAAA,IAASv6B,EAAI,EAAGA,EAAIu3B,EAAQj3B,OAAQN,IAAK,CACvC,MAAMJ,EAAI23B,EAAQv3B,GAClBu6B,EAAQA,KAAW36B,GAAK2xB,MAAU3xB,EAC1BI,EAAAA,GAAkB,mBAANJ,GAAoB26B,GAAQ,EAAMtG,GAAWr0B,IAAMA,CACxE,CACD,GAAI26B,EACF,OAAO,IAAIC,MAAM,CACf3T,IAAIkT,GACF,IAAA,IAAS/5B,EAAIu3B,EAAQj3B,OAAS,EAAGN,GAAK,EAAGA,IAAK,CAC5C,MAAMyI,EAAI4xB,GAAc9C,EAAQv3B,IAAI+5B,GACpC,QAAU,IAANtxB,EAAwB,OAAAA,CAC7B,CACF,EACDutB,IAAI+D,GACF,IAAA,IAAS/5B,EAAIu3B,EAAQj3B,OAAS,EAAGN,GAAK,EAAGA,IACnC,GAAA+5B,KAAYM,GAAc9C,EAAQv3B,IAAY,OAAA,EAE7C,OAAA,CACR,EACD21B,OACE,MAAMA,EAAO,GACb,IAAA,IAAS31B,EAAI,EAAGA,EAAIu3B,EAAQj3B,OAAQN,IAAU21B,EAAAj1B,QAAQ8b,OAAOmZ,KAAK0E,GAAc9C,EAAQv3B,MACxF,MAAO,IAAI,IAAI0rB,IAAIiK,GACpB,GACAmE,IAEL,MAAMW,EAAS,CAAA,EACf,IAAA,IAASz6B,EAAIu3B,EAAQj3B,OAAS,EAAGN,GAAK,EAAGA,IACvC,GAAIu3B,EAAQv3B,GAAI,CACd,MAAM06B,EAAcle,OAAOme,0BAA0BpD,EAAQv3B,IAC7D,IAAA,MAAWgH,KAAO0zB,EACZ1zB,KAAOyzB,GACJje,OAAAoe,eAAeH,EAAQzzB,EAAK,CACjCmzB,YAAY,EACZtT,MACE,IAAA,IAAS7mB,EAAIu3B,EAAQj3B,OAAS,EAAGN,GAAK,EAAGA,IAAK,CAC5C,MAAMyI,GAAK8uB,EAAQv3B,IAAM,CAAA,GAAIgH,GAC7B,QAAU,IAANyB,EAAwB,OAAAA,CAC7B,CACF,GAGN,CAEI,OAAAgyB,CACT,CACS,SAAAI,GAAWrB,KAAU7D,GAC5B,MAAMmF,EAAU,IAAIpP,IAAIiK,EAAKoF,QAC7B,GAAIxJ,MAAUiI,EAAO,CACb,MAAAR,EAAMrD,EAAKxQ,KAASthB,GACjB,IAAI22B,MAAM,CACf3T,IAAIkT,GACKl2B,EAAE6iB,SAASqT,GAAYP,EAAMO,QAAY,EAElD/D,IAAI+D,GACKl2B,EAAE6iB,SAASqT,IAAaA,KAAYP,EAE7C7D,KAAO,IACE9xB,EAAE0iB,QAAmBwT,GAAAA,KAAYP,KAEzCM,MAaE,OAXHd,EAAAt4B,KAAK,IAAI85B,MAAM,CACjB3T,IAAIkT,GACKe,EAAQ9E,IAAI+D,QAAY,EAAYP,EAAMO,GAEnD/D,IAAI+D,IACKe,EAAQ9E,IAAI+D,IAAoBA,KAAYP,EAErD7D,KAAO,IACEnZ,OAAOmZ,KAAK6D,GAAOjT,YAAauU,EAAQ9E,IAAInyB,MAEpDi2B,KACId,CACR,CACK,MAAA0B,EAAcle,OAAOme,0BAA0BnB,GAE9C,OADP7D,EAAKj1B,KAAK8b,OAAOmZ,KAAK+E,GAAanU,QAAY1iB,IAACi3B,EAAQ9E,IAAInyB,MACrD8xB,EAAKxQ,KAASthB,IACnB,MAAMm3B,EAAQ,CAAA,EACd,IAAA,IAASh7B,EAAI,EAAGA,EAAI6D,EAAEvD,OAAQN,IAAK,CACjC,MAAMgH,EAAMnD,EAAE7D,GACRgH,KAAOwyB,GACbhd,OAAOoe,eAAeI,EAAOh0B,EAAK0zB,EAAY1zB,GAAO0zB,EAAY1zB,GAAO,CACtE6f,IAAM,IACG2S,EAAMxyB,GAEfwT,IAAM,KACG,EAET2f,YAAY,GAEf,CACM,OAAAa,CAAA,GAEX,CAsCA,SAASC,GAAIzB,GACL,MAAA0B,EAAW,aAAc1B,GAAS,CACtC0B,SAAU,IAAM1B,EAAM0B,UAEjB,OAAAjH,GA9VT,SAAkBkH,EAAMC,EAAOjf,EAAU,CAAA,GACvC,IAAIiL,EAAQ,GACViU,EAAS,GACTC,EAAY,GACZ55B,EAAM,EACN65B,EAAUH,EAAM96B,OAAS,EAAI,GAAK,KAEpC,OADUq2B,IAAA,IAAM+C,GAAQ4B,KACjB,KACL,IACEt7B,EACAgJ,EAFEwyB,EAAWL,KAAU,GAIzB,OADSK,EAAA/J,IACFwB,IAAQ,KACT,IACFwI,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACA1U,EATE2U,EAAST,EAASl7B,OAUtB,GAAe,IAAX27B,EACU,IAARv6B,IACFg4B,GAAQ4B,GACRA,EAAY,GACZlU,EAAQ,GACRiU,EAAS,GACH35B,EAAA,EACN65B,IAAYA,EAAU,KAEpBpf,EAAQ+e,WACV9T,EAAQ,CAACqS,IACF4B,EAAA,GAAKxI,IAAuBqJ,IACjCZ,EAAU,GAAKY,EACR/f,EAAQ+e,cAEXx5B,EAAA,QAET,GACgB,IAARA,EAAW,CAElB,IADS25B,EAAA,IAAI/5B,MAAM26B,GACdjzB,EAAI,EAAGA,EAAIizB,EAAQjzB,IACtBoe,EAAMpe,GAAKwyB,EAASxyB,GACbqyB,EAAAryB,GAAK6pB,GAAWsJ,GAEnBz6B,EAAAu6B,CACd,KAAa,CAIL,IAHON,EAAA,IAAIr6B,MAAM26B,GACDL,EAAA,IAAIt6B,MAAM26B,GACdV,IAAAM,EAAc,IAAIv6B,MAAM26B,IAC/BH,EAAQ,EAAGC,EAAMrzB,KAAK+O,IAAI/V,EAAKu6B,GAASH,EAAQC,GAAO3U,EAAM0U,KAAWN,EAASM,GAAQA,KAC9F,IAAKC,EAAMr6B,EAAM,EAAGs6B,EAASC,EAAS,EAAGF,GAAOD,GAASE,GAAUF,GAAS1U,EAAM2U,KAASP,EAASQ,GAASD,IAAOC,IAClHL,EAAKK,GAAUX,EAAOU,GACtBH,EAAcI,GAAUV,EAAUS,GACtBR,IAAAM,EAAYG,GAAUT,EAAQQ,IAI5C,IAFAN,MAAiBjX,IACAkX,EAAA,IAAIp6B,MAAM06B,EAAS,GAC/BhzB,EAAIgzB,EAAQhzB,GAAK8yB,EAAO9yB,IAC3Bse,EAAOkU,EAASxyB,GAChBhJ,EAAIy7B,EAAW5U,IAAIS,GACJoU,EAAA1yB,QAAW,IAANhJ,GAAuBA,EAAAA,EAChCy7B,EAAAjhB,IAAI8M,EAAMte,GAEvB,IAAKhJ,EAAI87B,EAAO97B,GAAK+7B,EAAK/7B,IACxBsnB,EAAOF,EAAMpnB,GACTgJ,EAAAyyB,EAAW5U,IAAIS,QACT,IAANte,IAA6B,IAAVA,GACrB2yB,EAAK3yB,GAAKqyB,EAAOr7B,GACjB47B,EAAc5yB,GAAKsyB,EAAUt7B,GACjBu7B,IAAAM,EAAY7yB,GAAKuyB,EAAQv7B,IACrCgJ,EAAI0yB,EAAe1yB,GACRyyB,EAAAjhB,IAAI8M,EAAMte,IAChBsyB,EAAUt7B,KAEnB,IAAKgJ,EAAI8yB,EAAO9yB,EAAIizB,EAAQjzB,IACtBA,KAAK2yB,GACPN,EAAOryB,GAAK2yB,EAAK3yB,GACjBsyB,EAAUtyB,GAAK4yB,EAAc5yB,GACzBuyB,IACFA,EAAQvyB,GAAK6yB,EAAY7yB,GACzBuyB,EAAQvyB,GAAGA,KAEDqyB,EAAAryB,GAAK6pB,GAAWsJ,GAEhCd,EAASA,EAAO75B,MAAM,EAAGE,EAAMu6B,GACvB7U,EAAAoU,EAASh6B,MAAM,EACxB,CACM,OAAA65B,CAAA,IAET,SAASc,EAAOD,GAEd,GADAZ,EAAUtyB,GAAKkzB,EACXX,EAAS,CACX,MAAO37B,EAAG4a,GAAO4Y,GAAapqB,GAEvB,OADPuyB,EAAQvyB,GAAKwR,EACN4gB,EAAMI,EAASxyB,GAAIpJ,EAC3B,CACM,OAAAw7B,EAAMI,EAASxyB,GACvB,EAEL,CAwPoBozB,EAAS,IAAM5C,EAAM6C,MAAM7C,EAAMtC,SAAUgE,QAAY,GAC3E,CAOA,SAASoB,GAAK9C,GACZ,IAAI+C,GAAc,EAClB,MAAMC,EAAQhD,EAAMgD,MACdC,EAAYxI,IAAW,IAAMuF,EAAMkD,WAAM,EAAW,CACxD/K,OAAQ,CAACppB,EAAGnI,IAAMm8B,EAAch0B,IAAMnI,GAAKmI,IAAOnI,IAEpD,OAAO6zB,IAAW,KAChB,MAAMnwB,EAAI24B,IACV,GAAI34B,EAAG,CACL,MAAM64B,EAAQnD,EAAMtC,SACd9f,EAAsB,mBAAVulB,GAAwBA,EAAMr8B,OAAS,EAEzD,OADAi8B,EAAcC,GAASplB,EAChBA,EAAK6b,IAAQ,IAAM0J,EAAM74B,KAAM64B,CACvC,CACD,OAAOnD,EAAM0B,QAAA,QACZ,OAAW,EAChB,CACA,SAAS0B,GAAOpD,GACd,IAAI+C,GAAc,EACdC,GAAQ,EACN,MACAK,EAAa3F,IAAS,IAAMsC,EAAMtC,WACtC4F,EAAiB7I,IAAW,KAC1B,IAAI8I,EAAQF,IACPv7B,MAAM4jB,QAAQ6X,KAAQA,EAAQ,CAACA,IACpC,IAAA,IAAS/8B,EAAI,EAAGA,EAAI+8B,EAAMz8B,OAAQN,IAAK,CAC/B8D,MAAAA,EAAIi5B,EAAM/8B,GAAG08B,KACnB,GAAI54B,EAEF,OADQ04B,IAAEO,EAAM/8B,GAAGw8B,MACZ,CAACx8B,EAAG8D,EAAGi5B,EAAM/8B,GAEvB,CACD,MAAO,EAAG,EAAA,QACT,EAAW,CACZ2xB,OAdW,CAACppB,EAAGnI,IAAMmI,EAAE,KAAOnI,EAAE,KAAOm8B,EAAch0B,EAAE,KAAOnI,EAAE,IAAMmI,EAAE,KAAQnI,EAAE,KAAOmI,EAAE,KAAOnI,EAAE,KAgBxG,OAAO6zB,IAAW,KAChB,MAAOnZ,EAAO4hB,EAAMM,GAAQF,IAC5B,GAAIhiB,EAAQ,EAAG,OAAO0e,EAAM0B,SAC5B,MAAMp3B,EAAIk5B,EAAK9F,SACT9f,EAAkB,mBAANtT,GAAoBA,EAAExD,OAAS,EAEjD,OADAi8B,EAAcC,GAASplB,EAChBA,EAAK6b,IAAQ,IAAMnvB,EAAE44B,KAAS54B,CAAAA,QACpC,OAAW,EAChB,CACA,SAASm5B,GAAMzD,GACN,OAAAA,CACT,CC52CM,MACA0D,GAA0B,IAAIxR,IAAI,CAAC,YAAa,QAAS,WAAY,iBAAkB,QAAS,WAAY,cADhG,kBAAmB,QAAS,YAAa,WAAY,UAAW,WAAY,UAAW,WAAY,iBAAkB,SAAU,gBAAiB,QAAS,OAAQ,WAAY,QAAS,WAAY,aAAc,OAAQ,cAAe,WAAY,WAAY,WAAY,WAAY,aAEnSyR,OAAmCzR,IAAI,CAAC,YAAa,cAAe,YAAa,aACjF0R,GAA8B5gB,OAAAsJ,OAActJ,OAAA6gB,OAAO,MAAO,CAC9DC,UAAW,QACXC,QAAS,QAELC,GAAkChhB,OAAAsJ,OAActJ,OAAA6gB,OAAO,MAAO,CAClEI,MAAO,YACPC,eAAgB,iBAChBC,MAAO,QACPC,SAAU,WACVC,YAAa,cACbC,SAAU,aAENC,GAAmC,IAAArS,IAAI,CAAC,cAAe,QAAS,WAAY,cAAe,UAAW,WAAY,QAAS,UAAW,QAAS,YAAa,YAAa,WAAY,YAAa,UAAW,cAAe,cAAe,aAAc,cAAe,YAAa,WAAY,YAAa,eAC9SsS,OAA+BtS,IAAI,CACzC,WAAY,cAAe,eAAgB,UAAW,eAAgB,gBAAiB,mBAAoB,SAAU,WAAY,gBAAiB,SAAU,OAAQ,OAAQ,UAAW,UAAW,gBAAiB,sBAAuB,cAAe,mBAAoB,oBAAqB,oBAAqB,iBAAkB,UAAW,UAAW,UAAW,UAAW,UAAW,iBAAkB,UAAW,UAAW,cAAe,eAAgB,WAAY,eAAgB,qBAAsB,cAAe,SAAU,eAAgB,SAAU,OAAQ,YAAa,mBAAoB,iBAAkB,gBAAiB,gBAAiB,gBAAiB,IAAK,QAAS,WAAY,QAAS,QAAS,OAAQ,iBAAkB,SAAU,OAAQ,WAAY,gBAAiB,QAAS,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OACp1B,MAAO,OACP,MAAO,SAAU,SAAU,OAAQ,WACnC,OAAQ,QAAS,MAAO,OAAQ,UAC1BuS,GAAe,CACnBC,MAAO,+BACPC,IAAK,wCA6DP,MAAMC,GAAW,gBAYRC,SAAAA,GAASC,EAAMC,EAAOC,GACvB11B,MAAAA,EAAIkmB,SAASyP,cAAc,YACjC31B,EAAE41B,UAAYJ,EACV,IAAA1G,EAAO9uB,EAAE61B,QAAQC,WAEd,OADHJ,IAAO5G,EAAOA,EAAKgH,YAChBhH,CACT,CAiBS,SAAAiH,GAAajH,EAAMtb,EAAMlE,GACnB,MAATA,EAAewf,EAAKkH,gBAAgBxiB,GAAgBsb,EAAAiH,aAAaviB,EAAMlE,EAC7E,CAIS,SAAAklB,GAAU1F,EAAMxf,GACV,MAATA,EAAewf,EAAKkH,gBAAgB,SAAclH,EAAK0F,UAAYllB,CACzE,CAoDA,SAAS2mB,GAAOnH,EAAM4B,EAAQ,CAAA,EAAIgF,EAAOQ,GACvC,MAAMC,EAAY,CAAA,EAMX,OALFD,GACgBnL,IAAA,IAAMoL,EAAU/H,SAAWgI,GAAiBtH,EAAM4B,EAAMtC,SAAU+H,EAAU/H,YAEjGrD,IAAmB,IAAM2F,EAAM2F,KAAO3F,EAAM2F,IAAIvH,KAC7B/D,IAAA,IAwBZ,SAAO+D,EAAM4B,EAAOgF,EAAOQ,EAAcC,EAAY,CAAA,EAAIG,GAAU,GAC1E5F,IAAUA,EAAQ,CAAA,GAClB,IAAA,MAAW6F,KAAQJ,EACb,KAAEI,KAAQ7F,GAAQ,CACpB,GAAa,aAAT6F,EAAqB,SACfJ,EAAAI,GAAQC,GAAW1H,EAAMyH,EAAM,KAAMJ,EAAUI,GAAOb,EAAOY,EACxE,CAEH,IAAA,MAAWC,KAAQ7F,EAAO,CACxB,GAAa,aAAT6F,EAAqB,CAClBL,GAA+BE,GAAAtH,EAAM4B,EAAMtC,UAChD,QACD,CACD,MAAM9e,EAAQohB,EAAM6F,GACVJ,EAAAI,GAAQC,GAAW1H,EAAMyH,EAAMjnB,EAAO6mB,EAAUI,GAAOb,EAAOY,EACzE,CACH,CAxC2BtZ,CAAO8R,EAAM4B,EAAOgF,GAAO,EAAMS,GAAW,KAC9DA,CACT,CAcS,SAAAM,GAAInoB,EAAIooB,EAASC,GACxB,OAAOxM,IAAQ,IAAM7b,EAAGooB,EAASC,IACnC,CACA,SAASC,GAAOC,EAAQC,EAAUC,EAAQC,GAExC,QADe,IAAXD,GAAyBC,IAASA,EAAU,IACxB,mBAAbF,EAAyB,OAAOV,GAAiBS,EAAQC,EAAUE,EAASD,GACpEhM,IAAAiE,GAAWoH,GAAiBS,EAAQC,IAAY9H,EAAS+H,IAASC,EACvF,CAiCA,SAASC,GAAe1B,GACtB,IAAIzG,EAAM5wB,EACN,OAACsqB,GAAaa,UAAayF,EAAOtG,GAAa0O,SAASnZ,IAAI7f,EAqPlE,WACE,MAAMi5B,EAAU3O,GAAaa,QACtB,MAAA,GAAG8N,EAAQnc,KAAKmc,EAAQ7K,SACjC,CAxPwE8K,MAGlE5O,GAAa6O,WAAwB7O,GAAA6O,UAAUvuB,IAAIgmB,GAC1CtG,GAAA0O,SAASlZ,OAAO9f,GACtB4wB,GAJEyG,EAAS+B,WAAU,EAK9B,CA6CS,SAAAC,GAAezI,EAAM5wB,EAAKoR,GACjC,MAAMkoB,EAAat5B,EAAIu5B,OAAOnQ,MAAM,OACpC,IAAA,IAASpwB,EAAI,EAAGwgC,EAAUF,EAAWhgC,OAAQN,EAAIwgC,EAASxgC,IAAK43B,EAAK6I,UAAUC,OAAOJ,EAAWtgC,GAAIoY,EACtG,CACA,SAASknB,GAAW1H,EAAMyH,EAAMjnB,EAAOuoB,EAAMnC,EAAOY,GAClD,IAAIwB,EAAMC,EAAQC,EAClB,GAAa,UAATzB,EAAyB,OA9ItB,SAAMzH,EAAMxf,EAAOuoB,GAC1B,IAAKvoB,EAAO,OAAOuoB,EAAO9B,GAAajH,EAAM,SAAWxf,EACxD,MAAM2oB,EAAYnJ,EAAKoJ,MACvB,GAAqB,iBAAV5oB,EAAoB,OAAO2oB,EAAUE,QAAU7oB,EAI1D,IAAI3P,EAAG7I,EACP,IAAKA,IAJW,iBAAT+gC,IAAsBI,EAAUE,QAAUN,OAAO,GACxDA,IAASA,EAAO,CAAA,GAChBvoB,IAAUA,EAAQ,CAAA,GAERuoB,EACI,MAAZvoB,EAAMxY,IAAcmhC,EAAUG,eAAethC,UACtC+gC,EAAK/gC,GAEd,IAAKA,KAAKwY,EACR3P,EAAI2P,EAAMxY,GACN6I,IAAMk4B,EAAK/gC,KACHmhC,EAAAI,YAAYvhC,EAAG6I,GACzBk4B,EAAK/gC,GAAK6I,GAGP,OAAAk4B,CACT,CA0H+BK,CAAMpJ,EAAMxf,EAAOuoB,GAChD,GAAa,cAATtB,EAA6B,OAlKnC,SAAmBzH,EAAMxf,EAAOuoB,EAAO,CAAA,GAC/B,MAAAS,EAAY5kB,OAAOmZ,KAAKvd,GAAS,CAAA,GACrCipB,EAAW7kB,OAAOmZ,KAAKgL,GACzB,IAAI3gC,EAAG0B,EACP,IAAK1B,EAAI,EAAG0B,EAAM2/B,EAAS/gC,OAAQN,EAAI0B,EAAK1B,IAAK,CAC/C,MAAMgH,EAAMq6B,EAASrhC,GAChBgH,GAAe,cAARA,IAAuBoR,EAAMpR,KAC1Bq5B,GAAAzI,EAAM5wB,GAAK,UACnB25B,EAAK35B,GACb,CACD,IAAKhH,EAAI,EAAG0B,EAAM0/B,EAAU9gC,OAAQN,EAAI0B,EAAK1B,IAAK,CAChD,MAAMgH,EAAMo6B,EAAUphC,GACpBshC,IAAelpB,EAAMpR,GAClBA,GAAe,cAARA,GAAuB25B,EAAK35B,KAASs6B,GAAeA,IACjDjB,GAAAzI,EAAM5wB,GAAK,GAC1B25B,EAAK35B,GAAOs6B,EACb,CACM,OAAAX,CACT,CAgJmCF,CAAU7I,EAAMxf,EAAOuoB,GACxD,GAAIvoB,IAAUuoB,EAAa,OAAAA,EAC3B,GAAa,QAATtB,EACGD,GAAShnB,EAAMwf,WACU,QAArByH,EAAK79B,MAAM,EAAG,GAAc,CAC/B0K,MAAAA,EAAImzB,EAAK79B,MAAM,GACbm/B,GAAA/I,EAAK2J,oBAAoBr1B,EAAGy0B,GAC3BvoB,GAAAwf,EAAK1I,iBAAiBhjB,EAAGkM,EACtC,SAAmC,eAAtBinB,EAAK79B,MAAM,EAAG,IAAsB,CACvC0K,MAAAA,EAAImzB,EAAK79B,MAAM,IACrBm/B,GAAQ/I,EAAK2J,oBAAoBr1B,EAAGy0B,GAAM,GAC1CvoB,GAASwf,EAAK1I,iBAAiBhjB,EAAGkM,GAAO,EAC7C,SAAkC,OAArBinB,EAAK79B,MAAM,EAAG,GAAa,CACpC,MAAM8a,EAAO+iB,EAAK79B,MAAM,GAAG0vB,cACrBsQ,EAAWzD,GAAgB/H,IAAI1Z,GACjC,IAACklB,GAAYb,EAAM,CACrB,MAAM19B,EAAI3B,MAAM4jB,QAAQyb,GAAQA,EAAK,GAAKA,EACrC/I,EAAA2J,oBAAoBjlB,EAAMrZ,EAChC,EACGu+B,GAAYppB,KAhMpB,SAA0Bwf,EAAMtb,EAAMmlB,EAASD,GAC7C,GAAIA,EACElgC,MAAM4jB,QAAQuc,IACX7J,EAAA,KAAKtb,KAAUmlB,EAAQ,GACvB7J,EAAA,KAAKtb,SAAcmlB,EAAQ,IAC3B7J,EAAK,KAAKtb,KAAUmlB,OAClB,GAAAngC,MAAM4jB,QAAQuc,GAAU,CACjC,MAAMC,EAAYD,EAAQ,GAC1B7J,EAAK1I,iBAAiB5S,EAAMmlB,EAAQ,GAAKv1B,GAAKw1B,EAAUjgC,KAAKm2B,EAAM6J,EAAQ,GAAIv1B,GAChF,MAAW0rB,EAAA1I,iBAAiB5S,EAAMmlB,EACrC,CAuLuBvS,CAAA0I,EAAMtb,EAAMlE,EAAOopB,GACxBA,GA3NlB,SAAwBG,EAAY3S,EAAWlH,OAAOkH,UACpD,MAAM9iB,EAAI8iB,EAASoP,MAAcpP,EAASoP,QAAgB1S,KAC1D,IAAA,IAAS1rB,EAAI,EAAGkD,EAAIy+B,EAAWrhC,OAAQN,EAAIkD,EAAGlD,IAAK,CACjD,MAAMsc,EAAOqlB,EAAW3hC,GACnBkM,EAAE8pB,IAAI1Z,KACTpQ,EAAE0F,IAAI0K,GACN0S,EAASE,iBAAiB5S,EAAMslB,IAEnC,CACH,CAkNkBC,CAAe,CAACvlB,IAElC,MAAA,IAAcwkB,EAAc3D,GAAgBnH,IAAIqJ,MAAWb,IAAUhB,GAAY6B,KAAUwB,EAAS3D,GAAWlH,IAAIqJ,OAAYuB,EAAOhJ,EAAKkK,SAASpb,SAAS,MAC5I,UAAT2Y,GAA6B,cAATA,EAAsB/B,GAAU1F,EAAMxf,IAAgBwoB,GAASC,GAAWC,EAA0DlJ,EAAA4F,GAAY6B,IAASA,GAAQjnB,EAArEwf,GAlChGtb,EAkC+G+iB,EAjC9H/iB,EAAK4U,cAAcJ,QAAQ,aAAa,CAAClI,EAAGmZ,IAAMA,EAAEC,kBAiCmF5pB,MACvI,CACC,MAAA6pB,EAAKzD,GAASa,EAAKhR,QAAQ,MAAO,GAAM4P,GAAaoB,EAAKjP,MAAM,KAAK,IACvE6R,EA9MR,SAAwBrK,EAAMsK,EAAW5lB,EAAMlE,GAChC,MAATA,EAAoBwf,EAAAuK,kBAAkBD,EAAW5lB,GAAgBsb,EAAAwK,eAAeF,EAAW5lB,EAAMlE,EACvG,CA4M2BgqB,CAAAxK,EAAMqK,EAAI5C,EAAMjnB,GAAYymB,GAAajH,EAAMwF,GAAQiC,IAASA,EAAMjnB,EAC9F,CAtCH,IAAwBkE,EAuCf,OAAAlE,CACT,CACA,SAASwpB,GAAa11B,GACd,MAAAlF,EAAM,KAAKkF,EAAE4W,OACnB,IAAI8U,EAAO1rB,EAAEm2B,cAAgBn2B,EAAEm2B,eAAe,IAAMn2B,EAAEuuB,OAwBtD,IAvBIvuB,EAAEuuB,SAAW7C,GACRpb,OAAAoe,eAAe1uB,EAAG,SAAU,CACjCguB,cAAc,EACd9hB,MAAOwf,IAGJpb,OAAAoe,eAAe1uB,EAAG,gBAAiB,CACxCguB,cAAc,EACdrT,IAAM,IACG+Q,GAAQ5I,WAGfsC,GAAa0O,WAAa1O,GAAavV,OACzCuV,GAAavV,MAAO,EACpBiT,SAASsT,iBAAiB,aAAalpB,SAAgBmpB,IACrD,KAAOA,GAA0B,IAAlBA,EAAKC,UAAkBD,EAAKE,YAAc,MAAQv2B,GAAG,CAClE,IAAIlJ,EAAIu/B,EAAKG,YACbH,EAAKI,SACEJ,EAAAv/B,CACR,CACDu/B,GAAQA,EAAKI,aAGV/K,GAAM,CACX,MAAM6J,EAAU7J,EAAK5wB,GACjB,GAAAy6B,IAAY7J,EAAKgL,SAAU,CACvB,MAAAngB,EAAOmV,EAAK,GAAG5wB,SAErB,QADS,IAAAyb,EAAYgf,EAAQhgC,KAAKm2B,EAAMnV,EAAMvW,GAAKu1B,EAAQhgC,KAAKm2B,EAAM1rB,GAClEA,EAAE22B,aAAc,MACrB,CACDjL,EAAOA,EAAKkL,QAAUlL,EAAKmL,YAAcnL,EAAKoL,IAC/C,CACH,CACA,SAAS9D,GAAiBS,EAAQvnB,EAAO0f,EAAS+H,EAAQoD,GAExD,IADI3R,GAAaa,UAAY2F,IAAmBA,EAAA,IAAI6H,EAAOuD,aACjC,mBAAZpL,GAAwBA,EAAUA,IAChD,GAAI1f,IAAU0f,EAAgB,OAAAA,EAC9B,MAAMhvB,SAAWsP,EACf+qB,OAAmB,IAAXtD,EAEN/2B,GADJ62B,EAASwD,GAASrL,EAAQ,IAAMA,EAAQ,GAAGiL,YAAcpD,EAC/C,WAAN72B,GAAwB,WAANA,EAAgB,CACpC,GAAIwoB,GAAaa,QAAgB,OAAA2F,EAEjC,GADU,WAANhvB,IAAgBsP,EAAQA,EAAMhX,YAC9B+hC,EAAO,CACT,IAAIvL,EAAOE,EAAQ,GACfF,GAA0B,IAAlBA,EAAK4K,SACf5K,EAAKnV,KAAOrK,EACAwf,EAAA5I,SAASoU,eAAehrB,GACtC0f,EAAUuL,GAAc1D,EAAQ7H,EAAS+H,EAAQjI,EACvD,MAEkBE,EADI,KAAZA,GAAqC,iBAAZA,EACjB6H,EAAOf,WAAWnc,KAAOrK,EACpBunB,EAAO2D,YAAclrB,CAEzC,MAAU,GAAS,MAATA,GAAuB,YAANtP,EAAiB,CAC3C,GAAIwoB,GAAaa,QAAgB,OAAA2F,EACvBA,EAAAuL,GAAc1D,EAAQ7H,EAAS+H,EAC7C,KAAA,IAAmB,aAAN/2B,EAMT,OALA+qB,IAAmB,KACjB,IAAIprB,EAAI2P,IACR,KAAoB,mBAAN3P,GAAkBA,EAAIA,IACpCqvB,EAAUoH,GAAiBS,EAAQl3B,EAAGqvB,EAAS+H,EAAM,IAEhD,IAAM/H,EACJ,GAAAx2B,MAAM4jB,QAAQ9M,GAAQ,CAC/B,MAAMyC,EAAQ,GACR0oB,EAAezL,GAAWx2B,MAAM4jB,QAAQ4S,GAC9C,GAAI0L,GAAuB3oB,EAAOzC,EAAO0f,EAASmL,GAEhD,OADmBpP,IAAA,IAAMiE,EAAUoH,GAAiBS,EAAQ9kB,EAAOid,EAAS+H,GAAQ,KAC7E,IAAM/H,EAEf,GAAIxG,GAAaa,QAAS,CACxB,IAAKtX,EAAMva,OAAe,OAAAw3B,EAC1B,IAAA,IAAS93B,EAAI,EAAGA,EAAI6a,EAAMva,OAAQN,IAChC,GAAI6a,EAAM7a,GAAG+iC,WAAY,OAAOjL,EAAUjd,CAE7C,CACG,GAAiB,IAAjBA,EAAMva,QAEJ,GADMw3B,EAAAuL,GAAc1D,EAAQ7H,EAAS+H,GACrCsD,EAAc,OAAArL,OACTyL,EACc,IAAnBzL,EAAQx3B,OACEmjC,GAAA9D,EAAQ9kB,EAAOglB,GAtY1B,SAAgBkD,EAAYx6B,EAAGnI,GACtC,IAAIsjC,EAAUtjC,EAAEE,OACdqjC,EAAOp7B,EAAEjI,OACTsjC,EAAOF,EACPG,EAAS,EACTC,EAAS,EACT9tB,EAAQzN,EAAEo7B,EAAO,GAAGjB,YACpBvd,EAAM,KACD,KAAA0e,EAASF,GAAQG,EAASF,GAC3Br7B,GAAAA,EAAEs7B,KAAYzjC,EAAE0jC,GAAhBv7B,CAKJ,KAAOA,EAAEo7B,EAAO,KAAOvjC,EAAEwjC,EAAO,IAC9BD,IACAC,IAEF,GAAID,IAASE,EAAQ,CACb,MAAAjM,EAAOgM,EAAOF,EAAUI,EAAS1jC,EAAE0jC,EAAS,GAAGpB,YAActiC,EAAEwjC,EAAOE,GAAU9tB,EACtF,KAAO8tB,EAASF,GAAiBb,EAAAgB,aAAa3jC,EAAE0jC,KAAWlM,EACjE,MAAA,GAAegM,IAASE,EAClB,KAAOD,EAASF,GACTxe,GAAQA,EAAI6Q,IAAIztB,EAAEs7B,KAAUt7B,EAAEs7B,GAAQlB,SAC3CkB,SAEH,GAAUt7B,EAAEs7B,KAAYzjC,EAAEwjC,EAAO,IAAMxjC,EAAE0jC,KAAYv7B,EAAEo7B,EAAO,GAAI,CAC3D,MAAA/L,EAAOrvB,IAAIo7B,GAAMjB,YACvBK,EAAWgB,aAAa3jC,EAAE0jC,KAAWv7B,EAAEs7B,KAAUnB,aACjDK,EAAWgB,aAAa3jC,IAAIwjC,GAAOhM,GACnCrvB,EAAEo7B,GAAQvjC,EAAEwjC,EAClB,KAAW,CACL,IAAKze,EAAK,CACRA,MAAUX,IACV,IAAIxkB,EAAI8jC,EACR,KAAO9jC,EAAI4jC,GAAUze,EAAA3K,IAAIpa,EAAEJ,GAAIA,IAChC,CACD,MAAM8a,EAAQqK,EAAI0B,IAAIte,EAAEs7B,IACxB,GAAa,MAAT/oB,EACE,GAAAgpB,EAAShpB,GAASA,EAAQ8oB,EAAM,CAC9B5jC,IAEF8I,EAFE9I,EAAI6jC,EACNG,EAAW,EAEb,OAAShkC,EAAI2jC,GAAQ3jC,EAAI4jC,GACI,OAAtB96B,EAAIqc,EAAI0B,IAAIte,EAAEvI,MAAgB8I,IAAMgS,EAAQkpB,GACjDA,IAEE,GAAAA,EAAWlpB,EAAQgpB,EAAQ,CAC7B,MAAMlM,EAAOrvB,EAAEs7B,GACf,KAAOC,EAAShpB,GAAkBioB,EAAAgB,aAAa3jC,EAAE0jC,KAAWlM,EACxE,MAAiBmL,EAAWkB,aAAa7jC,EAAE0jC,KAAWv7B,EAAEs7B,KAC/C,MAAMA,SACFt7B,EAAEs7B,KAAUlB,QACpB,CAxCA,MAHCkB,IACAC,GA4CN,CAgV6BI,CAAAvE,EAAQ7H,EAASjd,IAExCid,GAAWuL,GAAc1D,GACzB8D,GAAY9D,EAAQ9kB,IAEZid,EAAAjd,CACd,MAAA,GAAazC,aAAiB+rB,KAAM,CAC5B,GAAA7S,GAAaa,SAAW/Z,EAAM2qB,WAAY,OAAOjL,EAAUqL,EAAQ,CAAC/qB,GAASA,EAC7E,GAAA9W,MAAM4jB,QAAQ4S,GAAU,CACtB,GAAAqL,EAAO,OAAOrL,EAAUuL,GAAc1D,EAAQ7H,EAAS+H,EAAQznB,GACrDirB,GAAA1D,EAAQ7H,EAAS,KAAM1f,EAC3C,MAA0B,MAAX0f,GAA+B,KAAZA,GAAmB6H,EAAOf,WAE1Ce,EAAAsE,aAAa7rB,EAAOunB,EAAOf,YADvCe,EAAOyE,YAAYhsB,GAEX0f,EAAA1f,CACd,CAAS,CACA,OAAA0f,CACT,CACA,SAAS0L,GAAuBa,EAAYxpB,EAAOid,EAASwM,GAC1D,IAAI3P,GAAU,EACd,IAAA,IAAS30B,EAAI,EAAG0B,EAAMmZ,EAAMva,OAAQN,EAAI0B,EAAK1B,IAAK,CAChD,IAAIsnB,EAAOzM,EAAM7a,GACf2gC,EAAO7I,GAAWA,EAAQ93B,GAC5B,GAAIsnB,aAAgB6c,KAClBE,EAAW3jC,KAAK4mB,QACP,GAAQ,MAARA,IAAyB,IAATA,IAA0B,IAATA,QAA2B,GAAAhmB,MAAM4jB,QAAQoC,GACnFqN,EAAU6O,GAAuBa,EAAY/c,EAAMqZ,IAAShM,OAClE,GAAiC,mBAAVrN,EACjB,GAAIgd,EAAQ,CACV,KAAuB,mBAAThd,GAAqBA,EAAOA,IAC1CqN,EAAU6O,GAAuBa,EAAY/iC,MAAM4jB,QAAQoC,GAAQA,EAAO,CAACA,GAAOhmB,MAAM4jB,QAAQyb,GAAQA,EAAO,CAACA,KAAUhM,CAClI,MACQ0P,EAAW3jC,KAAK4mB,GACNqN,GAAA,MAEP,CACC,MAAAvc,EAAQzX,OAAO2mB,GACjBqZ,GAA0B,IAAlBA,EAAK6B,UAAkB7B,EAAKle,OAASrK,EAC/CisB,EAAW3jC,KAAKigC,GACX0D,EAAW3jC,KAAKsuB,SAASoU,eAAehrB,GAChD,CACF,CACM,OAAAuc,CACT,CACA,SAAS8O,GAAY9D,EAAQ9kB,EAAOglB,EAAS,MAC3C,IAAA,IAAS7/B,EAAI,EAAG0B,EAAMmZ,EAAMva,OAAQN,EAAI0B,EAAK1B,IAAY2/B,EAAAoE,aAAalpB,EAAM7a,GAAI6/B,EAClF,CACA,SAASwD,GAAc1D,EAAQ7H,EAAS+H,EAAQ0E,GAC9C,QAAe,IAAX1E,EAAsB,OAAOF,EAAO2D,YAAc,GACtD,MAAM1L,EAAO2M,GAAevV,SAASoU,eAAe,IACpD,GAAItL,EAAQx3B,OAAQ,CAClB,IAAIkkC,GAAW,EACf,IAAA,IAASxkC,EAAI83B,EAAQx3B,OAAS,EAAGN,GAAK,EAAGA,IAAK,CAC5C,MAAMykC,EAAK3M,EAAQ93B,GACnB,GAAI43B,IAAS6M,EAAI,CACT,MAAAC,EAAWD,EAAG1B,aAAepD,EAC9B6E,GAAaxkC,EAAqF0kC,GAAYD,EAAG9B,SAAtF+B,EAAA/E,EAAOsE,aAAarM,EAAM6M,GAAM9E,EAAOoE,aAAanM,EAAMiI,EAClG,MAAwB2E,GAAA,CACnB,CACF,MAAa7E,EAAAoE,aAAanM,EAAMiI,GACjC,MAAO,CAACjI,EACV,CA6CA,MAAM+M,GAAgB,6BACb,SAAAlG,GAAcmG,EAASpG,GAAQ,GAC/B,OAAAA,EAAQxP,SAAS6V,gBAAgBF,GAAeC,GAAW5V,SAASyP,cAAcmG,EAC3F,CAKA,SAASE,GAAOtL,GACR,MAAAuL,UACFA,GACEvL,EACJqG,EAAS7Q,SAASoU,eAAe,IACjC4B,EAAQxL,EAAMwL,OAAShW,SAASpN,KAClC,SAASqjB,IACP,GAAI3T,GAAaa,QAAS,CACxB,MAAOvyB,EAAG4a,GAAO4Y,IAAa,GAEvB,OADQqC,gBAAA,IAAMjb,GAAI,KAClB,IAAM5a,KAAO45B,EAAMtC,QAChC,CAAW,MAAO,IAAMsC,EAAMtC,QAC3B,CACD,GAAI8N,aAAiBE,gBAAiB,CACpC,MAAOC,EAAOC,GAAYhS,IAAa,GACjCjf,EAAU,IAAMixB,GAAS,GAC/BvS,IAAW6G,GAAWgG,GAAOsF,GAAO,IAAOG,IAA6BzL,IAAnBuL,OAA8B,QACnFtO,IAAU,KACJrF,GAAaa,QAASsD,eAAethB,SAE/C,KAAS,CACL,MAAMkxB,EAAY5G,GAAcjF,EAAMgF,MAAQ,IAAM,MAAOhF,EAAMgF,OAC/D8G,EAAaP,GAAaM,EAAUE,aAAeF,EAAUE,aAAa,CACxEC,KAAM,SACHH,EACA7oB,OAAAoe,eAAeyK,EAAW,SAAU,CACzCxe,IAAM,IACGgZ,EAAOkD,WAEhB7I,cAAc,IAETwF,GAAA4F,EAAYL,KACnBD,EAAMZ,YAAYiB,GACZ7L,EAAA2F,KAAO3F,EAAM2F,IAAIkG,GACvB1O,IAAU,IAAMqO,EAAMS,YAAYJ,IACnC,CACM,OAAAxF,CACT,CACA,SAAS6F,GAAQlM,GACT,MAACx1B,EAAG2hC,GAAU9K,GAAWrB,EAAO,CAAC,cACjCoM,EAAS3R,IAAW,IAAMjwB,EAAE6hC,YAClC,OAAO5R,IAAW,KAChB,MAAM4R,EAAYD,IAClB,cAAeC,GACb,IAAK,WACH,OAAO5S,IAAQ,IAAM4S,EAAUF,KACjC,IAAK,SACG,MAAAG,EAAQ9H,GAAYhI,IAAI6P,GACxBpB,EAAKnT,GAAaa,QAAU4N,KAAmBtB,GAAcoH,EAAWC,GAEvE,OADA/G,GAAA0F,EAAIkB,EAAQG,GACZrB,EACV,GAEL,CCjkBO,MAAOsB,GAAkBC,IAAuB5S,IAAa,IACtD6S,GAAwBC,IAA6B9S,GAMjE,OACY+S,GAAQC,IAAahT,GAA4B,MCnB3D,IAAAlnB,GAAE,CAACuW,KAAK,IAAI3Z,GAAEA,GAAG,iBAAiBgf,SAAShf,EAAEA,EAAEu9B,cAAc,YAAYve,OAAOwe,UAAU9pB,OAAOsJ,QAAQhd,GAAGkmB,SAASuX,MAAMnC,YAAYpV,SAASyP,cAAc,UAAU,CAACC,UAAU,IAAI5a,GAAG,aAAa8a,WAAW91B,GAAGoD,GAAgDhJ,GAAE,oEAAoEqF,GAAE,qBAAqBhF,GAAE,OAAOQ,GAAE,CAACmI,EAAEpD,KAAK,IAAI7G,EAAE,GAAGiB,EAAE,GAAGqF,EAAE,GAAG,IAAA,IAAQhF,KAAK2I,EAAE,CAAC,IAAIpI,EAAEoI,EAAE3I,GAAG,KAAKA,EAAE,GAAG,KAAKA,EAAE,GAAGtB,EAAEsB,EAAE,IAAIO,EAAE,IAAIZ,GAAG,KAAKK,EAAE,GAAGQ,GAAED,EAAEP,GAAGA,EAAE,IAAIQ,GAAED,EAAE,KAAKP,EAAE,GAAG,GAAGuF,GAAG,IAAI,iBAAiBhF,EAAEZ,GAAGa,GAAED,EAAEgF,EAAEA,EAAEgoB,QAAQ,YAAW5kB,GAAG3I,EAAEutB,QAAQ,mBAAkBhoB,GAAG,IAAIjJ,KAAKiJ,GAAGA,EAAEgoB,QAAQ,KAAK5kB,GAAGA,EAAEA,EAAE,IAAIpD,EAAEA,MAAIvF,GAAG,MAAMO,IAAIP,EAAE,MAAM1D,KAAK0D,GAAGA,EAAEA,EAAEutB,QAAQ,SAAS,OAAOI,cAAc3oB,GAAGxE,GAAEC,EAAED,GAAEC,EAAET,EAAEO,GAAGP,EAAE,IAAIO,EAAE,IAAI,CAAC,OAAO7B,GAAG6G,GAAGP,EAAEO,EAAE,IAAIP,EAAE,IAAIA,GAAGrF,CAAAA,EAAGY,GAAE,CAAE,EAAClE,GAAEsM,IAAO,GAAA,iBAAiBA,EAAE,CAAC,IAAIpD,EAAE,GAAG,IAAA,IAAQ7G,KAAKiK,EAAEpD,GAAG7G,EAAErC,GAAEsM,EAAEjK,IAAW6G,OAAAA,CAAC,CAAQoD,OAAAA,CAAAA,EAAGlM,GAAE,CAACkM,EAAEpD,EAAE7G,EAAEjC,EAAEgE,KAASC,IAAAA,EAAErE,GAAEsM,GAAGjM,EAAE6D,GAAEG,KAAKH,GAAEG,GAAI,CAAAiI,IAAQpD,IAAAA,EAAE,EAAE7G,EAAE,GAAG,KAAK6G,EAAEoD,EAAE5L,QAAQ2B,EAAE,IAAIA,EAAEiK,EAAE3L,WAAWuI,OAAO,EAAE,MAAM,KAAK7G,GAA3E,CAA+EgC,IAAO,IAACH,GAAE7D,GAAG,CAAC,IAAI6I,EAAE7E,IAAIiI,EAAEA,EAAAA,CAAGA,IAAI,IAAIpD,EAAE7G,EAAE8B,EAAE,CAAC,CAAA,GAAI,KAAK+E,EAAE5F,GAAEsjC,KAAKt6B,EAAE4kB,QAAQvoB,GAAE,MAAMO,EAAE,GAAG/E,EAAE0iC,QAAQ39B,EAAE,IAAI7G,EAAE6G,EAAE,GAAGgoB,QAAQvtB,GAAE,KAAKg9B,OAAOx8B,EAAE2iC,QAAQ3iC,EAAE,GAAG9B,GAAG8B,EAAE,GAAG9B,IAAI,CAAA,IAAK8B,EAAE,GAAG+E,EAAE,IAAIA,EAAE,GAAGgoB,QAAQvtB,GAAE,KAAKg9B,OAAO,OAAOx8B,EAAE,IAAvLmI,CAA4LA,GAAGpI,GAAE7D,GAAG8D,GAAEC,EAAE,CAAC,CAAC,cAAc/D,GAAG6I,GAAGA,EAAE7G,EAAE,GAAG,IAAIhC,EAAE,CAAC,IAAIT,EAAEyC,GAAG6B,GAAE+K,EAAE/K,GAAE+K,EAAE,KAAY,OAAA5M,IAAI6B,GAAE+K,EAAE/K,GAAE7D,IAAMiM,EAA+FpI,GAAE7D,GAA/F6I,EAAkGA,EAAhG7G,EAAkGjC,GAAhGkD,EAAkG1D,GAA3FsJ,EAAE2Z,KAAK3Z,EAAE2Z,KAAKqO,QAAQ5tB,EAAEgJ,IAAQpD,IAAAA,EAAE2Z,KAAK4L,QAAQniB,KAAKpD,EAAE2Z,KAAKxgB,EAAEiK,EAAEpD,EAAE2Z,KAAK3Z,EAAE2Z,KAAKvW,GAAiBjM,MAA3GiM,EAAEpD,EAAE7G,EAAEiB,CAAqG,EAAGc,GAAE,CAACkI,EAAEpD,EAAE7G,IAAIiK,EAAEyG,QAAO,CAACzG,EAAEhJ,EAAEqF,KAAK,IAAIhF,EAAEuF,EAAEP,GAAMhF,GAAAA,GAAGA,EAAE9B,KAAK,CAAC,IAAIyK,EAAE3I,EAAEtB,GAAG6G,EAAEoD,GAAGA,EAAEstB,OAAOttB,EAAEstB,MAAM8D,WAAW,MAAMz9B,KAAKqM,IAAIA,EAAE3I,EAAEuF,EAAE,IAAIA,EAAEoD,GAAG,iBAAiBA,EAAEA,EAAEstB,MAAM,GAAGz1B,GAAEmI,EAAE,KAAI,IAAKA,EAAE,GAAGA,CAAC,CAAC,OAAOA,EAAEhJ,GAAG,MAAMK,EAAE,GAAGA,EAAAA,GAAI,IAAI,SAASU,GAAEiI,GAAO,IAAAjK,EAAExC,MAAM,CAAA,EAAGyD,EAAEgJ,EAAEzK,KAAKyK,EAAEjK,EAAE+B,GAAGkI,EAAS,OAAAlM,GAAEkD,EAAEwjC,QAAQxjC,EAAEyjC,IAAI3iC,GAAEd,EAAE,GAAG1B,MAAMC,KAAKyS,UAAU,GAAGjS,EAAE+B,GAAGd,EAAEyP,QAAO,CAACzG,EAAEpD,IAAI0T,OAAOsJ,OAAO5Z,EAAEpD,GAAGA,EAAErH,KAAKqH,EAAE7G,EAAE+B,GAAG8E,IAAG,CAAE,GAAE5F,EAAE4F,GAAE7G,EAAEw4B,QAAQx4B,EAAE4M,EAAE5M,EAAE8B,EAAE9B,EAAE4B,EAAE,CAAaI,GAAEmd,KAAK,CAACvS,EAAE,IAAG,IAAC5L,GAAEgB,GAAEmd,KAAK,CAACvd,EAAE,ICsB1yD,MAAM+iC,GAAe/P,KACd,SAASgQ,GAAcrN,GACrB,OAAAG,GAAgBiN,GAAa7P,SAAU,CAC5C3e,MAAOohB,EAAMsN,MACT5P,eACF,OAAOsC,EAAMtC,QACd,GAEL,CACO,SAAS6P,KACd,OAAO/P,GAAW4P,GACpB,CAEA,SAASI,GAAWzW,GACd,IAAA0W,EAAOxnC,MAAQ,GACnB,MAAO,IAAIkd,KACT,MAAMuqB,EAAkB1N,IAChB,MACA2N,EAAY7M,GAAWd,EAAO,CAAEsN,MADxB9P,GAAW4P,MAEnB5L,EAAQV,GAAW6M,EAAW,CAC9B1J,YACI,MAAA2J,EAASD,EAAU1J,MACvB3c,EAAS,UAAWqmB,GAAa,YAAYtnC,KAAKunC,GAM7C,MAAA,CAACA,EAJQC,GAAIprB,MAClB,CAAEwe,OAAQwM,EAAKxM,OAAQ12B,EAAG+c,EAAQ9c,EAAGmjC,EAAWt4B,EAAGo4B,EAAKp4B,GACxD8N,IAEyB4J,OAAO+gB,SAASvmC,KAAK,IACjD,KAEIwmC,EAAOC,GAAY3M,GAAWG,EAAO,CAAC,KAAM,UAC7CyM,EAEFD,EACEE,EAAYH,EAAMI,IAAMpX,EAC1B,IAAAkU,EAwBG,MAtBkB,mBAAdiD,EACTjD,EAAKiD,EAAUD,GAYC,GAAVR,EAAKp4B,GAEF41B,EAAAzV,SAASyP,cAAciJ,GAC5B3I,GAAO0F,EAAIgD,IAEXhD,EAAKiB,GAAQpL,GAAW,CAAEuL,UAAW6B,GAAaD,IAIjDhD,CAAA,EAQF,OANPyC,EAAOzJ,MAAiBjE,GACfvG,IAAQ,IACNoU,GAAIprB,MAAM,CAAEwe,OAAQwM,EAAKxM,OAAQz2B,EAAGw1B,EAAO3qB,EAAGo4B,EAAKp4B,GAAK8N,KAI5DuqB,CAAA,CAEX,CAEa,MAAAU,GAAS,IAAIpN,MAAMwM,GAAY,CAC1CngB,IAAA,CAAI4T,EAAQlK,IACHkK,EAAOlK,KAIX,SAASsX,KACR,MAAAzwB,EAAK4vB,GAAWvlC,KAAK,CAAEoN,EAAG,GAAK,OAAOoN,MAAM,KAAM/H,WAEjD,OAAA,SAAsBslB,GAEpB,OADPpiB,EAAGoiB,GACI,IACX,CACA,o/CCvGasO,GAA0C,CACnDC,GAAIC,05CACJC,GAAID,GAAgBC,KAIxB,SAASD,GAAgBE,GACrB,MAEMC,EAAWC,IACN5rB,OAAAmM,QAAQyf,GAAehvB,SAAQ,EAAEpS,EAAKoR,MACrC,GAAiB,iBAAVA,GAAsBA,EAC7B,OAAO+vB,EAAQ/vB,GAGf,GAAiB,iBAAVA,EAAoB,CACvB,GATE,MASFA,EAAM,GAAkB,CACxB,MAAM4H,EAAO5H,EAAM5W,MAAM,GAAG4uB,MAAM,KAClC,IAAIiY,EAA+BH,EAC9BloB,EAAA5G,SAAgBkO,IACjB,KAAIA,KAAQ+gB,GAGR,MAAM,IAAIjmC,MACN,mDAAmDklB,oBAHvD+gB,EAAMA,EAAI/gB,EAKd,IAGJ8gB,EAAcphC,GAAOqhC,CACzB,CAE0B,QAAtBjwB,EAAM5W,MAAM,EAAG,KACD4mC,EAAAphC,GAAOoR,EAAM5W,MAAM,GAEzC,IACH,EAIE,OADP2mC,EAAQD,GACDA,CACX,CC1CO,MAAMI,GAAmBzR,KCD1B0R,GAAO/W,OAAO,aAClBgX,GAAQhX,OAAO,cACfiX,GAAQjX,OAAO,cACR,SAAAkX,GAAOtwB,EAAOkE,GACrB,IAAItY,EAAIoU,EAAMmZ,IACd,IAAKvtB,IACIwY,OAAAoe,eAAexiB,EAAOmZ,GAAQ,CACnCnZ,MAAOpU,EAAI,IAAIw2B,MAAMpiB,EAAOuwB,OAEzBrnC,MAAM4jB,QAAQ9M,IAAQ,CACnB,MAAAud,EAAOnZ,OAAOmZ,KAAKvd,GACvBwwB,EAAOpsB,OAAOme,0BAA0BviB,GAC1C,IAAA,IAASpY,EAAI,EAAGkD,EAAIyyB,EAAKr1B,OAAQN,EAAIkD,EAAGlD,IAAK,CAC3C,MAAMq/B,EAAO1J,EAAK31B,GACd4oC,EAAKvJ,GAAMxY,KACNrK,OAAAoe,eAAexiB,EAAOinB,EAAM,CACjClF,WAAYyO,EAAKvJ,GAAMlF,WACvBtT,IAAK+hB,EAAKvJ,GAAMxY,IAAIzF,KAAKpd,IAG9B,CACF,CAEIA,OAAAA,CACT,CACA,SAAS6kC,GAAYR,GACf,IAAAS,EACJ,OAAc,MAAPT,GAA8B,iBAARA,IAAqBA,EAAI9W,OAAauX,EAAQtsB,OAAOusB,eAAeV,KAASS,IAAUtsB,OAAOjb,WAAaD,MAAM4jB,QAAQmjB,GACxJ,CACA,SAAS/D,GAAOhd,EAAM9M,EAAM,IAAIkR,KAC1B,IAAAnS,EAAQyvB,EAAWvgC,EAAG42B,EACtB,GAAA9lB,EAAiB,MAAR+N,GAAgBA,EAAKihB,IAAc,OAAAhvB,EAChD,IAAKsvB,GAAYvhB,IAAS9M,EAAIwb,IAAI1O,GAAc,OAAAA,EAC5C,GAAAhmB,MAAM4jB,QAAQoC,GAAO,CACnB9K,OAAOysB,SAAS3hB,GAAcA,EAAAA,EAAK9lB,MAAM,GAAQgZ,EAAI5I,IAAI0V,GAC7D,IAAA,IAAStnB,EAAI,EAAGkD,EAAIokB,EAAKhnB,OAAQN,EAAIkD,EAAGlD,IACtCyI,EAAI6e,EAAKtnB,IACJgpC,EAAY1E,GAAO77B,EAAG+R,MAAU/R,IAAG6e,EAAKtnB,GAAKgpC,EAExD,KAAS,CACDxsB,OAAOysB,SAAS3hB,GAAOA,EAAO9K,OAAOsJ,OAAO,CAAE,EAAEwB,GAAW9M,EAAI5I,IAAI0V,GACjE,MAAAqO,EAAOnZ,OAAOmZ,KAAKrO,GACvBshB,EAAOpsB,OAAOme,0BAA0BrT,GAC1C,IAAA,IAAStnB,EAAI,EAAGkD,EAAIyyB,EAAKr1B,OAAQN,EAAIkD,EAAGlD,IACtCq/B,EAAO1J,EAAK31B,GACR4oC,EAAKvJ,GAAMxY,MACfpe,EAAI6e,EAAK+X,IACJ2J,EAAY1E,GAAO77B,EAAG+R,MAAU/R,IAAG6e,EAAK+X,GAAQ2J,GAExD,CACM,OAAA1hB,CACT,CACA,SAAS4hB,GAAazO,GACpB,IAAI0O,EAAQ1O,EAAO+N,IAIZ,OAHFW,GAAc3sB,OAAAoe,eAAeH,EAAQ+N,GAAO,CAC/CpwB,MAAO+wB,EAAQ,CAAE,IAEZA,CACT,CACS,SAAAC,GAAYD,EAAOpP,EAAU3hB,GACpC,OAAO+wB,EAAMpP,KAAcoP,EAAMpP,GAAYsP,GAAejxB,GAC9D,CASA,SAASkxB,GAAU7O,GACjB,GAAI7D,KAAe,CACX,MAAAuS,EAAQD,GAAazO,IAC1B0O,EAAMvgB,IAAMugB,EAAMvgB,EAAIygB,QACxB,CACH,CAKA,SAASA,GAAejxB,GACtB,MAAOxY,EAAG4a,GAAO4Y,GAAahb,EAAO,CACnCuZ,QAAQ,EACR4X,UAAU,IAGL3pC,OADPA,EAAE4pC,EAAIhvB,EACC5a,CACT,CACA,MAAM+oC,GAAe,CACnB9hB,IAAI4T,EAAQV,EAAUvY,GACpB,GAAIuY,IAAawO,GAAa,OAAA9N,EAC9B,GAAIV,IAAaxI,GAAe,OAAA/P,EAChC,GAAIuY,IAAatI,GAER,OADP6X,GAAU7O,GACHjZ,EAEH,MAAA2nB,EAAQD,GAAazO,GACrBgP,EAAUN,EAAM/a,eAAe2L,GACrC,IAAI3hB,EAAQqxB,EAAUN,EAAMpP,KAAcU,EAAOV,GAC7C,GAAAA,IAAayO,IAAsB,cAAbzO,EAAiC,OAAA3hB,EAC3D,IAAKqxB,EAAS,CACZ,MAAMb,EAAOpsB,OAAOyd,yBAAyBQ,EAAQV,IACjDnD,MAAmC,mBAAVxe,IAAwBqiB,EAAOrM,eAAe2L,IAAgB6O,GAAQA,EAAK/hB,MAAMzO,EAAQgxB,GAAYD,EAAOpP,EAAU3hB,EAA7BgxB,GACvH,CACD,OAAOP,GAAYzwB,GAASswB,GAAOtwB,GAASA,CAC7C,EACD4d,IAAIyE,EAAQV,GACN,OAAAA,IAAawO,IAAQxO,IAAaxI,IAAUwI,IAAatI,IAAUsI,IAAayO,IAAsB,cAAbzO,IACxFt6B,KAAAonB,IAAI4T,EAAQV,EAAUU,GACpBV,KAAYU,EACpB,EACDjgB,IAAM,KACG,EAETwf,eAAiB,KACR,EAETI,QAzCF,SAAiBK,GAER,OADP6O,GAAU7O,GACHiP,QAAQtP,QAAQK,EACzB,EAuCER,yBAxDO,SAAkBQ,EAAQV,GACjC,MAAM6O,EAAOc,QAAQzP,yBAAyBQ,EAAQV,GAClD,OAAC6O,IAAQA,EAAK/hB,KAAQ+hB,EAAK1O,cAAgBH,IAAaxI,IAAUwI,IAAayO,IAASzO,IAAa0O,WAClGG,EAAKxwB,aACLwwB,EAAKe,SACPf,EAAA/hB,IAAM,IAAM4T,EAAOlJ,IAAQwI,GACzB6O,GAJgHA,CAKzH,GAmDA,SAASzH,GAAYjM,EAAO6E,EAAU3hB,EAAOwxB,GAAW,GAClD,IAACA,GAAY1U,EAAM6E,KAAc3hB,EAAO,OAC5C,MAAMuoB,EAAOzL,EAAM6E,GACjBr4B,EAAMwzB,EAAM50B,YACA,IAAV8X,SAA4B8c,EAAM6E,GAAe7E,EAAM6E,GAAY3hB,EACnE,IACFwf,EADEuR,EAAQD,GAAahU,IAErB0C,EAAOwR,GAAYD,EAAOpP,EAAU4G,KAAY/I,EAAA4R,GAAE,IAAMpxB,IACxD9W,MAAM4jB,QAAQgQ,IAAUA,EAAM50B,SAAWoB,IAAMk2B,EAAOwR,GAAYD,EAAO,SAAUznC,KAASk2B,EAAK4R,EAAEtU,EAAM50B,SAC5Gs3B,EAAOuR,EAAMvgB,IAAMgP,EAAK4R,GAC3B,CACS,SAAAK,GAAe3U,EAAO9c,GACvB,MAAAud,EAAOnZ,OAAOmZ,KAAKvd,GACzB,IAAA,IAASpY,EAAI,EAAGA,EAAI21B,EAAKr1B,OAAQN,GAAK,EAAG,CACvC,MAAMgH,EAAM2uB,EAAK31B,GACLmhC,GAAAjM,EAAOluB,EAAKoR,EAAMpR,GAC/B,CACH,CAeA,SAAS8iC,GAAWhS,EAAS9X,EAAM+pB,EAAY,IAC7C,IAAIC,EACFrJ,EAAO7I,EACL,GAAA9X,EAAK1f,OAAS,EAAG,CACnB0pC,EAAOhqB,EAAKymB,QACZ,MAAMwD,SAAkBD,EACtB9kB,EAAU5jB,MAAM4jB,QAAQ4S,GACtB,GAAAx2B,MAAM4jB,QAAQ8kB,GAAO,CACvB,IAAA,IAAShqC,EAAI,EAAGA,EAAIgqC,EAAK1pC,OAAQN,IACpB8pC,GAAAhS,EAAS,CAACkS,EAAKhqC,IAAI2rB,OAAO3L,GAAO+pB,GAE9C,MACN,CAAA,GAAe7kB,GAAwB,aAAb+kB,EAAyB,CAC7C,IAAA,IAASjqC,EAAI,EAAGA,EAAI83B,EAAQx3B,OAAQN,IAC9BgqC,EAAKlS,EAAQ93B,GAAIA,IAAI8pC,GAAWhS,EAAS,CAAC93B,GAAG2rB,OAAO3L,GAAO+pB,GAEjE,MACN,CAAA,GAAe7kB,GAAwB,WAAb+kB,EAAuB,CACrC,MAAA/oC,KACJA,EAAO,EAAAgpC,GACPA,EAAKpS,EAAQx3B,OAAS,EAAA6pC,GACtBA,EAAK,GACHH,EACJ,IAAA,IAAShqC,EAAIkB,EAAMlB,GAAKkqC,EAAIlqC,GAAKmqC,EAC/BL,GAAWhS,EAAS,CAAC93B,GAAG2rB,OAAO3L,GAAO+pB,GAExC,MACN,CAAA,GAAe/pB,EAAK1f,OAAS,EAEvB,YADWwpC,GAAAhS,EAAQkS,GAAOhqB,EAAM,CAACgqB,GAAMre,OAAOoe,IAGhDpJ,EAAO7I,EAAQkS,GACfD,EAAY,CAACC,GAAMre,OAAOoe,EAC3B,CACD,IAAI3xB,EAAQ4H,EAAK,GACI,mBAAV5H,IACDA,EAAAA,EAAMuoB,EAAMoJ,GAChB3xB,IAAUuoB,SAEH,IAATqJ,GAA+B,MAAT5xB,IAC1BA,EAAQksB,GAAOlsB,QACF,IAAT4xB,GAAsBnB,GAAYlI,IAASkI,GAAYzwB,KAAW9W,MAAM4jB,QAAQ9M,GAClFyxB,GAAelJ,EAAMvoB,GACJ+oB,GAAArJ,EAASkS,EAAM5xB,GACpC,CACA,SAASgyB,OAAgBC,EAAOluB,IAC9B,MAAMmuB,EAAiBhG,GAAO+F,GAAS,CAAE,GACnCnlB,EAAU5jB,MAAM4jB,QAAQolB,GAOvB,MAAA,CANc5B,GAAO4B,GAC5B,YAAqB3tB,GACnB+Z,IAAM,KACOxR,GAAgB,IAAhBvI,EAAKrc,OAjEb,SAAYw3B,EAASjc,GAGxB,GAFgB,mBAATA,IAAqBA,EAAOA,EAAKic,IAC5Cjc,EAAOyoB,GAAOzoB,GACVva,MAAM4jB,QAAQrJ,GAAO,CACvB,GAAIic,IAAYjc,EAAM,OAClB7b,IAAAA,EAAI,EACN0B,EAAMma,EAAKvb,OACNN,KAAAA,EAAI0B,EAAK1B,IAAK,CACnB,MAAMoY,EAAQyD,EAAK7b,GACf83B,EAAQ93B,KAAOoY,GAAmB+oB,GAAArJ,EAAS93B,EAAGoY,EACnD,CACW+oB,GAAArJ,EAAS,SAAUp2B,EACnC,MAASmoC,GAAe/R,EAASjc,EACjC,CAoDqC0uB,CAAYD,EAAgB3tB,EAAK,IAAMmtB,GAAWQ,EAAgB3tB,EAAI,GAExG,EAEH,CCjNY,IAAA6tB,IAAAA,IACRA,EAAO,KAAA,OACPA,EAAQ,MAAA,QAFAA,IAAAA,IAAA,CAAA,GCEL,MAAMC,GAAmC,CAC5CC,SAAU,CACNC,MAAO,UACPC,MAAO,WAEXC,cAAe,CACXC,WAAY,UACZC,WAAY,WAEhBC,OAAQ,UACRC,KAAM,CACFC,QAAS,UACTC,UAAW,UACXC,SAAU,UACVC,QAAS,UACTntB,MAAO,WAEX4sB,WAAY,CACRI,QAAS,UACTC,UAAW,UACXG,QAAS,WAEbC,KAAM,CACFL,QAAS,UACTC,UAAW,YCxBf,IAAAK,GAAoB,SAA2BpzB,GAClD,OAID,SAAyBA,GACxB,QAASA,GAA0B,iBAAVA,CAC1B,CANQqzB,CAAgBrzB,KAQxB,SAAmBA,GAClB,IAAIszB,EAAclvB,OAAOjb,UAAUH,SAASK,KAAK2W,GAEjD,MAAuB,oBAAhBszB,GACa,kBAAhBA,GAQL,SAAwBtzB,GACvB,OAAOA,EAAMuzB,WAAaC,EAC3B,CATKC,CAAezzB,EACpB,CAbM0zB,CAAU1zB,EAChB,EAeA,IACIwzB,GADiC,mBAAXpa,QAAyBA,OAAOua,IAClBva,OAAOua,IAAI,iBAAmB,MAU7D,SAAAC,GAA8B5zB,EAAO+D,GAC7C,OAA0B,IAAlBA,EAAQ6e,OAAmB7e,EAAQqvB,kBAAkBpzB,GAC1D6zB,IANiBC,EAMK9zB,EALlB9W,MAAM4jB,QAAQgnB,GAAO,GAAK,CAAE,GAKF9zB,EAAO+D,GACrC/D,EAPJ,IAAqB8zB,CAQrB,CAES,SAAAC,GAAkB1R,EAAQrV,EAAQjJ,GAC1C,OAAOse,EAAO9O,OAAOvG,GAAQD,KAAI,SAASqa,GAClC,OAAAwM,GAA8BxM,EAASrjB,EAChD,GACA,CAkBA,SAASiwB,GAAQ3R,GAChB,OAAOje,OAAOmZ,KAAK8E,GAAQ9O,OAT5B,SAAyC8O,GACjC,OAAAje,OAAO8R,sBACX9R,OAAO8R,sBAAsBmM,GAAQlU,QAAO,SAAS8lB,GAC/C,OAAA5R,EAAOlM,qBAAqB8d,EACtC,IACI,EACJ,CAGmCC,CAAgC7R,GACnE,CAES,SAAA8R,GAAmBC,EAAQzS,GAC/B,IACH,OAAOA,KAAYyS,CACnB,OAAO5jB,GACA,OAAA,CACP,CACF,CASS,SAAA6jB,GAAYhS,EAAQrV,EAAQjJ,GACpC,IAAIuwB,EAAc,CAAA,EAiBX,OAhBHvwB,EAAQqvB,kBAAkB/Q,IAC7B2R,GAAQ3R,GAAQrhB,SAAQ,SAASpS,GAChC0lC,EAAY1lC,GAAOglC,GAA8BvR,EAAOzzB,GAAMmV,EACjE,IAECiwB,GAAQhnB,GAAQhM,SAAQ,SAASpS,IAbzB,SAAiByzB,EAAQzzB,GACjC,OAAOulC,GAAmB9R,EAAQzzB,MAC5BwV,OAAO4R,eAAe3sB,KAAKg5B,EAAQzzB,IACpCwV,OAAO+R,qBAAqB9sB,KAAKg5B,EAAQzzB,GAC/C,EAUM2lC,CAAiBlS,EAAQzzB,KAIzBulC,GAAmB9R,EAAQzzB,IAAQmV,EAAQqvB,kBAAkBpmB,EAAOpe,IAC3D0lC,EAAA1lC,GAhDN,SAAiBA,EAAKmV,GAC1B,IAACA,EAAQywB,YACL,OAAAX,GAEJ,IAAAW,EAAczwB,EAAQywB,YAAY5lC,GAC/B,MAAuB,mBAAhB4lC,EAA6BA,EAAcX,EAC1D,CA0CsBY,CAAiB7lC,EAAKmV,EAAtB0wB,CAA+BpS,EAAOzzB,GAAMoe,EAAOpe,GAAMmV,GAE5EuwB,EAAY1lC,GAAOglC,GAA8B5mB,EAAOpe,GAAMmV,GAEjE,IACQuwB,CACR,CAES,SAAAT,GAAUxR,EAAQrV,EAAQjJ,IAClCA,EAAUA,GAAW,IACb2wB,WAAa3wB,EAAQ2wB,YAAcX,GACnChwB,EAAAqvB,kBAAoBrvB,EAAQqvB,mBAAqBA,GAGzDrvB,EAAQ6vB,8BAAgCA,GAEpC,IAAAe,EAAgBzrC,MAAM4jB,QAAQE,GAIlC,OAFgC2nB,IADZzrC,MAAM4jB,QAAQuV,GAKvBsS,EACH5wB,EAAQ2wB,WAAWrS,EAAQrV,EAAQjJ,GAEnCswB,GAAYhS,EAAQrV,EAAQjJ,GAJ5B6vB,GAA8B5mB,EAAQjJ,EAM/C,CAEA8vB,GAAUxlB,IAAM,SAAsB5L,EAAOsB,GAC5C,IAAK7a,MAAM4jB,QAAQrK,GACZ,MAAA,IAAIzY,MAAM,qCAGjB,OAAOyY,EAAMlI,QAAO,SAASguB,EAAM9kB,GAC3B,OAAAowB,GAAUtL,EAAM9kB,EAAMM,EAC7B,GAAE,GACJ,EAEA,IAEA6wB,GAFkBf,GC3HlB,SAASgB,GAASlpC,GAChB,MAA6C,oBAAtCyY,OAAOjb,UAAUH,SAASK,KAAKsC,EACxC,CAEA,SAASmpC,GAAcnpC,GACrB,IAAIopC,EAAKC,EAEL,OAAgB,IAAhBH,GAASlpC,UAIA,KADbopC,EAAOppC,EAAE2V,eAKc,IAAnBuzB,GADJG,EAAOD,EAAK5rC,aAIiC,IAAzC6rC,EAAKhf,eAAe,iBAM1B,CC3BgB,SAAAif,GAAgBlxB,EAA4CmxB,GACxE,IAAKnxB,EACM,OAAAmxB,EAMJrB,OAAAA,GAAUqB,EAAgBnxB,EAAS,CACtC2wB,WAJmB,CAAClkB,EAAc2kB,EAAwBC,IAC1DD,EAIA/B,kBAAmB0B,IAE3B,CCTO,MAAOO,GAAYC,IAAiBtD,GAA0B,CACjEtD,MAAO0D,GAAMmD,MACbC,OAAQnD,GACRoD,aAAc,MAGZC,GAA4B,CAC9B,CAACtD,GAAMmD,OAAQlD,GACf,CAACD,GAAMuD,MJeoC,CAC3CrD,SAAU,CACNC,MAAO,UACPC,MAAO,WAEXC,cAAe,CACXC,WAAY,UACZC,WAAY,WAEhBC,OAAQ,UACRC,KAAM,CACFC,QAAS,UACTC,UAAW,UACXC,SAAU,UACVC,QAAS,UACTntB,MAAO,WAEX4sB,WAAY,CACRI,QAAS,UACTC,UAAW,UACXG,QAAS,WAEbC,KAAM,CACFL,QAAS,UACTC,UAAW,aIpCb6C,GAAiE,CACnE,CAACxD,GAAMmD,YAAQ,EACf,CAACnD,GAAMuD,WAAO,GAGF,SAAAE,GAASnH,EAAcoH,GAC/BA,IACAF,GAAkBxD,GAAMuD,MAAQV,GAC5Ba,EAAU1D,GAAMuD,MAChBC,GAAkBxD,GAAMuD,OAE5BC,GAAkBxD,GAAMmD,OAASN,GAC7Ba,EAAU1D,GAAMmD,OAChBK,GAAkBxD,GAAMmD,SAIlBD,GAAA,CACV5G,QACA8G,OAAQP,GAAaW,GAAkBlH,GAAQgH,GAA0BhH,KAEjF,CCpCO,MAAMqH,GAAkB,UAClBC,GAAqB,oBACrBC,GAAkB,iBAElBC,GAAeA,KACf1sB,SAAAA,KAAKsN,iBAAiB,aAAa,IAAMF,SAASpN,KAAK6e,UAAU7uB,IAAIy8B,MAErEzsB,SAAAA,KAAKsN,iBAAiB,WAAoBlI,IAC7B,QAAdA,EAAMhgB,KACG4a,SAAAA,KAAK6e,UAAUkC,OAAO0L,GACnC,IA2CJE,OAAAA,GAxCe1G,EAAAA;MACbsG;;;;;;;;;;;MAWAA;;;;;MAKAA;;;;MAIAA;;;;MAIAA;;;;WAIKC;;;;;;;WAOAC,MAAmBF;;;EAIZ,CAAA,EAAA,ECtDLK,GAAmB5G,GAAO6G,GAAA;wBACNjV,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWK;ECMnDuD,GAAwClV,IAC7CmV,IAAAA,EAEJ,MAAOxlB,EAAOylB,GAAYxb,GAAsC,MAoBhEmb,OAlBAza,IAAa,KACH+a,MAAAA,EAAM,IAAI/mB,OAAO4mB,MAQvB,OAPAG,EAAIC,IAAMtV,EAAMsV,IACZC,EAAAA,IAAMvV,EAAMuV,KAAO,GACnBlQ,EAAAA,aAAa,YAAa,SAC1BrF,EAAMiE,OACFgD,EAAAA,UAAU7uB,IAAI4nB,EAAMiE,OAGxBoR,EAAIG,SACGJ,EAASC,IAGpBA,EAAI3f,iBAAiB,QAAQ,IAAM0f,EAASC,KAErC,IAAMA,EAAItN,oBAAoB,QAAQ,IAAMqN,EAASC,KAAI,IAGpEN,CAAAA,GAESjS,GAAI,CAACI,WAAI,OAAEvT,GAAO,EAAA+N,eAAA,OAAG/N,GAAO,IAAAolB,GAC5BjS,GAAI,CAACI,WAAI,OAAGvT,GAAO,EAAA+N,eAAA,OAAAqX,GACfC,GAAgB,CAAA/Q,YAAA,OAAQjE,EAAMiE,KAAK,EAAA0B,IAAA8P,sBAAON,IAAMM,GAANN,EAAMM,CAAA,GAAA,IAAA,ECpBjD,SAAAC,GAAKC,EAAcC,GAK/B,MAJiB,MAAbD,EAAM,KACNA,EAfD,SAAkBjf,GACN,MAAXA,EAAI,KACEA,EAAAA,EAAI1uB,MAAM,IAGd,MAAA6tC,EAAS71B,SAAS0W,EAAK,IAK7B,MAAO,CAJImf,GAAU,GAAM,IAChBA,GAAU,EAAK,IACP,IAATA,GAEOtuC,KAAK,IAC1B,CAIgBuuC,CAASH,IAGd,QAAQA,MAAUC,IAC7B,CAEO,SAASG,GAAKn3B,GACV,OAAAA,EAAMhX,WAAa,IAC9B,CCxBO,MAAMouC,WAA0BtzB,EACnCxC,eAAeiD,GACXP,SAASO,GAEFH,OAAAC,eAAehd,KAAM+vC,GAAkBjuC,UAClD,ECDY,SAAAkuC,GAASC,EAAcjV,EAAS,SAC5C,OAAO3S,OAAO3S,KAAKu6B,EAAMjV,EAAQ,sBACrC,CAEO,SAASkV,GAAcD,GAC1BD,GAASC,EAAM,SACnB,CAwBgB,SAAAE,GAAkB7vB,EAAa8vB,GACpC,OAPK,SAAkB9vB,EAAa/Y,EAAaoR,GAClD,MAAA03B,EAAS,IAAIlvB,IAAIb,GAEvB,OADO+vB,EAAAjvB,aAAaC,OAAO9Z,EAAKoR,GACzB03B,EAAO1uC,UAClB,CAGW2uC,CAAkBhwB,EAAK,MAAO8vB,EACzC,CAoCO,SAASG,KACR,GAAwB,oBAAjBlmB,aACP,MAAM,IAAI0lB,GACN,8EAGZ,CAEO,SAAS3nB,KACR,GAAkB,oBAAXC,OACA,OAAAA,MAIf,CCpFO,MAAMmoB,GAAW,CACpBC,OAAQ,IACRC,OAAQ,MAGL,SAASC,GAASniB,GACrB,MAAMnG,EAASD,KACf,IAAKC,EACD,MAAkB,YAAXmG,EAGX,MAAMoiB,EAAQvoB,EAAOwoB,WAErB,OAAQriB,GACJ,IAAK,UACD,OAAOoiB,EAAQJ,GAASE,OAC5B,IAAK,SACD,OAAOE,EAAQJ,GAASC,OAC5B,QAEI,OAAOG,GAASJ,GAASC,OAErC,CAEO,SAASK,GAAMtiB,GAClB,OAAQA,GACJ,IAAK,SACD,MAAO,sBAAsBgiB,GAASC,YAC1C,IAAK,SACM,MAAA,sBAAsBD,GAASE,yBAAyBF,GAASC,YAC5E,QAEI,MAAO,sBAAsBD,GAASE,YAElD,CAcO,MAAMK,GAAa,uBAEbC,GAAgB,mCCjDvBC,GAA8B,CAChClqC,EAAG,QACH5G,EAAG,MACH+wC,KAAM,KAGJC,GAAc,CAChBhxC,EAAG,IACH4G,EAAG,KAGMqqC,GAAejJ,GAAOkJ,MAAA;wBACXtX,GACK,SAArBA,EAAMuX,WAAwB,cAAgB7B,GAAK1V,EAAMsN,MAAO8G,OAAO5C,OAAQ;aAC1ExR,GAASA,EAAMsN,MAAO8G,OAAO5C;;eAEjBxR,GAAqB,SAArBA,EAAMuX,WAAwB,IAAM;;qBAExCvX,GAASkX,GAAQlX,EAAMsN,MAAO+G;cACrCrU,GAAUA,EAAMoJ,SAAW,cAAgB;;;;;;;;MAQnD6N;;4BAGUjX,EAAMoJ,SAAW,QAAU,SAAS,EAAIgO,GAAYpX,EAAMwX;;;;;wBAM9DxX,EAAMoJ,SAAW,QAAU,SAAS,EAAIgO,GAAYpX,EAAMwX;;;MAGhER;;yBAEmBhX,GACTA,EAAMoJ,SAAW,QAAU,SAAS,EAA+B,EAA3BgO,GAAYpX,EAAMwX;;;EC5CnE,SAASC,GAAoCzX,GAChD,MAAM7D,EAAO1C,IAAQ,IAAMzW,OAAOmZ,KAAK6D,GAAOjT,QAAcvf,GAAAA,EAAIkqC,WAAW,cACpEC,GAAatW,GAAWrB,EAAO7D,GAC/B,OAAAwb,CACX,CCUO,MAAMC,GAA0C5X,IAC7C2X,MAAAA,EAAYF,GAAkBzX,GAEpC+U,OAAAA,GACKsC,GAAYQ,GAAA,CACTN,iBAAU,OAAEvX,EAAMuX,YAAc,SAAS,EAAAtT,YAAA,OAClCjE,EAAMiE,KAAK,EAClB6T,QAASplC,UAAKstB,OAAAA,OAAAA,EAAAA,EAAM8X,cAAN9X,EAAAA,EAAAA,KAAgBttB,EAAAA,EAAAA,EAC9BqlC,aAAcrlC,UAAKstB,OAAAA,OAAAA,EAAAA,EAAM+X,mBAAN/X,EAAAA,EAAAA,KAAqBttB,EAAAA,EAAAA,EACxCslC,aAActlC,UAAKstB,OAAAA,OAAAA,EAAAA,EAAMgY,mBAANhY,EAAAA,EAAAA,KAAqBttB,EAAAA,EAAAA,EAAEizB,IAAA8P,GAAA,MAAAwC,EACrCjY,EAAM2F,IAAGsS,mBAAAA,EAAAA,EAAAxC,GAATzV,EAAM2F,IAAG8P,CAAA,EACdrM,eAAQ,OAAEpJ,EAAMoJ,QAAQ,EACxBoO,YAAK,OAAExX,EAAMwX,OAAS,GAAG,EAAA,iBACV,QACXG,EAAS,CAAAja,eAAA,OAEZsC,EAAMtC,QAAQ,IAAA,oCC1B3B,WAGK,IAAAwa,EAAS,CAAE,EAACtjB,eAGhB,SAASkS,IAGR,IAFA,IAAIqR,EAAU,GAEL3xC,EAAI,EAAGA,EAAIkU,UAAU5T,OAAQN,IAAK,CAC1C,IAAIy/B,EAAMvrB,UAAUlU,GACpB,GAAKy/B,EAAL,CAEA,IAAImS,SAAiBnS,EAEjB,GAAY,WAAZmS,GAAoC,WAAZA,EAC3BD,EAAQjxC,KAAK++B,QACH,GAAAn+B,MAAM4jB,QAAQua,IACxB,GAAIA,EAAIn/B,OAAQ,CACf,IAAIuxC,EAAQvR,EAAWrkB,MAAM,KAAMwjB,GAC/BoS,GACHF,EAAQjxC,KAAKmxC,EAEd,OACL,GAA0B,WAAZD,EAAsB,CAChC,GAAInS,EAAIr+B,WAAaob,OAAOjb,UAAUH,WAAaq+B,EAAIr+B,SAASA,WAAWslB,SAAS,iBAAkB,CAC7FirB,EAAAjxC,KAAK++B,EAAIr+B,YACjB,QACA,CAED,IAAA,IAAS4F,KAAOy4B,EACXiS,EAAOjwC,KAAKg+B,EAAKz4B,IAAQy4B,EAAIz4B,IAChC2qC,EAAQjxC,KAAKsG,EAGf,CAxBS,CAyBV,CAEM,OAAA2qC,EAAQ5wC,KAAK,IACpB,CAEoCc,EAAOD,SAC3C0+B,EAAWwR,QAAUxR,EACrBz+B,EAAAD,QAAiB0+B,GAOjBxY,OAAOwY,WAAaA,EAlDtB,4BCLA,SAASyR,GAAU36B,GACjB46B,uBAAsB,KACpBA,sBAAsB56B,EAAE,GAE5B,CAEA,MAAMob,GAAsBgH,IACtB,IAAAiL,EACAwN,GAAQ,EACZ,MAAOC,EAAIC,GAAQ/e,MACZgf,EAAIC,GAAQjf,KACbsB,EAAWwC,IAAS,IAAMsC,EAAMtC,YAChCob,cACJA,EAAAC,QACAA,EAAAC,aACAA,EAAAC,aACAA,EAAAC,OACAA,EAAAC,YACAA,GACEnZ,EACEoZ,EAAa3e,IAAW,KACtB,MAAA3X,EAAOkd,EAAMld,MAAQ,IACpB,MAAA,CACLu2B,iBAAkBrZ,EAAMqZ,kBAAoBv2B,EAAO,gBACnDw2B,WAAYtZ,EAAMsZ,YAAcx2B,EAAO,SACvCy2B,aAAcvZ,EAAMuZ,cAAgBz2B,EAAO,YAC3C02B,gBAAiBxZ,EAAMwZ,iBAAmB12B,EAAO,eACjD22B,UAAWzZ,EAAMyZ,WAAa32B,EAAO,QACrC42B,YAAa1Z,EAAM0Z,aAAe52B,EAAO,WAC/C,IAGW,SAAA62B,EAAgB1O,EAAI9D,GACvB,IAACsR,GAASzY,EAAM4Z,OAAQ,CAkBjB,IAAAC,EAAT,SAAuBnnC,IACjBu4B,GAAQv4B,GAAKA,EAAEuuB,SAAWgK,IAC5BA,EAAGlD,oBAAoB,gBAAiB8R,GACxC5O,EAAGlD,oBAAoB,eAAgB8R,GACvC5O,EAAGhE,UAAUkC,UAAU2Q,GACvB7O,EAAGhE,UAAUkC,UAAU4Q,GACvB7c,IAAM,WACK+N,GAAM0N,EAAK1N,SACXA,GAAM4N,OAAK,EAAS,IAE/BG,GAAgBA,EAAa/N,GACV,UAAfjL,EAAMgM,MAAkBgO,EAAe/O,EAAI9D,GAElD,EA9BD,MAAM8S,EAAeb,IAAaE,WAAW1iB,MAAM,KAC7CkjB,EAAqBV,IAAaC,iBAAiBziB,MAAM,KACzDmjB,EAAiBX,IAAaG,aAAa3iB,MAAM,KACvDkiB,GAAiBA,EAAc7N,GAC/BA,EAAGhE,UAAU7uB,OAAO6hC,GACpBhP,EAAGhE,UAAU7uB,OAAO0hC,GACpBvB,IAAU,KACRtN,EAAGhE,UAAUkC,UAAU8Q,GACvBhP,EAAGhE,UAAU7uB,OAAO2hC,GACpBhB,GAAWA,EAAQ9N,GAAI,IAAM4O,QAExBd,GAAWA,EAAQjyC,OAAS,KAC/BmkC,EAAGvV,iBAAiB,gBAAiBmkB,GACrC5O,EAAGvV,iBAAiB,eAAgBmkB,GACrC,GAiBJ,CAED1S,IAASnH,EAAMgM,KAAO6M,EAAK5N,GAAM0N,EAAK1N,EACvC,CAEQ,SAAA+O,EAAe/O,EAAI9D,GAC1B,MAAM+S,EAAcd,IAAaK,UAAU7iB,MAAM,KAC3CujB,EAAoBf,IAAaI,gBAAgB5iB,MAAM,KACvDwjB,EAAgBhB,IAAaM,YAAY9iB,MAAM,KACrD,IAAKuQ,EAAKoC,WAAY,OAAOsQ,IAe7B,SAASA,EAAcnnC,GAChBA,GAAKA,EAAEuuB,SAAWkG,IAChBA,EAAAY,oBAAoB,gBAAiB8R,GACrC1S,EAAAY,oBAAoB,eAAgB8R,GACpC1S,EAAAF,UAAUkC,UAAUgR,GACpBhT,EAAAF,UAAUkC,UAAUiR,SAChBjT,GAAQwR,OAAK,GACtBQ,GAAeA,EAAYhS,GACR,UAAfnH,EAAMgM,MAAkB2N,EAAgB1O,EAAI9D,GAEnD,CAxBD8R,GAAgBA,EAAa9R,GACxBA,EAAAF,UAAU7uB,OAAO8hC,GACjB/S,EAAAF,UAAU7uB,OAAO+hC,GACtB5B,IAAU,KACHpR,EAAAF,UAAUkC,UAAU+Q,GACpB/S,EAAAF,UAAU7uB,OAAOgiC,EAAa,IAErClB,GAAUA,EAAO/R,GAAM,IAAM0S,QAExBX,GAAUA,EAAOpyC,OAAS,KACxBqgC,EAAAzR,iBAAiB,gBAAiBmkB,GAClC1S,EAAAzR,iBAAiB,eAAgBmkB,GAczC,CAiBM,OAfP3f,IAAuBiN,IAGrB,IAFA8D,EAAK/P,IAEgB,mBAAP+P,GAAmBA,EAAKA,IAEtC,OAAOxR,IAAQ,KACTwR,GAAMA,IAAO9D,IACI,UAAfnH,EAAMgM,KAAkB2N,EAAgB1O,EAAI9D,GAAesR,GAAOE,EAAK1N,IAGzE9D,GAAQA,IAAS8D,GAAqB,UAAfjL,EAAMgM,MAAkBgO,EAAe/O,EAAI9D,GAC9DsR,GAAA,EACDxN,IACR,IAEI,CAACyN,EAAIE,EAAE,EAGhB,SAASyB,GAAQrU,GACT,MAAAsU,IACJA,EAAAC,OACAA,EAAAC,KACAA,EAAAC,MACAA,EAAA5D,MACAA,EAAA6D,OACAA,GACE1U,EAAQ2U,wBACNC,EAAa5U,EAAQuD,WAAWoR,wBAC/B,MAAA,CACLL,IAAKA,EAAMM,EAAWN,IACtBC,SACAC,KAAMA,EAAOI,EAAWJ,KACxBC,QACA5D,QACA6D,SAEJ,CAEA,MAAMG,GAA2B7a,IAC/B,MAAM9E,EAAWwC,IAAS,IAAMsC,EAAMtC,WAChC0b,EAAa3e,IAAW,KACtB,MAAA3X,EAAOkd,EAAMld,MAAQ,IACpB,MAAA,CACLu2B,iBAAkBrZ,EAAMqZ,kBAAoBv2B,EAAO,gBACnDw2B,WAAYtZ,EAAMsZ,YAAcx2B,EAAO,SACvCy2B,aAAcvZ,EAAMuZ,cAAgBz2B,EAAO,YAC3C02B,gBAAiBxZ,EAAMwZ,iBAAmB12B,EAAO,eACjD22B,UAAWzZ,EAAMyZ,WAAa32B,EAAO,QACrC42B,YAAa1Z,EAAM0Z,aAAe52B,EAAO,WACzCg4B,UAAW9a,EAAM8a,WAAah4B,EAAO,QAC3C,KAEQg2B,cACJA,EAAAC,QACAA,EAAAC,aACAA,EAAAC,aACAA,EAAAC,OACAA,EAAAC,YACAA,GACEnZ,GACG+a,EAAUC,GAAephB,KAChC,IAAIpvB,EAAI,GACJiuC,GAAQ,EAuJL,OAtJPve,IAAe,KACb,MAAM5vB,EAAI4wB,IACJ+f,EAAO,IAAI3wC,GACX+X,EAAO,IAAI6P,IAAI5nB,GACf68B,EAAO,IAAIjV,IAAI1nB,GACfyvC,EAAeb,IAAaE,WAAW1iB,MAAM,KAC7CkjB,EAAqBV,IAAaC,iBAAiBziB,MAAM,KACzDmjB,EAAiBX,IAAaG,aAAa3iB,MAAM,KACjDsjB,EAAcd,IAAaK,UAAU7iB,MAAM,KAC3CujB,EAAoBf,IAAaI,gBAAgB5iB,MAAM,KACvDwjB,EAAgBhB,IAAaM,YAAY9iB,MAAM,KAErD,IAAA,IAASpwB,EAAI,EAAGA,EAAI8D,EAAExD,OAAQN,IAAK,CACjC,MAAMykC,EAAK3gC,EAAE9D,GAEb,IAAKiyC,IAAUtR,EAAK3K,IAAIyO,GAAK,CAelB,IAAA4O,EAAT,SAAuBnnC,IACjBu4B,GAAQv4B,GAAKA,EAAEuuB,SAAWgK,IACzBA,EAAAlD,oBAAoB,gBAAiB8R,GACrC5O,EAAAlD,oBAAoB,eAAgB8R,GACpC5O,EAAAhE,UAAUkC,UAAU2Q,GACpB7O,EAAAhE,UAAUkC,UAAU4Q,GACvBf,GAAgBA,EAAa/N,GAEhC,EAtBD6N,GAAiBA,EAAc7N,GAC5BA,EAAAhE,UAAU7uB,OAAO6hC,GACjBhP,EAAAhE,UAAU7uB,OAAO0hC,GACpBvB,IAAU,KACLtN,EAAAhE,UAAUkC,UAAU8Q,GACpBhP,EAAAhE,UAAU7uB,OAAO2hC,GACpBhB,GAAWA,EAAQ9N,GAAI,IAAM4O,QAExBd,GAAWA,EAAQjyC,OAAS,KAC5BmkC,EAAAvV,iBAAiB,gBAAiBmkB,GAClC5O,EAAAvV,iBAAiB,eAAgBmkB,GACrC,GAYJ,CACF,CAED,IAAA,IAASrzC,EAAI,EAAGA,EAAIgE,EAAE1D,OAAQN,IAAK,CACjC,MAAM00C,EAAM1wC,EAAEhE,GAEd,IAAK6b,EAAKma,IAAI0e,IAAQA,EAAI3R,WAAY,CAgB3B,IAAAsQ,EAAT,SAAuBnnC,GAChBA,GAAKA,EAAEuuB,SAAWia,IACjBA,EAAAnT,oBAAoB,gBAAiB8R,GACrCqB,EAAAnT,oBAAoB,eAAgB8R,GACpCqB,EAAAjU,UAAUkC,UAAUgR,GACpBe,EAAAjU,UAAUkC,UAAUiR,GACxBjB,GAAeA,EAAY+B,GAC3B1wC,EAAIA,EAAEuiB,QAAOvmB,GAAKA,IAAM00C,IACxBF,EAAYxwC,GAEf,EAzBIywC,EAAAE,OAAO30C,EAAG,EAAG00C,GAClBjC,GAAgBA,EAAaiC,GACzBA,EAAAjU,UAAU7uB,OAAO8hC,GACjBgB,EAAAjU,UAAU7uB,OAAO+hC,GACrB5B,IAAU,KACJ2C,EAAAjU,UAAUkC,UAAU+Q,GACpBgB,EAAAjU,UAAU7uB,OAAOgiC,EAAa,IAEpClB,GAAUA,EAAOgC,GAAK,IAAMrB,QAEvBX,GAAUA,EAAOpyC,OAAS,KACzBo0C,EAAAxlB,iBAAiB,gBAAiBmkB,GAClCqB,EAAAxlB,iBAAiB,eAAgBmkB,GAcxC,CACF,CAEDrvC,EAAIywC,EACJD,EAAYC,EAAI,IAElB3gB,IAAsBqV,IACpB,MAAMrlC,EAAIywC,IA2BV,OA1BAzwC,EAAEsV,SAAiBujB,IACbp5B,IAAAA,GAEEA,EAAI4lC,EAAMtiB,IAAI8V,IAKTp5B,EAAEqxC,MACXrxC,EAAEqxC,KAAM,EACRrxC,EAAEsxC,OAAShB,GAAQlX,IANbwM,EAAA3uB,IAAImiB,EAAOp5B,EAAI,CACnBmO,IAAKmiC,GAAQlX,GACbiY,KAAM3C,IAON1uC,EAAEqxC,KACEjY,EAAAzN,iBAAiB,iBAAiB,KACtC3rB,EAAEqxC,KAAM,EACRjY,EAAMoG,aAAex/B,EAAEsxC,OAAShB,GAAQlX,GAAK,GAC5C,CACDmY,MAAM,IAIVvxC,EAAEsxC,SAAWtxC,EAAEmO,IAAMnO,EAAEsxC,QACvBtxC,EAAEsxC,OAAShB,GAAQlX,EAAK,IAGtBsV,GACMA,GAAA,EACD9I,IAGTrlC,EAAEsV,SAAiBujB,IACX74B,MAAAA,EAAIqlC,EAAMtiB,IAAI8V,GACdoY,EAASjxC,EAAE4N,IACXmjC,EAAS/wC,EAAE+wC,OACXG,EAAKD,EAAOf,KAAOa,EAAOb,KAC1BiB,EAAKF,EAAOjB,IAAMe,EAAOf,IAE/B,GAAIkB,GAAMC,EAAI,CACZnxC,EAAEoxC,OAAQ,EACV,MAAMt1C,EAAI+8B,EAAMqE,MAChBphC,EAAEu1C,UAAY,aAAaH,OAAQC,OACnCr1C,EAAEw1C,mBAAqB,IACxB,KAEHpmB,SAASpN,KAAKyzB,aACdvxC,EAAEsV,SAAiBujB,IACX74B,MAAAA,EAAIqlC,EAAMtiB,IAAI8V,GAEpB,GAAI74B,EAAEoxC,MAAO,CAOF,IAAA7B,EAAT,SAAuBnnC,GACjBA,GAAKA,EAAEuuB,SAAWkC,IAAUA,EAAMoG,YAEjC72B,IAAK,aAAarM,KAAKqM,EAAEopC,gBACtB3Y,EAAA4E,oBAAoB,gBAAiB8R,GACrC1W,EAAA8D,UAAUkC,UAAU4S,GAE7B,EAbDzxC,EAAEoxC,OAAQ,EACV,MAAMt1C,EAAI+8B,EAAMqE,MACVuU,EAAc3C,IAAa0B,UAAUlkB,MAAM,KAC3CuM,EAAA8D,UAAU7uB,OAAO2jC,GACvB31C,EAAEu1C,UAAYv1C,EAAEw1C,mBAAqB,GAW/BzY,EAAAzN,iBAAiB,gBAAiBmkB,EACzC,KAEIlK,EAAA,GACF,IAAA3kB,KACA+vB,CAAA,yJCpTHiB,GAAkB,CACpBxB,KAAM,EACNF,IAAK,GACLG,MAAO,IACPF,OAAQ,KAGC0B,GAAgDjc,IACzD,MAAMsN,EAAQC,KASd,OAAAwH,GALY3G,GAAO,MAAK;4BACApO,GAASgc,GAAgBhc,EAAMkc;;MAK/C,CACArF,MAAM,KACN6D,OAAO,KACPyB,QAAQ,YACRC,KAAK,OACLC,MAAM,6BACNH,mBAAY,OAdyClc,EAAMsc,WAAa,MAc/C,EAAA5e,eAAA6e,MAAAA,EAAAC,GAAA5V,WAAA,GAIP2V,OAJOE,QAAAC,GAAAH,EAAA,SAfEvc,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAKE,aAmBzC4K,CAAA,GAAA,0TC7BjBI,GAAgD3c,IACzD,MAAMsN,EAAQC,KAGd,MAAA,MAAA,MAAAgP,EAAAC,GAAA5V,WAAA,GAAAgW,EAAAL,EAAAnX,WAU0BmX,OAV1BE,QAAAC,GAAAE,EAAA,SAF2B5c,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAKE,aAYjC4K,GAV1B,ICTSM,GAAmBzO,GAAOkJ,MAAA;;;;;;;;wBAQNtX,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWK;;;;;;MAM1DsF;;;;;;;;;;MAUAD;;;;;ECXO8F,GAAkD9c,IACrD2X,MAAAA,EAAYF,GAAkBzX,GAC9ByR,EAAOA,IAAyBzR,EAAMyR,MAAQ,QACpDsD,OAAAA,GACK8H,GAAgBhF,GAAA,CAAA5T,YAAA,OACNjE,EAAMiE,KAAK,EAClB6T,QAASA,IAAM9X,EAAM8X,UAAS,sBACV,QAChBH,EAAS,CAAAja,eAAAqX,MAAAA,CAAAA,GAEZjS,GAAI,CAACI,WAAM,QAAElD,EAAMtC,QAAQ,EAAAA,eAAA,OAAGsC,EAAMtC,QAAQ,IAAAqX,GAC5CjS,GAAI,CAACI,WAAI,OAAGlD,EAAMtC,QAAQ,EAAAA,eAAA,OAAAqX,GACtB3R,GAAM,CAAA1F,eAAAqX,MAAAA,CAAAA,GACFtR,GAAK,CAACP,WAAI,MAAa,UAAXuO,GAAkB,EAAA/T,eAAA,OAAAqX,GAC1B4H,GAAS,CAACP,WAAI,OAAEpc,EAAMoc,IAAI,GAAA,IAAArH,GAE9BtR,GAAK,CAACP,WAAI,MAAa,UAAXuO,GAAkB,EAAA/T,eAAA,OAAAqX,GAC1BkH,GAAS,CAACG,WAAI,OAAEpc,EAAMoc,IAAI,GAAA,IAAA,GAAA,IAAA,IAAA,EC7BtCW,GAAwB3O,GAAO6G,GAAA;;;;;;;;;;;;MAYtC8B,GAAM;;;;yBAIaN,GAASC,OAAO9uC;;;;;EAO5Bo1C,GAAoBnP,EAAAA;;;;;;;MAO3BkJ,GAAM;;;EAKCkG,GAAoB7O,GAAO0O,GAAU;;;;uBC1B5CI,GCXkBA,SAAajS,EAAa7E,GACxC0R,MAAAA,EAAWplC,UAA8Bu4B,OAAAA,EAAGkS,SAASzqC,EAAEuuB,UAAmBmF,OAAAA,EAAAA,UAAAA,EAAAA,IAAAA,EACvEhe,SAAAA,KAAKsN,iBAAiB,QAASoiB,GAExC3a,IAAU,IAAM3H,SAASpN,KAAK2f,oBAAoB,QAAS+P,IAC/D,EDOMsF,GEZkBC,SAAWjuB,EAAYgX,GACrCkX,MAAAA,EAAc5qC,YACiB,WAA5BA,EAAoBlF,MACpBgoB,OAAAA,EAAAA,SAAS+nB,gBAAT/nB,EAAwCgoB,OACzCpX,OAAAA,EAAAA,MAAAA,IACJ,EAEKhe,SAAAA,KAAKsN,iBAAiB,UAAW4nB,GAE1CngB,IAAU,IAAM3H,SAASpN,KAAK2f,oBAAoB,UAAWuV,IACjE,EFIMpG,GAA8B,CAChClqC,EAAG,OACH5G,EAAG,OACH+wC,KAAM,KASGsG,GAAwCzd,IACjD,MAAMsN,EAAQC,KACRoK,EAAYF,GAAkBzX,GAUpC,OARA1F,IAAa,KACL0F,EAAM0d,OZQVloB,SAASmoB,gBAAgBC,eAAiBpoB,SAASmoB,gBAAgBE,eAIvEroB,SAASpN,KAAKof,MAAM8S,IAAMvE,IAAMvgB,SAASmoB,gBAAgBG,WAChDtoB,SAAApN,KAAK6e,UAAU7uB,IAAIw8B,MAInBpf,SAAApN,KAAK6e,UAAUkC,OAAOyL,IAC/Bpf,SAASmoB,gBAAgBI,SAAS,CAAEzD,KAAM0D,WAAWC,iBAAiBzoB,SAASpN,MAAMkyB,OAC5E9kB,SAAApN,KAAKof,MAAM8S,IAAM,OYftB,IAGJvF,GACK/b,GAAU,CACP8f,cAAqB7N,IACjB,MAAMiT,EAAWtH,GAAS,UAAY,IAAM,IAE5C3L,EAAGkT,QAAQ,CAAC,CAAEvI,QAAS,GAAK,CAAEA,QAAS,IAAM,CACzCsI,aAGAtH,GAAS,WACNwH,EAAAA,kBAAmBD,QAClB,CAAC,CAAExC,UAAW,qBAAuB,CAAEA,UAAW,kBAClD,CACIuC,YAGZ,EAEJhF,OAAQA,CAACjO,EAAI1oB,KACT,MAAM27B,EAAWtH,GAAS,UAAY,IAAM,IAEtCyH,EAAsBpT,EAAGkT,QAAQ,CAAC,CAAEvI,QAAS,GAAK,CAAEA,QAAS,IAAM,CACrEsI,aAGAtH,GAAAA,GAAS,UAAW,CACpB,MAAM0H,EAAmBrT,EAAGmT,kBAAmBD,QAC3C,CAAC,CAAExC,UAAW,iBAAmB,CAAEA,UAAW,sBAC9C,CACIuC,aAIAjxB,QAAAA,IAAI,CAACoxB,EAAoBE,SAAUD,EAAiBC,WAAW/7B,KACnED,EAER,MACwBg8B,EAAAA,SAAS/7B,KAAKD,EACtC,EACHmb,eAAA,OAAAqX,GAEAjS,GAAI,CAACI,WAAI,OAAElD,EAAM0d,MAAM,EAAAhgB,eAAAqX,OAAAA,GACnBgI,GAAqBlF,GAAA,CAAA,gBAAe,QAAWF,EAAS,CAAAja,eAAA6e,MAAAA,EAAAC,GAAA5V,WAAA,GAchD2V,OAdgDiC,GAgB7CpB,GAAUb,OAAE,IAAMvc,EAAMye,YAASD,GADjCtB,GAAYX,OAAE,IAAMvc,EAAMye,YAASlC,GAAAA,EAAAxH,GAGtCkI,GAAiB,CAACxL,KAAK,QAAQqG,QAASA,IAAM9X,EAAMye,YAAS,MAAAC,GAAAnC,GAC7Dvc,IAAAA,EAAMtC,UAAQ,MAAA+e,IAAAkC,IAAAA,GAAApC,EAjBRqC,GACH5B,GACAhd,EAAMiE,MACN4J,EAAAA;oDACwBP,EAAM8G,OAAO9C,WAAWI;iDAC3BwF,GAAQ5J,EAAM+G;;kCAE7B0C,GAAM;qDACaG,GAAQ5J,EAAM+G;0CACzB6C,GAAQ5J,EAAM+G;;kCAG/BkI,CAAA,IAAA,GAAA,GAAA,EG7FnBsC,GAA0C,CAC5C7xC,EAAG,OACH5G,EAAG,OACH+wC,KAAM,KAGJ2H,GAAyC,CAC3C9xC,EAAG,OACH5G,EAAG,MACH+wC,KAAM,KAGG4H,GAAe3Q,GAAO6G,GAAA;;;;;;;;;qBASdjV,GAAS6e,GAAoB7e,EAAMsN,MAAO+G;;wBAE9BrU,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWK;EAGnDqN,GAAe5Q,GAAO6G,GAAA;;;;;;;;qBAQdjV,GAAS8e,GAAmB9e,EAAMsN,MAAO+G;wBAC7BrU,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWQ;;iBAE/C9R,GAAUA,EAAMya,MAAQ,mBAAqB;;;EAKjDwE,GAAc7Q,GAAO8Q,KAAA;;EAIrBC,GAAc/Q,GAAOgR,KAAA;;;;cAIpBpf,GAAUA,EAAMqf,SAAW,UAAY;;;;;qBAKhCrf,GAAUA,EAAMqf,SAAW,OAAS;;;;UAI/Crf,GAAWA,EAAMqf,SAA6D,GAAlD,UAAUrf,EAAMsN,MAAO8G,OAAOrC,KAAKJ;;ECzDnEuF,GAA8B,CAChClqC,EAAG,OACH5G,EAAG,MACH+wC,KAAM,KAUGmI,GAAmBlR,GAAO6G,GAAA;;;;wBAINjV,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWK;qBAC3C3R,GAASkX,GAAQlX,EAAMsN,MAAO+G;eACpC0B,GARM;cASPA,GAAKwJ;;;;EAMNC,GAAgBpR,GAAO6G,GAAA;;;;;;;;;;;;;;;;;gBAiBXjV,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKL;;EAIrC+N,GAAkBrR,GAAO6G,GAAA;;aAEzBc,GA1CiB;cA2ChBA,GA3CgB;kBA4CH/V,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWK;;;;;EAO7C+N,GAActR,GAAO8G,GAAK;aAC1BlV,GAAS+V,GAAK/V,EAAM2f;cACnB3f,GAAS+V,GAAK/V,EAAM2f;;EAIrBC,GAAmBxR,GAAOwJ,GAAM;;;;;;;;wBAQZ5X,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWQ;aAC1C9R,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKL;;;;;;;;;qCC7D/C,IAAImO,EAAS,WAWPA,IAAAA,EAAS,SAASC,EAAYC,GAEhC,IAGIC,EAAcF,EACdG,EAAwBC,EAAuBH,GAC/CI,EAAW,KACXC,EAAe,EACfC,EAAa,KACbC,EAAY,GAEZC,EAAQ,CAAA,EAERC,EAAW,SAASn6C,EAAMo6C,GAG5BN,EAAW,SAASO,GAElB,IADI,IAAAC,EAAU,IAAI74C,MAAM44C,GACfE,EAAM,EAAGA,EAAMF,EAAaE,GAAO,EAAG,CACrCD,EAAAC,GAAO,IAAI94C,MAAM44C,GACzB,IAAA,IAASG,EAAM,EAAGA,EAAMH,EAAaG,GAAO,EAC1CF,EAAQC,GAAKC,GAAO,IAEvB,CACM,OAAAF,CACR,CATU,CADXP,EAA6B,EAAdJ,EAAkB,IAYjCc,EAA0B,EAAG,GACHA,EAAAV,EAAe,EAAG,GAClBU,EAAA,EAAGV,EAAe,WAG5CW,EAAc16C,EAAMo6C,GAEhBT,GAAe,GACjBgB,EAAgB36C,GAGA,MAAdg6C,IACWA,EAAAY,EAAWjB,EAAaC,EAAuBK,IAG9DY,EAAQb,EAAYI,EAC1B,EAEQK,EAA4B,SAASF,EAAKC,GAE5C,IAAA,IAASp4C,GAAI,EAAIA,GAAK,EAAGA,GAAK,EAE5B,KAAIm4C,EAAMn4C,IAAW,GAAA23C,GAAgBQ,EAAMn4C,GAE3C,IAAA,IAAS6B,GAAI,EAAIA,GAAK,EAAGA,GAAK,EAExBu2C,EAAMv2C,IAAW,GAAA81C,GAAgBS,EAAMv2C,IAKhC61C,EAAAS,EAAMn4C,GAAGo4C,EAAMv2C,GAHpB,GAAK7B,GAAKA,GAAK,IAAW,GAAL6B,GAAe,GAALA,IAC7B,GAAKA,GAAKA,GAAK,IAAW,GAAL7B,GAAe,GAALA,IAC/B,GAAKA,GAAKA,GAAK,GAAK,GAAK6B,GAAKA,GAAK,EAOrD,EAsBQ62C,EAAqB,WAEvB,IAAA,IAAS14C,EAAI,EAAGA,EAAI23C,EAAe,EAAG33C,GAAK,EACnB,MAAlB03C,EAAS13C,GAAG,KAGP03C,EAAA13C,GAAG,GAAMA,EAAI,GAAK,GAG7B,IAAA,IAAS6B,EAAI,EAAGA,EAAI81C,EAAe,EAAG91C,GAAK,EACnB,MAAlB61C,EAAS,GAAG71C,KAGP61C,EAAA,GAAG71C,GAAMA,EAAI,GAAK,EAEnC,EAEQ82C,EAA6B,WAI/B,IAFI,IAAAlpC,EAAMmpC,EAAOC,mBAAmBtB,GAE3Bx5C,EAAI,EAAGA,EAAI0R,EAAIpR,OAAQN,GAAK,EAEnC,IAAA,IAASgJ,EAAI,EAAGA,EAAI0I,EAAIpR,OAAQ0I,GAAK,EAAG,CAEtC,IAAIoxC,EAAM1oC,EAAI1R,GACVq6C,EAAM3oC,EAAI1I,GAEV,GAAsB,MAAtB2wC,EAASS,GAAKC,GAIlB,IAAA,IAASp4C,GAAI,EAAIA,GAAK,EAAGA,GAAK,EAE5B,IAAA,IAAS6B,GAAI,EAAIA,GAAK,EAAGA,GAAK,EAIjB61C,EAAAS,EAAMn4C,GAAGo4C,EAAMv2C,IAFX,GAAX7B,GAAgB,GAALA,IAAqB6B,GAAXA,GAAgB,GAALA,GACvB,GAAL7B,GAAe,GAAL6B,CAOvB,CAET,EAEQ02C,EAAkB,SAAS36C,GAI7B,IAFI,IAAAk7C,EAAOF,EAAOG,iBAAiBxB,GAE1Bx5C,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,IAAIi7C,GAAQp7C,GAA8B,IAAnBk7C,GAAQ/6C,EAAK,GAC3B25C,EAAAjxC,KAAKC,MAAM3I,EAAI,IAAIA,EAAI,EAAI45C,EAAe,EAAI,GAAKqB,CAC7D,CAED,IAASj7C,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC1Bi7C,GAAQp7C,GAA8B,IAAnBk7C,GAAQ/6C,EAAK,GAC3BA,EAAAA,EAAI,EAAI45C,EAAe,EAAI,GAAGlxC,KAAKC,MAAM3I,EAAI,IAAMi7C,CAC7D,CACP,EAEQV,EAAgB,SAAS16C,EAAMo6C,GAMjC,IAJI,IAAAx3B,EAAQg3B,GAAyB,EAAKQ,EACtCc,EAAOF,EAAOK,eAAez4B,GAGxBziB,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAE9B,IAAIi7C,GAAQp7C,GAA8B,IAAnBk7C,GAAQ/6C,EAAK,GAEhCA,EAAI,EACN25C,EAAS35C,GAAG,GAAKi7C,EACRj7C,EAAI,EACJA,EAAAA,EAAI,GAAG,GAAKi7C,EAEZtB,EAAAC,EAAe,GAAK55C,GAAG,GAAKi7C,CAExC,CAGD,IAASj7C,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAE1Bi7C,GAAQp7C,GAA8B,IAAnBk7C,GAAQ/6C,EAAK,GAEhCA,EAAI,EACG25C,EAAA,GAAGC,EAAe55C,EAAI,GAAKi7C,EAC3Bj7C,EAAI,EACb25C,EAAS,GAAG,GAAK35C,EAAI,EAAI,GAAKi7C,EAErBtB,EAAA,GAAG,GAAK35C,EAAI,GAAKi7C,CAE7B,CAGQtB,EAAAC,EAAe,GAAG,IAAO/5C,CACxC,EAEQ66C,EAAU,SAASj4B,EAAMw3B,GAQ3B,IANA,IAAIkB,GAAM,EACNf,EAAMR,EAAe,EACrBwB,EAAW,EACXC,EAAY,EACZC,EAAWT,EAAOU,gBAAgBtB,GAE7BI,EAAMT,EAAe,EAAGS,EAAM,EAAGA,GAAO,EAI/C,IAFW,GAAPA,IAAiBA,GAAA,KAER,CAEX,IAAA,IAASv2C,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAE1B,GAA8B,MAA1B61C,EAASS,GAAKC,EAAMv2C,GAAY,CAElC,IAAI03C,GAAO,EAEPH,EAAY54B,EAAKniB,SACPk7C,EAAsC,IAAtC/4B,EAAK44B,KAAeD,EAAY,IAGnCE,EAASlB,EAAKC,EAAMv2C,KAG7B03C,GAAQA,GAGD7B,EAAAS,GAAKC,EAAMv2C,GAAK03C,GAGL,IAFRJ,GAAA,KAGGC,GAAA,EACFD,EAAA,EAEd,CAKC,IAFGhB,GAAAe,GAEG,GAAKvB,GAAgBQ,EAAK,CAC3BA,GAAAe,EACPA,GAAOA,EACP,KACD,CACF,CAET,EAmEQV,EAAa,SAASnB,EAAYC,EAAsBkC,GAM1D,IAJA,IAAIC,EAAWC,EAAUC,YAAYtC,EAAYC,GAE7C9xC,EAASo0C,IAEJ77C,EAAI,EAAGA,EAAIy7C,EAASn7C,OAAQN,GAAK,EAAG,CAC3C,IAAIyiB,EAAOg5B,EAASz7C,GACpByH,EAAOq0C,IAAIr5B,EAAKs5B,UAAW,GACpBt0C,EAAAq0C,IAAIr5B,EAAKu5B,YAAanB,EAAOoB,gBAAgBx5B,EAAKs5B,UAAWzC,IACpE72B,EAAKy5B,MAAMz0C,EACZ,CAGD,IAAI00C,EAAiB,EACrB,IAASn8C,EAAI,EAAGA,EAAI07C,EAASp7C,OAAQN,GAAK,EACxCm8C,GAAkBT,EAAS17C,GAAGo8C,UAGhC,GAAI30C,EAAOw0C,kBAAqC,EAAjBE,EAC7B,KAAM,0BACF10C,EAAOw0C,kBACP,IACiB,EAAjBE,EACA,IASN,IALI10C,EAAOw0C,kBAAoB,GAAsB,EAAjBE,GAC3B10C,EAAAq0C,IAAI,EAAG,GAITr0C,EAAOw0C,kBAAoB,GAAK,GACrCx0C,EAAO40C,QAAO,GAIhB,OAEM50C,EAAOw0C,mBAAsC,EAAjBE,IAGzB10C,EAAAq0C,IAxVA,IAwVU,GAEbr0C,EAAOw0C,mBAAsC,EAAjBE,KAGzB10C,EAAAq0C,IA5VA,GA4VU,GAGZ,OApHS,SAASr0C,EAAQi0C,GAUjC,IARA,IAAIY,EAAS,EAETC,EAAa,EACbC,EAAa,EAEbC,EAAS,IAAIn7C,MAAMo6C,EAASp7C,QAC5Bo8C,EAAS,IAAIp7C,MAAMo6C,EAASp7C,QAEvB2B,EAAI,EAAGA,EAAIy5C,EAASp7C,OAAQ2B,GAAK,EAAG,CAEvC,IAAA06C,EAAUjB,EAASz5C,GAAGm6C,UACtBQ,EAAUlB,EAASz5C,GAAG46C,WAAaF,EAE1BJ,EAAA7zC,KAAKo0C,IAAIP,EAAYI,GACrBH,EAAA9zC,KAAKo0C,IAAIN,EAAYI,GAE3BH,EAAAx6C,GAAK,IAAIX,MAAMq7C,GAEtB,IAAA,IAAS38C,EAAI,EAAGA,EAAIy8C,EAAOx6C,GAAG3B,OAAQN,GAAK,EACzCy8C,EAAOx6C,GAAGjC,GAAK,IAAOyH,EAAOs1C,YAAY/8C,EAAIs8C,GAErCA,GAAAK,EAEN,IAAAK,EAASnC,EAAOoC,0BAA0BL,GAG1CM,EAFUC,EAAaV,EAAOx6C,GAAI+6C,EAAOhB,YAAc,GAErCf,IAAI+B,GAE1B,IADAN,EAAOz6C,GAAK,IAAIX,MAAM07C,EAAOhB,YAAc,GAClCh8C,EAAI,EAAGA,EAAI08C,EAAOz6C,GAAG3B,OAAQN,GAAK,EAAG,CAC5C,IAAIo9C,EAAWp9C,EAAIk9C,EAAQlB,YAAcU,EAAOz6C,GAAG3B,OACnDo8C,EAAOz6C,GAAGjC,GAAMo9C,GAAY,EAAIF,EAAQG,MAAMD,GAAY,CAC3D,CACF,CAED,IAAIE,EAAiB,EACrB,IAASt9C,EAAI,EAAGA,EAAI07C,EAASp7C,OAAQN,GAAK,EACxCs9C,GAAkB5B,EAAS17C,GAAG68C,WAG5B,IAAAp6B,EAAO,IAAInhB,MAAMg8C,GACjBxiC,EAAQ,EAEZ,IAAS9a,EAAI,EAAGA,EAAIu8C,EAAYv8C,GAAK,EACnC,IAASiC,EAAI,EAAGA,EAAIy5C,EAASp7C,OAAQ2B,GAAK,EACpCjC,EAAIy8C,EAAOx6C,GAAG3B,SACXmiB,EAAA3H,GAAS2hC,EAAOx6C,GAAGjC,GACf8a,GAAA,GAKf,IAAS9a,EAAI,EAAGA,EAAIw8C,EAAYx8C,GAAK,EACnC,IAASiC,EAAI,EAAGA,EAAIy5C,EAASp7C,OAAQ2B,GAAK,EACpCjC,EAAI08C,EAAOz6C,GAAG3B,SACXmiB,EAAA3H,GAAS4hC,EAAOz6C,GAAGjC,GACf8a,GAAA,GAKR,OAAA2H,CACb,CAqDa86B,CAAY91C,EAAQi0C,EACjC,EAEU3B,EAAAyD,QAAU,SAAS/6B,EAAM+iB,GAI7B,IAAIiY,EAAU,KAEd,OAJAjY,EAAOA,GAAQ,QAKf,IAAK,UACHiY,EAAUC,EAASj7B,GACnB,MACF,IAAK,eACHg7B,EAAUE,EAAWl7B,GACrB,MACF,IAAK,OACHg7B,EAAUG,EAAWn7B,GACrB,MACF,IAAK,QACHg7B,EAAUI,EAAQp7B,GAClB,MACF,QACE,KAAM,QAAU+iB,EAGlBsU,EAAUp5C,KAAK+8C,GACF5D,EAAA,IACnB,EAEUE,EAAA+D,OAAS,SAAS1D,EAAKC,GAC3B,GAAID,EAAM,GAAKR,GAAgBQ,GAAOC,EAAM,GAAKT,GAAgBS,EAC/D,MAAMD,EAAM,IAAMC,EAEpB,OAAOV,EAASS,GAAKC,EAC3B,EAEIN,EAAMgE,eAAiB,WACd,OAAAnE,CACb,EAEIG,EAAMiE,KAAO,WACX,GAAIxE,EAAc,EAAG,CAGZF,IAFP,IAAIA,EAAa,EAEVA,EAAa,GAAIA,IAAc,CAIpC,IAHA,IAAIoC,EAAWC,EAAUC,YAAYtC,EAAYG,GAC7ChyC,EAASo0C,IAEJ77C,EAAI,EAAGA,EAAI85C,EAAUx5C,OAAQN,IAAK,CACzC,IAAIyiB,EAAOq3B,EAAU95C,GACrByH,EAAOq0C,IAAIr5B,EAAKs5B,UAAW,GACpBt0C,EAAAq0C,IAAIr5B,EAAKu5B,YAAanB,EAAOoB,gBAAgBx5B,EAAKs5B,UAAWzC,IACpE72B,EAAKy5B,MAAMz0C,EACZ,CAED,IAAI00C,EAAiB,EACrB,IAASn8C,EAAI,EAAGA,EAAI07C,EAASp7C,OAAQN,IACnCm8C,GAAkBT,EAAS17C,GAAGo8C,UAGhC,GAAI30C,EAAOw0C,mBAAsC,EAAjBE,EAC9B,KAEH,CAEa7C,EAAAA,CACf,CAEQU,GAAA,EApWc,WAKvB,IAHA,IAAIiE,EAAe,EACfC,EAAU,EAELl+C,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAE7Bg6C,GAAS,EAAMh6C,GAEX,IAAAm+C,EAAYtD,EAAOuD,aAAarE,IAE3B,GAAL/5C,GAAUi+C,EAAeE,KACZF,EAAAE,EACLn+C,EAAAA,EAEb,CAEM,OAAAk+C,CACb,CAkVsBG,GACtB,EAEUtE,EAAAuE,eAAiB,SAASC,EAAUC,GAExCD,EAAWA,GAAY,EAGvB,IAAIE,EAAS,GAEHA,GAAA,iBACAA,GAAA,0CACAA,GAAA,8BACVA,GAAU,2BAPVD,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,GAOT,MACrCC,GAAA,KACAA,GAAA,UAEV,IAAA,IAASx8C,EAAI,EAAGA,EAAI83C,EAAMgE,iBAAkB97C,GAAK,EAAG,CAExCw8C,GAAA,OAEV,IAAA,IAAS36C,EAAI,EAAGA,EAAIi2C,EAAMgE,iBAAkBj6C,GAAK,EACrC26C,GAAA,cACAA,GAAA,0CACAA,GAAA,8BACAA,GAAA,8BACVA,GAAU,WAAaF,EAAW,MAClCE,GAAU,YAAcF,EAAW,MACzBE,GAAA,sBACVA,GAAU1E,EAAM+D,OAAO77C,EAAG6B,GAAI,UAAY,UAChC26C,GAAA,IACAA,GAAA,MAGFA,GAAA,OACX,CAKM,OAHGA,GAAA,WACAA,GAAA,UAGhB,EAEI1E,EAAM2E,aAAe,SAASH,EAAUC,EAAQzP,EAAK4P,GAEnD,IAAIC,EAAO,CAAA,EACgB,iBAAhB1qC,UAAU,KAInBqqC,GAFAK,EAAO1qC,UAAU,IAEDqqC,SAChBC,EAASI,EAAKJ,OACdzP,EAAM6P,EAAK7P,IACX4P,EAAQC,EAAKD,OAGfJ,EAAWA,GAAY,EACvBC,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,GAGjDzP,EAAe,iBAARA,EAAoB,CAACxD,KAAMwD,GAAOA,GAAO,IACnDxD,KAAOwD,EAAIxD,MAAQ,KACvBwD,EAAIjrB,GAAMirB,EAAIxD,KAAQwD,EAAIjrB,IAAM,qBAAuB,MAG9C66B,EAAiB,iBAAVA,EAAsB,CAACpT,KAAMoT,GAASA,GAAS,IACzDpT,KAAOoT,EAAMpT,MAAQ,KAC3BoT,EAAM76B,GAAM66B,EAAMpT,KAAQoT,EAAM76B,IAAM,eAAiB,KAEvD,IACIhgB,EAAO7B,EAAG48C,EAAcC,EADxB3F,EAAOY,EAAMgE,iBAAmBQ,EAAoB,EAATC,EAC7BO,EAAM,GAmBxB,IAjBAD,EAAO,IAAMP,EAAW,QAAUA,EAChC,KAAOA,EAAW,SAAWA,EAAW,KAEjCQ,GAAA,wDACTA,GAAUH,EAAKI,SAA+D,GAApD,WAAa7F,EAAO,eAAiBA,EAAO,MAC7D4F,GAAA,iBAAmB5F,EAAO,IAAMA,EAAO,KACvC4F,GAAA,uCACTA,GAAUJ,EAAMpT,MAAQwD,EAAIxD,KAAQ,gCAChC0T,EAAU,CAACN,EAAM76B,GAAIirB,EAAIjrB,IAAI/iB,KAAK,KAAKw/B,QAAW,IAAM,GACnDwe,GAAA,IACTA,GAAUJ,EAAMpT,KAAQ,cAAgB0T,EAAUN,EAAM76B,IAAM,KAC1Dm7B,EAAUN,EAAMpT,MAAQ,WAAa,GACzCwT,GAAUhQ,EAAIxD,KAAQ,oBAAsB0T,EAAUlQ,EAAIjrB,IAAM,KAC5Dm7B,EAAUlQ,EAAIxD,MAAQ,iBAAmB,GACpCwT,GAAA,gEACAA,GAAA,YAEJ98C,EAAI,EAAGA,EAAI83C,EAAMgE,iBAAkB97C,GAAK,EAE3C,IADA48C,EAAK58C,EAAIs8C,EAAWC,EACf16C,EAAI,EAAGA,EAAIi2C,EAAMgE,iBAAkBj6C,GAAK,EACvCi2C,EAAM+D,OAAO77C,EAAG6B,KAETi7C,GAAA,KADJj7C,EAAEy6C,EAASC,GACI,IAAMK,EAAKC,GAQ9B,OAHEC,GAAA,wCACAA,GAAA,QAGf,EAEUhF,EAAAmF,cAAgB,SAASX,EAAUC,GAEvCD,EAAWA,GAAY,EACvBC,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,EAExD,IAAIrF,EAAOY,EAAMgE,iBAAmBQ,EAAoB,EAATC,EAC3C/mC,EAAM+mC,EACN1B,EAAM3D,EAAOqF,EAEjB,OAAOU,EAAc/F,EAAMA,GAAM,SAASn2C,EAAGK,GAC3C,GAAIoU,GAAOzU,GAAKA,EAAI85C,GAAOrlC,GAAOpU,GAAKA,EAAIy5C,EAAK,CAC9C,IAAIh5C,EAAI4E,KAAKC,OAAQ3F,EAAIyU,GAAO8mC,GAC5Bt8C,EAAIyG,KAAKC,OAAQtF,EAAIoU,GAAO8mC,GAChC,OAAOxE,EAAM+D,OAAO77C,EAAG6B,GAAI,EAAI,CACzC,CACiB,OAAA,CAEjB,GACA,EAEIi2C,EAAMoF,aAAe,SAASZ,EAAUC,EAAQzP,GAE9CwP,EAAWA,GAAY,EACvBC,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,EAExD,IAAIrF,EAAOY,EAAMgE,iBAAmBQ,EAAoB,EAATC,EAE3C3P,EAAM,GAkBH,OAjBAA,GAAA,OACAA,GAAA,SACAA,GAAAkL,EAAMmF,cAAcX,EAAUC,GAC9B3P,GAAA,IACAA,GAAA,WACAA,GAAAsK,EACAtK,GAAA,IACAA,GAAA,YACAA,GAAAsK,EACAtK,GAAA,IACHE,IACKF,GAAA,SACPA,GAAOoQ,EAAUlQ,GACVF,GAAA,KAEFA,GAAA,IAGb,EAEQ,IAAAoQ,EAAY,SAASr/C,GAEvB,IADA,IAAIw/C,EAAU,GACLp/C,EAAI,EAAGA,EAAIJ,EAAEU,OAAQN,GAAK,EAAG,CAChC8D,IAAAA,EAAIlE,EAAEy/C,OAAOr/C,GACjB,OAAO8D,GACP,IAAK,IAAgBs7C,GAAA,OAAQ,MAC7B,IAAK,IAAgBA,GAAA,OAAQ,MAC7B,IAAK,IAAgBA,GAAA,QAAS,MAC9B,IAAK,IAAgBA,GAAA,SAAU,MAC/B,QAAqBt7C,GAAAA,EAEtB,CACM,OAAAs7C,CACb,EAgHW,OAtDDrF,EAAAuF,YAAc,SAASf,EAAUC,GAGrC,IAFAD,EAAWA,GAAY,GAER,EACb,OA5DmB,SAASC,GAE9BA,OAA2B,IAAVA,EAAwBD,EAAeC,EAExD,IAIIn7C,EAAGL,EAAGiL,EAAIC,EAAIlK,EAJdm1C,EAHW,EAGJY,EAAMgE,iBAAuC,EAATS,EAC3C/mC,EAAM+mC,EACN1B,EAAM3D,EAAOqF,EAIb/xC,EAAS,CACX,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KAGJ8yC,EAAyB,CAC3B,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KAGJC,EAAQ,GACZ,IAAKn8C,EAAI,EAAGA,EAAI81C,EAAM91C,GAAK,EAAG,CAG5B,IAFA4K,EAAKvF,KAAKC,OAAOtF,EAAIoU,GAzBR,GA0BbvJ,EAAKxF,KAAKC,OAAOtF,EAAI,EAAIoU,GA1BZ,GA2BRzU,EAAI,EAAGA,EAAIm2C,EAAMn2C,GAAK,EACzBgB,EAAI,IAEAyT,GAAOzU,GAAKA,EAAI85C,GAAOrlC,GAAOpU,GAAKA,EAAIy5C,GAAO/C,EAAM+D,OAAO7vC,EAAIvF,KAAKC,OAAO3F,EAAIyU,GA9BxE,MA+BTzT,EAAI,KAGFyT,GAAOzU,GAAKA,EAAI85C,GAAOrlC,GAAOpU,EAAE,GAAKA,EAAE,EAAIy5C,GAAO/C,EAAM+D,OAAO5vC,EAAIxF,KAAKC,OAAO3F,EAAIyU,GAlC5E,IAmCTzT,GAAK,IAGLA,GAAK,IAIPw7C,GAAUhB,EAAS,GAAKn7C,EAAE,GAAKy5C,EAAOyC,EAAuBv7C,GAAKyI,EAAOzI,GAGlEw7C,GAAA,IACV,CAEG,OAAArG,EAAO,GAAKqF,EAAS,EAChBgB,EAAMnuB,UAAU,EAAGmuB,EAAMl/C,OAAS64C,EAAO,GAAK73C,MAAM63C,EAAK,GAAGp4C,KAAK,KAGnEy+C,EAAMnuB,UAAU,EAAGmuB,EAAMl/C,OAAO,EAC7C,CAMem/C,CAAiBjB,GAGdD,GAAA,EACZC,OAA2B,IAAVA,EAAmC,EAAXD,EAAeC,EAExD,IAIIn7C,EAAGL,EAAGf,EAAG+B,EAJTm1C,EAAOY,EAAMgE,iBAAmBQ,EAAoB,EAATC,EAC3C/mC,EAAM+mC,EACN1B,EAAM3D,EAAOqF,EAIb5T,EAAQtpC,MAAMi9C,EAAS,GAAGx9C,KAAK,MAC/B4pC,EAAQrpC,MAAMi9C,EAAS,GAAGx9C,KAAK,MAE/By+C,EAAQ,GACRE,EAAO,GACX,IAAKr8C,EAAI,EAAGA,EAAI81C,EAAM91C,GAAK,EAAG,CAG5B,IAFApB,EAAIyG,KAAKC,OAAQtF,EAAIoU,GAAO8mC,GACrBmB,EAAA,GACF18C,EAAI,EAAGA,EAAIm2C,EAAMn2C,GAAK,EACzBgB,EAAI,EAEAyT,GAAOzU,GAAKA,EAAI85C,GAAOrlC,GAAOpU,GAAKA,EAAIy5C,GAAO/C,EAAM+D,OAAO77C,EAAGyG,KAAKC,OAAO3F,EAAIyU,GAAO8mC,MACvFv6C,EAAI,GAIN07C,GAAQ17C,EAAI4mC,EAAQD,EAGtB,IAAK1oC,EAAI,EAAGA,EAAIs8C,EAAUt8C,GAAK,EAC7Bu9C,GAASE,EAAO,IAEnB,CAED,OAAOF,EAAMnuB,UAAU,EAAGmuB,EAAMl/C,OAAO,EAC7C,EAEUy5C,EAAA4F,kBAAoB,SAASxtB,EAASosB,GAC1CA,EAAWA,GAAY,EAEvB,IADI,IAAAj+C,EAASy5C,EAAMgE,iBACV3D,EAAM,EAAGA,EAAM95C,EAAQ85C,IAC9B,IAAA,IAASC,EAAM,EAAGA,EAAM/5C,EAAQ+5C,IAC9BloB,EAAQytB,UAAY7F,EAAM+D,OAAO1D,EAAKC,GAAO,QAAU,QACvDloB,EAAQ0tB,SAASzF,EAAMmE,EAAUlE,EAAMkE,EAAUA,EAAUA,EAGhE,EAEMxE,CACX,EAiBEV,EAAOyG,eAXPzG,EAAO0G,mBAAqB,CAC1BjO,QAAY,SAASlyC,GAEnB,IADA,IAAI8M,EAAQ,GACH1M,EAAI,EAAGA,EAAIJ,EAAEU,OAAQN,GAAK,EAAG,CAChC8D,IAAAA,EAAIlE,EAAEW,WAAWP,GACf0M,EAAAhM,KAAS,IAAJoD,EACZ,CACM,OAAA4I,CACR,IAG8C,QAWjD2sC,EAAO2G,oBAAsB,SAASC,EAAaC,GAIjD,IAAIC,EAAa,WAWf,IATI,IAAAC,EAAMC,EAAwBJ,GAC9BlqB,EAAO,WACL,IAAA31B,EAAIggD,EAAIrqB,OACZ,IAAS,GAAL31B,EAAe,KAAA,MACZ,OAAAA,CACf,EAEUg1B,EAAQ,EACR+qB,EAAa,CAAA,IACJ,CACP,IAAAr1C,EAAKs1C,EAAIrqB,OACb,IAAU,GAANjrB,EAAU,MACd,IAAIC,EAAKgrB,IAILttB,EAHKstB,KAGM,EAFNA,IAGToqB,EAFQx/C,OAAOC,aAAekK,GAAM,EAAKC,IAEzBtC,EACP2sB,GAAA,CACV,CACD,GAAIA,GAAS8qB,EACX,MAAM9qB,EAAQ,OAAS8qB,EAGlBC,OAAAA,CACb,CA3BqB,GA6BbG,EAAc,IAAI//C,WAAW,GAEjC,OAAO,SAASX,GAEd,IADA,IAAI8M,EAAQ,GACH1M,EAAI,EAAGA,EAAIJ,EAAEU,OAAQN,GAAK,EAAG,CAChC8D,IAAAA,EAAIlE,EAAEW,WAAWP,GACrB,GAAI8D,EAAI,IACN4I,EAAMhM,KAAKoD,OACN,CACL,IAAI1D,EAAI+/C,EAAWvgD,EAAEy/C,OAAOr/C,IACZ,iBAALI,GACC,IAAJA,IAAaA,EAEjBsM,EAAMhM,KAAKN,IAGLsM,EAAAhM,KAAKN,IAAM,GACXsM,EAAAhM,KAAS,IAAJN,IAGbsM,EAAMhM,KAAK4/C,EAEd,CACF,CACM,OAAA5zC,CACb,CACA,EAME,IAuCM6zC,EA0CAC,EACAC,EAGA1G,EAEA2G,EAvFFC,EACe,EADfA,EAEe,EAFfA,EAGe,EAHfA,EAIe,EAOfjH,EAAyB,CAC3BlnC,EAAI,EACJlJ,EAAI,EACJs3C,EAAI,EACJC,EAAI,GAOFC,EACW,EADXA,EAEW,EAFXA,EAGW,EAHXA,EAIW,EAJXA,EAKW,EALXA,EAMW,EANXA,EAOW,EAPXA,EAQW,EAOXjG,GAEE0F,EAAyB,CAC3B,GACA,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,IACJ,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,IACZ,CAAC,EAAG,GAAI,GAAI,GAAI,IAChB,CAAC,EAAG,GAAI,GAAI,GAAI,IAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,KAChB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,KACpB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,KACrB,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAC1B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAExBC,EAAO,KACPC,EAAO,KAKPC,EAAc,SAASj+B,GAEzB,IADA,IAAIs+B,EAAQ,EACG,GAARt+B,GACIs+B,GAAA,EACCt+B,KAAA,EAEL,OAAAs+B,CACb,GATQhH,EAAQ,CAAA,GAWNmB,eAAiB,SAASz4B,GAE9B,IADA,IAAIxiB,EAAIwiB,GAAQ,GACTi+B,EAAYzgD,GAAKygD,EAAYF,IAAQ,GAC1CvgD,GAAMugD,GAAQE,EAAYzgD,GAAKygD,EAAYF,GAEnC,OAlBI,OAkBJ/9B,GAAQ,GAAMxiB,EAC9B,EAEU85C,EAAAiB,iBAAmB,SAASv4B,GAEhC,IADA,IAAIxiB,EAAIwiB,GAAQ,GACTi+B,EAAYzgD,GAAKygD,EAAYD,IAAQ,GAC1CxgD,GAAMwgD,GAAQC,EAAYzgD,GAAKygD,EAAYD,GAE7C,OAAQh+B,GAAQ,GAAMxiB,CAC5B,EAEU85C,EAAAe,mBAAqB,SAASxB,GAClC,OAAOiH,EAAuBjH,EAAa,EACjD,EAEUS,EAAAwB,gBAAkB,SAAStB,GAE/B,OAAQA,GAER,KAAK6G,EACI,OAAA,SAAS9gD,EAAGgJ,GAAahJ,OAAAA,EAAIgJ,GAAK,GAAK,GAChD,KAAK83C,EACI,OAAA,SAAS9gD,EAAGgJ,GAAK,OAAOhJ,EAAI,GAAK,GAC1C,KAAK8gD,EACI,OAAA,SAAS9gD,EAAGgJ,GAAK,OAAOA,EAAI,GAAK,GAC1C,KAAK83C,EACI,OAAA,SAAS9gD,EAAGgJ,GAAahJ,OAAAA,EAAIgJ,GAAK,GAAK,GAChD,KAAK83C,EACI,OAAA,SAAS9gD,EAAGgJ,GAAa,OAAAN,KAAKC,MAAM3I,EAAI,GAAK0I,KAAKC,MAAMK,EAAI,IAAO,GAAK,GACjF,KAAK83C,EACI,OAAA,SAAS9gD,EAAGgJ,GAAK,OAAQhJ,EAAIgJ,EAAK,EAAKhJ,EAAIgJ,EAAK,GAAK,CAAE,EAChE,KAAK83C,EACI,OAAA,SAAS9gD,EAAGgJ,GAAK,OAAUhJ,EAAIgJ,EAAK,EAAKhJ,EAAIgJ,EAAK,GAAK,GAAK,CAAE,EACvE,KAAK83C,EACI,OAAA,SAAS9gD,EAAGgJ,GAAK,OAAUhJ,EAAIgJ,EAAK,GAAKhJ,EAAIgJ,GAAK,GAAK,GAAK,CAAE,EAEvE,QACE,KAAM,mBAAqBixC,EAEnC,EAEUF,EAAAkD,0BAA4B,SAAS+D,GAEzC,IADA,IAAIz4C,EAAI40C,EAAa,CAAC,GAAI,GACjBn9C,EAAI,EAAGA,EAAIghD,EAAoBhhD,GAAK,EAC3CuI,EAAIA,EAAE04C,SAAS9D,EAAa,CAAC,EAAG+D,EAAOC,KAAKnhD,IAAK,IAE5CuI,OAAAA,CACb,EAEUwxC,EAAAkC,gBAAkB,SAASzW,EAAM1iB,GAEjC,GAAA,GAAKA,GAAQA,EAAO,GAItB,OAAO0iB,GACP,KAAKmb,EAA+B,OAAA,GACpC,KAAKA,EAA+B,OAAA,EACpC,KAAKA,EACL,KAAKA,EAA+B,OAAA,EACpC,QACE,KAAM,QAAUnb,OAG1B,GAAiB1iB,EAAO,GAIhB,OAAO0iB,GACP,KAAKmb,EAA+B,OAAA,GACpC,KAAKA,EAA+B,OAAA,GACpC,KAAKA,EAA+B,OAAA,GACpC,KAAKA,EAA+B,OAAA,GACpC,QACE,KAAM,QAAUnb,MAG1B,MAAiB1iB,EAAO,IAchB,KAAM,QAAUA,EAVhB,OAAO0iB,GACP,KAAKmb,EAA+B,OAAA,GACpC,KAAKA,EAA+B,OAAA,GACpC,KAAKA,EAA+B,OAAA,GACpC,KAAKA,EAA+B,OAAA,GACpC,QACE,KAAM,QAAUnb,EAKnB,CACP,EAEUuU,EAAAqE,aAAe,SAAS/E,GAQ5B,IANI,IAAAa,EAAcb,EAAO0E,iBAErBI,EAAY,EAIP/D,EAAM,EAAGA,EAAMF,EAAaE,GAAO,EAC1C,IAAA,IAASC,EAAM,EAAGA,EAAMH,EAAaG,GAAO,EAAG,CAK7C,IAHA,IAAI+G,EAAY,EACZ5F,EAAOnC,EAAOyE,OAAO1D,EAAKC,GAErBp4C,GAAI,EAAIA,GAAK,EAAGA,GAAK,EAE5B,KAAIm4C,EAAMn4C,EAAI,GAAKi4C,GAAeE,EAAMn4C,GAIxC,IAAA,IAAS6B,GAAI,EAAIA,GAAK,EAAGA,GAAK,EAExBu2C,EAAMv2C,EAAI,GAAKo2C,GAAeG,EAAMv2C,GAI/B,GAAL7B,GAAe,GAAL6B,GAIV03C,GAAQnC,EAAOyE,OAAO1D,EAAMn4C,EAAGo4C,EAAMv2C,KAC1Bs9C,GAAA,GAKfA,EAAY,IACdjD,GAAc,EAAIiD,EAAY,EAEjC,CAKH,IAAShH,EAAM,EAAGA,EAAMF,EAAc,EAAGE,GAAO,EAC9C,IAASC,EAAM,EAAGA,EAAMH,EAAc,EAAGG,GAAO,EAAG,CACjD,IAAIjlB,EAAQ,EACRikB,EAAOyE,OAAO1D,EAAKC,KAAgBjlB,GAAA,GACnCikB,EAAOyE,OAAO1D,EAAM,EAAGC,KAAgBjlB,GAAA,GACvCikB,EAAOyE,OAAO1D,EAAKC,EAAM,KAAcjlB,GAAA,GACvCikB,EAAOyE,OAAO1D,EAAM,EAAGC,EAAM,KAAcjlB,GAAA,GAClC,GAATA,GAAuB,GAATA,IACH+oB,GAAA,EAEhB,CAKH,IAAS/D,EAAM,EAAGA,EAAMF,EAAaE,GAAO,EAC1C,IAASC,EAAM,EAAGA,EAAMH,EAAc,EAAGG,GAAO,EAC1ChB,EAAOyE,OAAO1D,EAAKC,KACfhB,EAAOyE,OAAO1D,EAAKC,EAAM,IACzBhB,EAAOyE,OAAO1D,EAAKC,EAAM,IACzBhB,EAAOyE,OAAO1D,EAAKC,EAAM,IACzBhB,EAAOyE,OAAO1D,EAAKC,EAAM,KACzBhB,EAAOyE,OAAO1D,EAAKC,EAAM,IACzBhB,EAAOyE,OAAO1D,EAAKC,EAAM,KAClB8D,GAAA,IAKnB,IAAS9D,EAAM,EAAGA,EAAMH,EAAaG,GAAO,EAC1C,IAASD,EAAM,EAAGA,EAAMF,EAAc,EAAGE,GAAO,EAC1Cf,EAAOyE,OAAO1D,EAAKC,KACfhB,EAAOyE,OAAO1D,EAAM,EAAGC,IACvBhB,EAAOyE,OAAO1D,EAAM,EAAGC,IACvBhB,EAAOyE,OAAO1D,EAAM,EAAGC,IACvBhB,EAAOyE,OAAO1D,EAAM,EAAGC,KACvBhB,EAAOyE,OAAO1D,EAAM,EAAGC,IACvBhB,EAAOyE,OAAO1D,EAAM,EAAGC,KAChB8D,GAAA,IAOnB,IAAIkD,EAAY,EAEhB,IAAShH,EAAM,EAAGA,EAAMH,EAAaG,GAAO,EAC1C,IAASD,EAAM,EAAGA,EAAMF,EAAaE,GAAO,EACtCf,EAAOyE,OAAO1D,EAAKC,KACRgH,GAAA,GAQZ,OAFPlD,GADYz1C,KAAK44C,IAAI,IAAMD,EAAYnH,EAAcA,EAAc,IAAM,EACpD,EAG3B,EAEWH,GAOLmH,EAAS,WAMX,IAJI,IAAAK,EAAY,IAAIjgD,MAAM,KACtBkgD,EAAY,IAAIlgD,MAAM,KAGjBtB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1BuhD,EAAUvhD,GAAK,GAAKA,EAEtB,IAASA,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAClBA,EAAAA,GAAKuhD,EAAUvhD,EAAI,GACzBuhD,EAAUvhD,EAAI,GACduhD,EAAUvhD,EAAI,GACduhD,EAAUvhD,EAAI,GAEpB,IAASA,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAC5BwhD,EAAUD,EAAUvhD,IAAOA,EAG7B,IAAI+5C,EAAQ,CAENA,KAAO,SAASx2C,GAEpB,GAAIA,EAAI,EACN,KAAM,QAAUA,EAAI,IAGtB,OAAOi+C,EAAUj+C,EACvB,EAEUw2C,KAAO,SAASx2C,GAEpB,KAAOA,EAAI,GACTA,GAAK,IAGP,KAAOA,GAAK,KACVA,GAAK,IAGP,OAAOg+C,EAAUh+C,EACvB,GAEW,OAAAw2C,CACX,CA5Ce,GAkDJ,SAAAoD,EAAalqC,EAAKwzB,GAErB,QAAqB,IAAdxzB,EAAI3S,OACP,MAAA2S,EAAI3S,OAAS,IAAMmmC,EAG3B,IAAIgb,EAAO,WAET,IADA,IAAInF,EAAS,EACNA,EAASrpC,EAAI3S,QAAyB,GAAf2S,EAAIqpC,IACtBA,GAAA,EAGZ,IADA,IAAImF,EAAO,IAAIngD,MAAM2R,EAAI3S,OAASg8C,EAAS7V,GAClCzmC,EAAI,EAAGA,EAAIiT,EAAI3S,OAASg8C,EAAQt8C,GAAK,EAC5CyhD,EAAKzhD,GAAKiT,EAAIjT,EAAIs8C,GAEbmF,OAAAA,CACb,CAVe,GAYP1H,EAAQ,CAENA,MAAQ,SAASj/B,GACrB,OAAO2mC,EAAK3mC,EAClB,EAEIi/B,UAAkB,WAChB,OAAO0H,EAAKnhD,MAClB,EAEUy5C,SAAW,SAAS7tC,GAIxB,IAFI+G,IAAAA,EAAM,IAAI3R,MAAMy4C,EAAMiC,YAAc9vC,EAAE8vC,YAAc,GAE/Ch8C,EAAI,EAAGA,EAAI+5C,EAAMiC,YAAah8C,GAAK,EAC1C,IAAA,IAASgJ,EAAI,EAAGA,EAAIkD,EAAE8vC,YAAahzC,GAAK,EACtCiK,EAAIjT,EAAIgJ,IAAMk4C,EAAOC,KAAKD,EAAOQ,KAAK3H,EAAMsD,MAAMr9C,IAAOkhD,EAAOQ,KAAKx1C,EAAEmxC,MAAMr0C,KAI1E,OAAAm0C,EAAalqC,EAAK,EAC/B,EAEU8mC,IAAM,SAAS7tC,GAEnB,GAAI6tC,EAAMiC,YAAc9vC,EAAE8vC,YAAc,EAC/B,OAAAjC,EAMT,IAHA,IAAI4H,EAAQT,EAAOQ,KAAK3H,EAAMsD,MAAM,IAAO6D,EAAOQ,KAAKx1C,EAAEmxC,MAAM,IAE3DpqC,EAAM,IAAI3R,MAAMy4C,EAAMiC,aACjBh8C,EAAI,EAAGA,EAAI+5C,EAAMiC,YAAah8C,GAAK,EAC1CiT,EAAIjT,GAAK+5C,EAAMsD,MAAMr9C,GAGvB,IAASA,EAAI,EAAGA,EAAIkM,EAAE8vC,YAAah8C,GAAK,EACtCiT,EAAIjT,IAAMkhD,EAAOC,KAAKD,EAAOQ,KAAKx1C,EAAEmxC,MAAMr9C,IAAO2hD,GAInD,OAAOxE,EAAalqC,EAAK,GAAGgoC,IAAI/uC,EACtC,GAEW,OAAA6tC,CAEX,CAKE,IAAI4B,EAAY,WAEd,IAAIiG,EAAiB,CAQnB,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAGR,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IAGR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,IACR,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,IACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IAGnB,CAAC,EAAG,IAAK,KACT,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,GAAI,EAAG,IAAK,IACrB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,IAGT,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,KACV,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IAGpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IAGpB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,KAGnBC,EAAY,SAAShF,EAAYT,GACnC,IAAIrC,EAAQ,CAAA,EAGLA,OAFPA,EAAM8C,WAAaA,EACnB9C,EAAMqC,UAAYA,EACXrC,CACb,EAEQA,EAAQ,CAAA,EA6CL,OA3BDA,EAAA6B,YAAc,SAAStC,EAAYC,GAEnC,IAAAuI,EAlBgB,SAASxI,EAAYC,GAEzC,OAAOA,GACP,KAAKG,EAAuBlnC,EACnB,OAAAovC,EAAkC,GAAlBtI,EAAa,GAAS,GAC/C,KAAKI,EAAuBpwC,EACnB,OAAAs4C,EAAkC,GAAlBtI,EAAa,GAAS,GAC/C,KAAKI,EAAuBkH,EACnB,OAAAgB,EAAkC,GAAlBtI,EAAa,GAAS,GAC/C,KAAKI,EAAuBmH,EACnB,OAAAe,EAAkC,GAAlBtI,EAAa,GAAS,GAC/C,QACS,OAEf,CAIoByI,CAAgBzI,EAAYC,GAEtC,QAAkB,IAAXuI,EACH,KAAA,6BAA+BxI,EACjC,yBAA2BC,EAOjC,IAJI,IAAAj5C,EAASwhD,EAAQxhD,OAAS,EAE1B66B,EAAO,GAEFn7B,EAAI,EAAGA,EAAIM,EAAQN,GAAK,EAM/B,IAJI,IAAAo1B,EAAQ0sB,EAAY,EAAJ9hD,EAAQ,GACxB68C,EAAaiF,EAAY,EAAJ9hD,EAAQ,GAC7Bo8C,EAAY0F,EAAY,EAAJ9hD,EAAQ,GAEvBgJ,EAAI,EAAGA,EAAIosB,EAAOpsB,GAAK,EAC9BmyB,EAAKz6B,KAAKmhD,EAAUhF,EAAYT,IAI7B,OAAAjhB,CACb,EAEW4e,CACX,CA/SkB,GAqTZ8B,EAAc,WAEhB,IAAImG,EAAU,GACVC,EAAU,EAEVlI,EAAQ,CAEZA,UAAkB,WACT,OAAAiI,CACb,EAEUjI,MAAQ,SAASj/B,GACrB,IAAIonC,EAAWx5C,KAAKC,MAAMmS,EAAQ,GAClC,OAA0D,IAAhDknC,EAAQE,KAAe,EAAIpnC,EAAQ,EAAO,EAC1D,EAEUi/B,IAAM,SAAS9mC,EAAK3S,GACxB,IAAA,IAASN,EAAI,EAAGA,EAAIM,EAAQN,GAAK,EAC/B+5C,EAAMsC,OAA8C,IAAnCppC,IAAS3S,EAASN,EAAI,EAAO,GAEtD,EAEI+5C,gBAAwB,WACf,OAAAkI,CACb,EAEUlI,OAAS,SAASoI,GAEtB,IAAID,EAAWx5C,KAAKC,MAAMs5C,EAAU,GAChCD,EAAQ1hD,QAAU4hD,GACpBF,EAAQthD,KAAK,GAGXyhD,IACMH,EAAAE,IAAc,MAAUD,EAAU,GAGjCA,GAAA,CACjB,GAEW,OAAAlI,CACX,EAMM2D,EAAW,SAASj7B,GAEtB,IAAI2/B,EAAQzB,EACR0B,EAAQ5/B,EAERs3B,EAAQ,CAEZA,QAAgB,WACP,OAAAqI,CACb,EAEUrI,UAAY,SAAStyC,GACzB,OAAO46C,EAAM/hD,MACnB,EAEUy5C,MAAQ,SAAStyC,GAMdzH,IAJP,IAAIyiB,EAAO4/B,EAEPriD,EAAI,EAEDA,EAAI,EAAIyiB,EAAKniB,QACXmH,EAAAq0C,IAAIwG,EAAS7/B,EAAK4O,UAAUrxB,EAAGA,EAAI,IAAM,IAChDA,GAAK,EAGHA,EAAIyiB,EAAKniB,SACPmiB,EAAKniB,OAASN,GAAK,EACdyH,EAAAq0C,IAAIwG,EAAS7/B,EAAK4O,UAAUrxB,EAAGA,EAAI,IAAM,GACvCyiB,EAAKniB,OAASN,GAAK,GACrByH,EAAAq0C,IAAIwG,EAAS7/B,EAAK4O,UAAUrxB,EAAGA,EAAI,IAAM,GAG1D,GAEQsiD,EAAW,SAAS1iD,GAEtB,IADA,IAAIqT,EAAM,EACDjT,EAAI,EAAGA,EAAIJ,EAAEU,OAAQN,GAAK,EACjCiT,EAAY,GAANA,EAAWsvC,EAAU3iD,EAAEy/C,OAAOr/C,IAE/B,OAAAiT,CACb,EAEQsvC,EAAY,SAASz+C,GACnB,GAAA,KAAOA,GAAKA,GAAK,IACnB,OAAOA,EAAEvD,WAAW,GAAK,IAAIA,WAAW,GAE1C,KAAM,iBAAmBuD,CAC/B,EAEW,OAAAi2C,CACX,EAMM4D,EAAa,SAASl7B,GAExB,IAAI2/B,EAAQzB,EACR0B,EAAQ5/B,EAERs3B,EAAQ,CAEZA,QAAgB,WACP,OAAAqI,CACb,EAEUrI,UAAY,SAAStyC,GACzB,OAAO46C,EAAM/hD,MACnB,EAEUy5C,MAAQ,SAAStyC,GAMdzH,IAJP,IAAIJ,EAAIyiD,EAEJriD,EAAI,EAEDA,EAAI,EAAIJ,EAAEU,QACRmH,EAAAq0C,IACmB,GAAxB0G,EAAQ5iD,EAAEy/C,OAAOr/C,IACjBwiD,EAAQ5iD,EAAEy/C,OAAOr/C,EAAI,IAAM,IAC7BA,GAAK,EAGHA,EAAIJ,EAAEU,QACRmH,EAAOq0C,IAAI0G,EAAQ5iD,EAAEy/C,OAAOr/C,IAAM,EAE1C,GAEQwiD,EAAU,SAAS1+C,GAEjB,GAAA,KAAOA,GAAKA,GAAK,IACnB,OAAOA,EAAEvD,WAAW,GAAK,IAAIA,WAAW,GAC/B,GAAA,KAAOuD,GAAKA,GAAK,IAC1B,OAAOA,EAAEvD,WAAW,GAAK,IAAIA,WAAW,GAAK,GAE7C,OAAQuD,GACR,IAAK,IAAa,OAAA,GAClB,IAAK,IAAa,OAAA,GAClB,IAAK,IAAa,OAAA,GAClB,IAAK,IAAa,OAAA,GAClB,IAAK,IAAa,OAAA,GAClB,IAAK,IAAa,OAAA,GAClB,IAAK,IAAa,OAAA,GAClB,IAAK,IAAa,OAAA,GAClB,IAAK,IAAa,OAAA,GAClB,QACE,KAAM,iBAAmBA,EAGnC,EAEW,OAAAi2C,CACX,EAMM6D,EAAa,SAASn7B,GAExB,IAAI2/B,EAAQzB,EAER8B,EAASpJ,EAAOyG,cAAcr9B,GAE9Bs3B,EAAQ,CAEZA,QAAgB,WACP,OAAAqI,CACb,EAEUrI,UAAY,SAAStyC,GACzB,OAAOg7C,EAAOniD,MACpB,EAEUy5C,MAAQ,SAAStyC,GACrB,IAAA,IAASzH,EAAI,EAAGA,EAAIyiD,EAAOniD,OAAQN,GAAK,EAC/ByH,EAAAq0C,IAAI2G,EAAOziD,GAAI,EAE9B,GAEW,OAAA+5C,CACX,EAMM8D,EAAU,SAASp7B,GAErB,IAAI2/B,EAAQzB,EAGRb,EAAgBzG,EAAO0G,mBAAmB,KAC9C,IAAKD,EACG,KAAA,uBAEP,SAASh8C,EAAGsa,GAEP,IAAAve,EAAOigD,EAIX,KAHI,GAAe,GAAfjgD,EAAKS,QAGC,QAHiBT,EAAK,IAAM,EAAKA,EAAK,IACxC,KAAA,qBAEd,CANK,GAQG,IAAA4iD,EAAS3C,EAAcr9B,GAEvBs3B,EAAQ,CAEZA,QAAgB,WACP,OAAAqI,CACb,EAEUrI,UAAY,SAAStyC,GAClB,SAAGg7C,EAAOniD,OAAS,EAChC,EAEUy5C,MAAQ,SAAStyC,GAMdzH,IAJP,IAAIyiB,EAAOggC,EAEPziD,EAAI,EAEDA,EAAI,EAAIyiB,EAAKniB,QAAQ,CAE1B,IAAIwD,GAAO,IAAO2e,EAAKziB,KAAO,EAAM,IAAOyiB,EAAKziB,EAAI,GAEhD,GAAA,OAAU8D,GAAKA,GAAK,MACtBA,GAAK,UACI,MAAA,OAAUA,GAAKA,GAAK,OAGvB,KAAA,oBAAsB9D,EAAI,GAAK,IAAM8D,EAF3CA,GAAK,KAGN,CAEDA,EAA0B,KAAnBA,IAAM,EAAK,MAAoB,IAAJA,GAE3B2D,EAAAq0C,IAAIh4C,EAAG,IAEd9D,GAAK,CACN,CAEGA,GAAAA,EAAIyiB,EAAKniB,OACX,KAAM,oBAAsBN,EAAI,EAExC,GAEW,OAAA+5C,CACX,EAUM2I,EAAwB,WAE1B,IAAID,EAAS,GAET1I,EAAQ,CAENA,UAAY,SAAS35C,GAClBqiD,EAAA/hD,KAAS,IAAJN,EAClB,EAEU25C,WAAa,SAAS/5C,GAC1B+5C,EAAM4I,UAAU3iD,GACV+5C,EAAA4I,UAAU3iD,IAAM,EAC5B,EAEI+5C,WAAmB,SAAS35C,EAAGwiD,EAAKlhD,GAClCkhD,EAAMA,GAAO,EACblhD,EAAMA,GAAOtB,EAAEE,OACf,IAAA,IAASN,EAAI,EAAGA,EAAI0B,EAAK1B,GAAK,EACtB+5C,EAAA4I,UAAUviD,EAAEJ,EAAI4iD,GAE9B,EAEU7I,YAAc,SAASn6C,GAC3B,IAAA,IAASI,EAAI,EAAGA,EAAIJ,EAAEU,OAAQN,GAAK,EACjC+5C,EAAM4I,UAAU/iD,EAAEW,WAAWP,GAErC,EAEI+5C,YAAoB,WACX,OAAA0I,CACb,EAEI1I,SAAiB,WACf,IAAIn6C,EAAI,GACRA,GAAK,IACL,IAAA,IAASI,EAAI,EAAGA,EAAIyiD,EAAOniD,OAAQN,GAAK,EAClCA,EAAI,IACNJ,GAAK,KAEPA,GAAK6iD,EAAOziD,GAGPJ,OADPA,GAAK,GAEX,GAEW,OAAAm6C,CACX,EA4EMsG,EAA0B,SAASwC,GAErC,IAAIC,EAAOD,EACPE,EAAO,EACPf,EAAU,EACVgB,EAAU,EAEVjJ,EAAQ,CAEZA,KAAa,WAEX,KAAOiJ,EAAU,GAAG,CAEd,GAAAD,GAAQD,EAAKxiD,OAAQ,CACvB,GAAe,GAAX0iD,EACK,OAAA,EAET,KAAM,2BAA6BA,CACpC,CAEGl/C,IAAAA,EAAIg/C,EAAKzD,OAAO0D,GAGpB,GAFQA,GAAA,EAEC,KAALj/C,EAEK,OADGk/C,EAAA,GACH,EACEl/C,EAAEm/C,MAAM,UAKnBjB,EAAWA,GAAW,EAAKrpC,EAAO7U,EAAEvD,WAAW,IACpCyiD,GAAA,EACZ,CAEGz/C,IAAAA,EAAKy+C,IAAagB,EAAU,EAAO,IAEhCz/C,OADIy/C,GAAA,EACJz/C,CACb,GAEQoV,EAAS,SAAS7U,GAChB,GAAA,IAAQA,GAAKA,GAAK,GACpB,OAAOA,EAAI,GACF,GAAA,IAAQA,GAAKA,GAAK,IAC3B,OAAOA,EAAI,GAAO,GACT,GAAA,IAAQA,GAAKA,GAAK,GAC3B,OAAOA,EAAI,GAAO,GAC1B,GAAsB,IAALA,EACF,OAAA,GACf,GAAsB,IAALA,EACF,OAAA,GAEP,KAAM,KAAOA,CAErB,EAEW,OAAAi2C,CACX,EAwNMmF,EAAgB,SAAS7O,EAAO6D,EAAQgP,GAE1C,IADI,IAAAC,EAnNS,SAAS9S,EAAO6D,GAE7B,IAAIkP,EAAS/S,EACTgT,EAAUnP,EACVmO,EAAQ,IAAI/gD,MAAM+uC,EAAQ6D,GAE1B6F,EAAQ,CAEZA,SAAiB,SAAS/2C,EAAGK,EAAGigD,GACxBjB,EAAAh/C,EAAI+/C,EAASpgD,GAAKsgD,CAC9B,EAEUvJ,MAAQ,SAASp2C,GAKrBA,EAAI4/C,YAAY,UAKhB5/C,EAAI6/C,WAAWJ,GACfz/C,EAAI6/C,WAAWH,GAEf1/C,EAAIg/C,UAAU,KACdh/C,EAAIg/C,UAAU,GACdh/C,EAAIg/C,UAAU,GAMdh/C,EAAIg/C,UAAU,GACdh/C,EAAIg/C,UAAU,GACdh/C,EAAIg/C,UAAU,GAGdh/C,EAAIg/C,UAAU,KACdh/C,EAAIg/C,UAAU,KACdh/C,EAAIg/C,UAAU,KAKdh/C,EAAI4/C,YAAY,KAChB5/C,EAAI6/C,WAAW,GACf7/C,EAAI6/C,WAAW,GACf7/C,EAAI6/C,WAAWJ,GACfz/C,EAAI6/C,WAAWH,GACf1/C,EAAIg/C,UAAU,GAQd,IACIc,EAASC,EADQ,GAGrB//C,EAAIg/C,UAHiB,GAOd,IAFP,IAAIrG,EAAS,EAENmH,EAAOnjD,OAASg8C,EAAS,KAC9B34C,EAAIg/C,UAAU,KACVh/C,EAAAggD,WAAWF,EAAQnH,EAAQ,KACrBA,GAAA,IAGR34C,EAAAg/C,UAAUc,EAAOnjD,OAASg8C,GAC9B34C,EAAIggD,WAAWF,EAAQnH,EAAQmH,EAAOnjD,OAASg8C,GAC/C34C,EAAIg/C,UAAU,GAIdh/C,EAAI4/C,YAAY,IACtB,GAqCQG,EAAe,SAASE,GAS1B,IAPA,IAAIC,EAAY,GAAKD,EACjBE,EAAkC,GAAvB,GAAKF,GAChBG,EAAYH,EAAiB,EAG7BI,EAAQC,IAEHjkD,EAAI,EAAGA,EAAI6jD,EAAW7jD,GAAK,EAClCgkD,EAAMpyC,IAAIjR,OAAOC,aAAaZ,IAEhCgkD,EAAMpyC,IAAIjR,OAAOC,aAAaijD,IAC9BG,EAAMpyC,IAAIjR,OAAOC,aAAakjD,IAE9B,IAhDII,EACAC,EACAC,EA8CAC,EAAU3B,IACV4B,GAjDAJ,EAiDyBG,EAhDzBF,EAAa,EACbC,EAAa,EAEL,CAEZrK,MAAc,SAASt3B,EAAMniB,GAErB,GAAAmiB,IAASniB,GAAW,EAClB,KAAA,cAGD,KAAA6jD,EAAa7jD,GAAU,GAC5B4jD,EAAKvB,UAAU,KAAUlgC,GAAQ0hC,EAAcC,IAC/C9jD,GAAW,EAAI6jD,EACf1hC,KAAW,EAAI0hC,EACFC,EAAA,EACAD,EAAA,EAGfC,GAAc3hC,GAAQ0hC,EACtBA,GAA0B7jD,CAClC,EAEMy5C,MAAc,WACRoK,EAAa,GACfD,EAAKvB,UAAUyB,EAEzB,IAwBaE,EAAApI,MAAM2H,EAAWE,GAExB,IAAIQ,EAAY,EAEZ3kD,EAAIe,OAAOC,aAAayhD,EAAMkC,IAG3B,IAFMA,GAAA,EAENA,EAAYlC,EAAM/hD,QAAQ,CAE/B,IAAIwD,EAAInD,OAAOC,aAAayhD,EAAMkC,IACrBA,GAAA,EAETP,EAAMrN,SAAS/2C,EAAIkE,GAErBlE,GAAQkE,GAIRwgD,EAAOpI,MAAM8H,EAAM31B,QAAQzuB,GAAImkD,GAE3BC,EAAM7K,OAAS,OAEb6K,EAAM7K,QAAW,GAAK4K,IACXA,GAAA,GAGTC,EAAApyC,IAAIhS,EAAIkE,IAGhBlE,EAAIkE,EAEP,CASD,OAPAwgD,EAAOpI,MAAM8H,EAAM31B,QAAQzuB,GAAImkD,GAGxBO,EAAApI,MAAM4H,EAASC,GAEtBO,EAAOE,QAEAH,EAAQI,aACrB,EAEQR,EAAW,WAEb,IAAIS,EAAO,CAAA,EACPC,EAAQ,EAER5K,EAAQ,CAEZA,IAAY,SAAS/yC,GACf+yC,GAAAA,EAAMpD,SAAS3vC,GACjB,KAAM,WAAaA,EAErB09C,EAAK19C,GAAO29C,EACHA,GAAA,CACjB,EAEM5K,KAAa,WACJ,OAAA4K,CACf,EAEM5K,QAAgB,SAAS/yC,GACvB,OAAO09C,EAAK19C,EACpB,EAEM+yC,SAAiB,SAAS/yC,GACjB,YAAoB,IAAb09C,EAAK19C,EAC3B,GAEa+yC,OAAAA,CACb,EAEW,OAAAA,CACX,CAGc6K,CAASvU,EAAO6D,GACjB7wC,EAAI,EAAGA,EAAI6wC,EAAQ7wC,GAAK,EAC/B,IAAA,IAASL,EAAI,EAAGA,EAAIqtC,EAAOrtC,GAAK,EAC9BmgD,EAAI0B,SAAS7hD,EAAGK,EAAG6/C,EAASlgD,EAAGK,IAInC,IAAIjD,EAAIsiD,IACRS,EAAIjH,MAAM97C,GAIV,IAFA,IAAI0kD,EAlWyB,WAE7B,IAAI9C,EAAU,EACVgB,EAAU,EACVf,EAAU,EACV8C,EAAU,GAEVhL,EAAQ,CAAA,EAERiL,EAAe,SAAS5kD,GAC1B2kD,GAAWpkD,OAAOC,aAAauX,EAAW,GAAJ/X,GAC5C,EAEQ+X,EAAS,SAAS5U,GACpB,GAAIA,EAAI,OAAG,IAEAA,EAAI,GACb,OAAO,GAAOA,EACtB,GAAiBA,EAAI,GACb,OAAeA,EAAI,GAAZ,GACf,GAAiBA,EAAI,GACb,OAAeA,EAAI,GAAZ,GACf,GAAsB,IAALA,EACF,OAAA,GACf,GAAsB,IAALA,EACF,OAAA,EACR,CACD,KAAM,KAAOA,CACnB,EAmCW,OAjCDw2C,EAAA4I,UAAY,SAASp/C,GAMzB,IAJWy+C,EAAAA,GAAW,EAAU,IAAJz+C,EACjBy/C,GAAA,EACAf,GAAA,EAEJe,GAAW,GACHgC,EAAAhD,IAAagB,EAAU,GACzBA,GAAA,CAEnB,EAEIjJ,EAAMyK,MAAQ,WAQR,GANAxB,EAAU,IACCgC,EAAAhD,GAAY,EAAIgB,GACnBhB,EAAA,EACAgB,EAAA,GAGRf,EAAU,GAAK,EAGjB,IADI,IAAAgD,EAAS,EAAIhD,EAAU,EAClBjiD,EAAI,EAAGA,EAAIilD,EAAQjlD,GAAK,EACpB+kD,GAAA,GAGrB,EAEIhL,EAAM34C,SAAW,WACR,OAAA2jD,CACb,EAEWhL,CACX,CAkSiBmL,GACTx4C,EAAQtM,EAAEqkD,cACLzkD,EAAI,EAAGA,EAAI0M,EAAMpM,OAAQN,GAAK,EAC9B8kD,EAAAnC,UAAUj2C,EAAM1M,IAIzB,OAFA8kD,EAAON,QAEA,yBAA2BM,CACtC,EAKSzL,OAAAA,CACT,CArrEa,GA0rEXA,EAAO0G,mBAAmB,SAAW,SAASngD,GAgC5C,OA9BA,SAAqBijD,GAEnB,IADA,IAAIsC,EAAO,GACFnlD,EAAE,EAAGA,EAAI6iD,EAAIviD,OAAQN,IAAK,CAC7B,IAAAolD,EAAWvC,EAAItiD,WAAWP,GAC1BolD,EAAW,IAAMD,EAAKzkD,KAAK0kD,GACtBA,EAAW,KACbD,EAAAzkD,KAAK,IAAQ0kD,GAAY,EAC1B,IAAmB,GAAXA,GAELA,EAAW,OAAUA,GAAY,MACnCD,EAAAzkD,KAAK,IAAQ0kD,GAAY,GAC1B,IAASA,GAAU,EAAK,GACxB,IAAmB,GAAXA,IAIZplD,IAIAolD,EAAW,QAAwB,KAAXA,IAAmB,GAClB,KAApBvC,EAAItiD,WAAWP,IACfmlD,EAAAzkD,KAAK,IAAQ0kD,GAAW,GACzB,IAASA,GAAU,GAAM,GACzB,IAASA,GAAU,EAAK,GACxB,IAAmB,GAAXA,GAEf,CACM,OAAAD,CACR,CACME,CAAYzlD,EACvB,EAQMiC,EAAAD,QAGKy3C,2BCvvEJ,SAASiM,GAAgB/Z,GAC5B,aAAIga,2BAAWC,WACJD,UAAUC,UAAUC,UAAUla,IAO7C,SAAqCA,GAC3B,MAAAma,EAAW12B,SAASyP,cAAc,YACxCinB,EAASttC,MAAQmzB,EAEjBma,EAAS1kB,MAAM8S,IAAM,IACrB4R,EAAS1kB,MAAMgT,KAAO,IACtB0R,EAAS1kB,MAAM2kB,SAAW,QAEjB32B,SAAApN,KAAKwiB,YAAYshB,GAC1BA,EAASE,QACTF,EAASG,SAEL,IACA72B,SAAS82B,YAAY,OAAM,CAC7B,QACW92B,SAAApN,KAAK6jB,YAAYigB,EAC9B,CACJ,CArBIK,CAA4Bxa,GACrB/vB,QAAQC,UACnB,CCHA,IAAIuqC,GAAiB,CAAC3d,EAAKroB,EAAM8W,KAC/B,MAAM1e,EAAQ4H,EAAKugB,OAAOnQ,MAAM,KAAKzd,QAAO,CAACpK,EAAGnI,IAAMmI,EAAIA,EAAEnI,QAAK,GAAQioC,GAClE,YAAU,IAAVjwB,EAAmBA,EAAQ0e,CAAA,EAGhCmvB,GAAoB,CAACjkD,EAAO,CAAA,EAAIkkD,GAAOX,UAAUY,YAAYnkD,EAAOujD,UAAUY,SAAW3pC,OAAOmZ,KAAK3zB,GAAM,OAC7G,MAAOokD,EAAQC,GAAajzB,GAAa8yB,IAClCI,EAAMC,GAAWnc,GAAYpoC,GAgB7B,MAAA,CAfW,CAACgF,EAAK6X,EAAQiY,KAC9B,MAAMoV,EAAM8Z,GAAeM,EAAKF,KAAWp/C,EAAK8vB,GAAgB,IAChE,MAAmB,mBAARoV,EACFA,EAAIrtB,GACM,iBAARqtB,EARA,EAAC2W,EAAKhkC,EAAQ+R,EAAM,eAAiBiyB,EAAI/xB,QAAQF,GAAK,CAAChI,EAAG5hB,IAAQg/C,GAAennC,EAAQ7X,EAAK,MAShGq3B,CAAS6N,EAAKrtB,GAAU,CAAE,GAC5BqtB,CAAA,EAEO,CACdt6B,IAAI40C,EAAOxC,GACDuC,EAAAC,GAAQ19C,GAAM0T,OAAOsJ,OAAOhd,GAAK,CAAA,EAAIk7C,IAC9C,EACDoC,OAASI,GAAUA,EAAQH,EAAUG,GAASJ,IAC9CE,KAAOE,GAAUR,GAAeM,EAAME,IAEd,EAExBC,GAAc5vB,GAAc,CAAA,GAC5B6vB,GAAU,IAAM1vB,GAAWyvB,ICrBxB,MAAME,GAAoDntB,IACvD,MAAC1wB,GAAK49C,KAEZ,OAAAE,IAAU99C,WAAAA,OAAAA,EAAE0wB,EAAMqtB,eAAgBrtB,EAAMstB,kBAAmBttB,OAAAA,EAAAA,EAAMtC,eAANsC,EAAAA,EAAgBp4B,WAAU,GAAC,uBCiBpF2lD,GAA2B,CAC7BF,eAAgB,kBAChBtb,KAAM,aAGJyb,GAA6B,CAC/BH,eAAgB,gBAChBtb,KAAM,WAGG0b,GAA0CztB,IAC/C0tB,IAAAA,EACAC,EACAC,EAEJ,MAAOC,EAAkBC,GAAuBl0B,IAAa,IACtDm0B,EAAmBC,GAAwBp0B,IAAa,IACxDq0B,EAAWC,GAAgBt0B,IAAa,IACxCu0B,EAAgBC,GAAqBx0B,GAA6B2zB,KAElEc,EAASC,GAAc10B,GLnCJ,IKqC1BU,IAAa,IAAMwzB,EAAoBC,KAAuBE,OAE9D3zB,IAAa,KAAOuzB,KAAsBO,EAAkBb,MAE5DjzB,IAAa,KACT,MAEMi0B,EAAK1O,GAAO,EAFW,KAG1BmE,EAAAA,QAAQhkB,EAAMwuB,WACjBD,EAAG/J,OACHkJ,EAAiBxoB,UAAYqpB,EAAGrJ,aAJf,EAIsC,GACjDuJ,MAAAA,EAASf,EAAiBtP,kBAAmBsQ,YAE7ClX,EAAQtoC,KAAKy/C,MLrDC,IKqDqBF,EAAU,KAAU,IAE7D,GAAIb,EAAU,CACV,MAAMgB,EAVO,EAUG1/C,KAAK2/C,KLvDH,IK6CL,EAU+BrX,IACtCsX,EAAY/Y,GAXL,EAWU7mC,KAAK2/C,MAAMJ,EAASG,GAAY,IACvDhB,EAASpmB,MAAM8S,IAAMwU,EACrBlB,EAASpmB,MAAMgT,KAAOsU,EACbtnB,EAAAA,MAAMkT,OAAS3E,GAAK6Y,GACpBpnB,EAAAA,MAAMqP,MAAQd,GAAK6Y,GAE5BN,EAAWp/C,KAAKy/C,ML5DE,GK4DqBnX,GAC3C,CAEkBhQ,EAAAA,MAAMmU,UAAa,SAAQnE,IAAAA,IAGjD,IAAIuX,EAAkD,KACtD,MAAMC,EAAcA,KAChBlD,GAAgB9rB,EAAMwuB,WACtBJ,EAAkBZ,IAED,MAAbuB,GACAE,aAAaF,GAGjBA,EAAYG,YAAW,IAAMd,EAAkBb,KAAW,IAAI,EAGlE,OAAAxY,GACKuK,GAAgB,CAAArb,YAAA,OAAQjE,EAAMiE,KAAK,EAAAvG,eAAAqX,MAAAA,CAAAA,GAC/ByK,GAAa,CAAA7Z,IAAA8P,sBACLkY,IAAgBlY,GAAhBkY,EAAgBlY,CAAA,EACrBsC,aAAcA,IAAMmW,GAAa,GACjClW,aAAcA,IAAMkX,YAAW,IAAMhB,GAAa,KAAOxwB,eAAA,MAAA,OAAA6e,MAAAA,EAAAC,GAAA5V,WAAA,GAEhC2V,MAAAiC,mBAAfkP,EAAelP,GAAfkP,EAAenR,GAAfmR,EAAenR,EAAAA,MAAAxH,GACxBjS,GAAI,CAACI,WAAI,OAAElD,EAAMtQ,QAAQ,EAAAgO,eAAA,OAAAqX,GACrB0K,GAAe,CAAA9Z,IAAA8P,sBAAMmY,IAAQnY,GAARmY,EAAQnY,CAAA,EAAA/X,eAAA,OAAAqX,GACzB2K,GAAW,CAACpK,UAAG,OAAEtV,EAAMtQ,QAAQ,EAAG6lB,IAAI,GAAGoK,WAAI,OAAE0O,GAAS,GAAA,GAAA,IAAA,IAAAtZ,GAIpE/b,GAAU,CACP8f,cAAqB7N,IACjBA,EAAGkT,QACC,CACI,CAAEvI,QAAS,EAAG+F,UAAW,yBACzB,CAAE/F,QAAS,EAAG+F,UAAW,uBAE7B,CACIuC,SAAU,KACb,EAGThF,OAAQA,CAACjO,EAAI1oB,KACT0oB,EAAGkT,QACC,CACI,CAAEvI,QAAS,EAAG+F,UAAW,sBACzB,CAAE/F,QAAS,EAAG+F,UAAW,0BAE7B,CACIuC,SAAU,MAEhBK,SAAS/7B,MAAK,WAEf,EACJkb,eAAA,OAAAqX,GAEAjS,GAAI,CAACI,WAAM2qB,OAAAA,MAAuB7tB,EAAMmvB,WAAW,EAAAzxB,eAAA,OAAAqX,GAC/C6K,GAAgB,CACb9H,QAASkX,EACTjX,aAAcA,IAAM8V,KAAsBG,GAAqB,GAC/DhW,aAAcA,IAAMkX,YAAW,IAAMlB,GAAqB,KAAOtwB,eAAA,OAAAqX,GAEhEoY,GAAW,CAACE,qBAAc,OAAEc,IAAiBd,cAAc,EAAA3vB,eAAA,OACvDywB,IAAiBpc,IAAI,GAAA,GAAA,GAAA,IAAA,GAAA,ECxIrCqd,GAAahhB,GAAO6G,GAAA;;sBAOLjV,EAAMqvB;oBACRrvB,EAAMsvB;sBACJtvB,EAAMuvB;;gBAEZvvB,EAAM2V;ECKf6Z,GAAuCC,IAChD,MAAMniB,EAAQC,MACPj+B,GAAK49C,KACRwC,IAAAA,EAEJ,MAEM1vB,EAAQc,GACV,CACIwuB,SAAU,OACVD,WAAY,MACZE,WAAY,QAEhBE,GAiBJ,OAdAn1B,IAAa,KACJo1B,GAIgB,UAAjB1vB,EAAM2vB,QAI+B,YAArC1R,iBAAiByR,GAASC,SAC1BD,EAAQloB,MAAMmoB,OAAS,UAC3B,IAGJ5a,GACKqa,GAAU,CACPE,eAAQ,OAAEtvB,EAAMsvB,QAAQ,EACxBD,iBAAU,OAAErvB,EAAMqvB,UAAU,EAC5BE,iBAAU,OAAEvvB,EAAMuvB,UAAU,EAC5B5Z,YAAK,OA9BuB8Z,EAAO9Z,OAASrI,EAAM8G,OAAOrC,KAAKL,OA8BhD,EAAAzN,YAAA,OACPjE,EAAMiE,KAAK,EAAA0B,IAAA8P,sBACbia,IAAOja,GAAPia,EAAOja,CAAA,EAAA,eACC,OAAM/X,qBAElB0vB,OAAAA,IAAAptB,MAAAA,EAAMqtB,gBAAND,GACK99C,EAAE0wB,EAAMqtB,eAAgBrtB,EAAMstB,kBAAmBttB,OAAAA,EAAAA,EAAMtC,iBAANsC,EAAgBp4B,YACjEo4B,EAAMtC,QAAQ,GAAA,ECzDnBkyB,GAAmBxhB,GAAOkJ,MAAA;;;;;;;;;;;;;MAajCL;;;;;;;;;;MAUAF,GAAM;;;;;;MAMNC;;;;;EAOO0I,GAActR,GAAO8G,GAAK;;;;;;;MAOjC6B,GAAM;;;;;EAOC8Y,GAAazhB,GAAOohB,GAAI;;;;;;EC5CxBM,GAAkD9vB,GAC3D+U,GACK6a,GAAgB,CAAA3rB,YAAA,OAAQjE,EAAMiE,KAAK,EAAE6T,QAASA,IAAM9X,EAAM8X,UAAS,sBAAsB,OAAMpa,eAAAqX,MAAAA,CAAAA,GAC3F2K,GAAW,CAACpK,UAAG,OAAEtV,EAAM+vB,OAAO,EAAExa,IAAI,KAAER,GACtC8a,GAAU,CAAAnyB,eAAA,OAAEsC,EAAMld,IAAI,IAAA,ICZtBktC,GAAW5hB,GAAOr6B,EAAA;;;;;;;;aAQTisB,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKL;;;;;;ECAlCue,GAAkCjwB,IACrC,MAAC1wB,GAAK49C,KACZ,OAAAnY,GACKib,GAAQ,CAAA/rB,YAAA,OAAQjE,EAAMiE,KAAK,EAAA,aAAa,OAAMvG,qBAC1C0vB,OAAAA,IAAAptB,MAAAA,EAAMqtB,gBAAND,GACK99C,EAAE0wB,EAAMqtB,eAAgBrtB,EAAMstB,kBAAmBttB,OAAAA,EAAAA,EAAMtC,iBAANsC,EAAgBp4B,YACjEo4B,EAAMtC,QAAQ,GAAA,ECdnBwyB,GAAW9hB,GAAOp6B,EAAA;;;;;;;;aAQTgsB,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKJ;;;;;;ECAlCwe,GAAkCnwB,IACrC,MAAC1wB,GAAK49C,KACZ,OAAAnY,GACKmb,GAAQ,CAAAjsB,YAAA,OAAQjE,EAAMiE,KAAK,EAAA,aAAa,OAAMvG,qBAC1C0vB,OAAAA,IAAAptB,MAAAA,EAAMqtB,gBAAND,GACK99C,EAAE0wB,EAAMqtB,eAAgBrtB,EAAMstB,kBAAmBttB,OAAAA,EAAAA,EAAMtC,iBAANsC,EAAgBp4B,YACjEo4B,EAAMtC,QAAQ,GAAA,ECdnB0yB,GAAWhiB,GAAOn6B,EAAA;;;;;;aAMT+rB,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKL;;;;;;ECClC2e,GAAkCrwB,IACrC,MAAC1wB,GAAK49C,KAEZ,OAAAnY,GACKqb,GAAQ,CAAA,aAAY,OAAM1yB,qBACtB0vB,OAAAA,IAAAptB,MAAAA,EAAMqtB,gBAAND,GACK99C,EAAE0wB,EAAMqtB,eAAgBrtB,EAAMstB,kBAAmBttB,OAAAA,EAAAA,EAAMtC,iBAANsC,EAAgBp4B,YACjEo4B,EAAMtC,QAAQ,GAAA,mQCRnB4yB,GAAwDtwB,IACjE,MAAMsN,EAAQC,KAGd,MAAA,MAAA,MAAAgP,EAAAC,GAAA5V,WAAA,GAAAgW,EAAAL,EAAAnX,WAU0BmX,OAV1BE,QAAAC,GAAAE,EAAA,SAFmC5c,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAKE,aAYzC4K,GAV1B,ggCCJSgU,GAA4CvwB,IACrD,MAAMsN,EAAQC,KAGd,MAAA,MAAA,MAAAgP,EAAAC,GAAA5V,WAAA,GAAAgW,EAAAL,EAAAnX,WAYwBmX,OAZxBE,QAAAC,GAAAE,EAAA,OAF2B5c,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAKC,WAcnC6K,GAZxB,28BCFSiU,GAAoDxwB,IAC7D,MAAMsN,EAAQC,KAGR6O,EAAOA,IAAcpc,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAKI,QAE3D,OAAAub,SAAA,MAAAqD,EAAArD,QAEoB,OALUptB,EAAM2f,MAAQ,OAKrB,MAAA,IAAd8Q,IAAA,MAAAlU,MAAAA,EAAAC,GAAA5V,WAAA,GAAAgW,EAAAL,EAAAnX,WAAAsrB,EAAA9T,EAAA1T,YAY4CqT,OAZ5CE,IAAAkU,IAAAC,MAAAA,EAOc5wB,EAAMiE,MAAK4sB,EAEmBzU,IAAM0U,EAGjCxjB,EAAM8G,OAAOlD,SAASE,MAAKuf,OAAAC,IAAAD,EAAAC,KAAAlU,GAAAH,EAAAoU,QAAAA,EAAAC,IAAAA,GAAAC,IAAAF,EAAAE,MAAAnU,GAAAE,EAAA+T,OAAAA,EAAAE,KAAAA,GAAAC,IAAAH,EAAAG,MAAApU,GAAAgU,EAAAC,OAAAA,EAAAG,KAAAA,GAAAH,CAAAA,GAAA,CAAAC,SAAAG,EAAAF,UAAAE,EAAAD,UAAAC,IAAAxU,CAAA,EAZ5C,SAY4CyU,MAAAA,EAAAC,GAAArqB,WAAA,GAAAsqB,EAAAF,EAAA5rB,WAAA+rB,EAAAD,EAAAhoB,YAeA8nB,OAfAvU,IAAAkU,IAAAS,MAAAA,EAU9BpxB,EAAMiE,MAAKotB,EAEmBjV,IAAMkV,EAGjChkB,EAAM8G,OAAOlD,SAASE,MAAKuf,OAAAS,IAAAT,EAAAS,MAAA1U,GAAAsU,EAAAL,QAAAA,EAAAS,KAAAA,GAAAC,IAAAV,EAAAU,MAAA3U,GAAAwU,EAAAP,OAAAA,EAAAU,KAAAA,GAAAC,IAAAX,EAAAW,MAAA5U,GAAAyU,EAAAR,OAAAA,EAAAW,KAAAA,GAAAX,CAAAA,GAAA,CAAAS,UAAAL,EAAAM,UAAAN,EAAAO,UAAAP,IAAAC,UAG5C,y0CCtCAO,GAAgDvxB,IACzD,MAAMsN,EAAQC,KAGR6O,EAAOA,IAAcpc,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAK/sB,MAE3D,OAAA0oC,SAAA,MAAAqD,EAAArD,QAEoB,OALUptB,EAAM2f,MAAQ,OAKrB,MAAA,IAAd8Q,IAAA,MAAAlU,MAAAA,EAAAC,GAAA5V,WAAA,GAAAgW,EAAAL,EAAAnX,WAAAsrB,EAAA9T,EAAA1T,YAY4CqT,OAZ5CE,IAAAkU,IAAAC,MAAAA,EAOc5wB,EAAMiE,MAAK4sB,EAEmBzU,IAAM0U,EAGjCxjB,EAAM8G,OAAOlD,SAASE,MAAKuf,OAAAC,IAAAD,EAAAC,KAAAlU,GAAAH,EAAAoU,QAAAA,EAAAC,IAAAA,GAAAC,IAAAF,EAAAE,MAAAnU,GAAAE,EAAA+T,OAAAA,EAAAE,KAAAA,GAAAC,IAAAH,EAAAG,MAAApU,GAAAgU,EAAAC,OAAAA,EAAAG,KAAAA,GAAAH,CAAAA,GAAA,CAAAC,SAAAG,EAAAF,UAAAE,EAAAD,UAAAC,IAAAxU,CAAA,EAZ5C,SAY4CyU,MAAAA,EAAAC,GAAArqB,WAAA,GAAAsqB,EAAAF,EAAA5rB,WAAA+rB,EAAAD,EAAAhoB,YAeA8nB,OAfAvU,IAAAkU,IAAAS,MAAAA,EAU9BpxB,EAAMiE,MAAKotB,EAEmBjV,IAAMkV,EAGjChkB,EAAM8G,OAAOlD,SAASE,MAAKuf,OAAAS,IAAAT,EAAAS,MAAA1U,GAAAsU,EAAAL,QAAAA,EAAAS,KAAAA,GAAAC,IAAAV,EAAAU,MAAA3U,GAAAwU,EAAAP,OAAAA,EAAAU,KAAAA,GAAAC,IAAAX,EAAAW,MAAA5U,GAAAyU,EAAAR,OAAAA,EAAAW,KAAAA,GAAAX,CAAAA,GAAA,CAAAS,UAAAL,EAAAM,UAAAN,EAAAO,UAAAP,IAAAC,UAG5C,07BCrCAQ,GAAkDxxB,IAC3D,MAAMsN,EAAQC,KAGR6O,EAAOA,IAAcpc,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAKG,SAWrD6f,EAAW5jB,EAAAA;qBATO6jB,EAAAA;;;;;;;;MAaxB,OAAAtE,SAAA,MAAAqD,EAAArD,QAEoB,OAlBUptB,EAAM2f,MAAQ,OAkBrB,MAAA,IAAd8Q,IAAA,MAAA,MAAAlU,EAAAC,GAAA5V,WAAA,GAAAgW,EAAAL,EAAAnX,WAWuBmX,OAXvBE,IAAAkU,IAAA,MAAAC,EAOchS,GAAG6S,EAAUzxB,EAAMiE,OAAM4sB,EAItBzU,IAAMuU,OAAAC,IAAAD,EAAAC,KAAAlU,GAAAH,EAAAoU,QAAAA,EAAAC,IAAAA,GAAAC,IAAAF,EAAAE,MAAAnU,GAAAE,EAAA+T,OAAAA,EAAAE,KAAAA,GAAAF,CAAAA,GAAA,CAAAC,SAAAG,EAAAF,UAAAE,IAAAxU,CAAA,EAXvB,SAWuB,MAAAmU,EAAAO,GAAArqB,WAAA,GAAAoqB,EAAAN,EAAAtrB,WAcEsrB,OAdFjU,IAAAkU,IAAA,MAAAG,EAUTlS,GAAG6S,EAAUzxB,EAAMiE,OAAMmtB,EAIpBhV,IAAMuU,OAAAG,IAAAH,EAAAG,MAAApU,GAAAgU,EAAAC,QAAAA,EAAAG,KAAAA,GAAAM,IAAAT,EAAAS,MAAA1U,GAAAsU,EAAAL,SAAAA,EAAAS,KAAAA,GAAAT,CAAAA,GAAA,CAAAG,UAAAC,EAAAK,UAAAL,IAAAL,UAMzB,EC5DAiB,GAAsBt0B,s+GCKtBu0B,GAA8C5xB,IACvD,MAAMsN,EAAQC,KAGd,MAAA,MAAA,MAAAgP,EAAAC,GAAA5V,WAAA,GAAAgW,EAAAL,EAAAnX,WAYwBmX,OAZxBE,QAAAC,GAAAE,EAAA,OAF2B5c,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAKC,WAcnC6K,GAZxB,6rDCJSsV,GAA0D7xB,IACnE,MAAMsN,EAAQC,KACR6O,EAAOA,IAAcpc,EAAMoc,MAAQ9O,EAAM8G,OAAO3C,KAAKC,QAE3D,MAAA,MAAA6K,MAAAA,EAAAC,GAAA5V,WAAA,GAAAgW,EAAAL,EAAAnX,WAAAsrB,EAAA9T,EAAA1T,YAcwBqT,OAdxBE,IAAAkU,IAAA,MAAAC,EAUkBxU,IAAMyU,EAINzU,IAAMuU,OAAAC,IAAAD,EAAAC,KAAAlU,GAAAE,EAAA+T,OAAAA,EAAAC,IAAAA,GAAAC,IAAAF,EAAAE,MAAAnU,GAAAgU,EAAAC,OAAAA,EAAAE,KAAAA,GAAAF,CAAAA,GAAA,CAAAC,SAAAG,EAAAF,UAAAE,IAAAxU,GAdxB,ICTEuV,GAAmC,CACrC9kD,EAAG,MACH5G,EAAG,MACH+wC,KAAM,KAGJ4a,GAAsC,CACxC/kD,EAAG,OACH5G,EAAG,MACH+wC,KAAM,KAGG6a,GAA8B5jB,GAAO6G,GAAA;;;qBAG7BjV,GAAS+xB,GAAgB/xB,EAAMsN,MAAO+G;;wBAE1BrU,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWI;;aAE1C1R,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKL;EAGlCugB,GAAW7jB,GAAO8jB,EAAA;wBACElyB,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWI;;EAInDygB,GAAmB/jB,GAAOkJ,MAAA;;;;;;;;wBAQNtX,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWI;;qBAE3C1R,GAAS8xB,GAAa9xB,EAAMsN,MAAO+G;;;;;;4BAMnBrU,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWK;;;;;;qBCnC9DygB,GAAqErd,GAAAA,GACtEya,GAAI,CAACnC,qBAAc,OAAErtB,EAAMqtB,cAAc,EAAEiC,SAAS,OAAOD,WAAW,MAAK3xB,eAAA,OACvEsC,EAAMtC,QAAQ,ICTjBwZ,GAA8B,CAChClqC,EAAG,OACH5G,EAAG,MACH+wC,KAAM,KAEGkb,GAAqBjkB,GAAO6G,GAAA;;;;;;wBAMRjV,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWI;;qBAE3C1R,GAASkX,GAAQlX,EAAMsN,MAAO+G;EAGtCie,GAA4BlkB,GAAO6G,GAAA;;EAInCma,GAAahhB,GAAOohB,GAAI;;aAEfxvB,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKJ;ECVlC4gB,GAAsDvyB,IACzD2X,MAAAA,EAAYF,GAAkBzX,GAEpC+U,OAAAA,GACKsd,GAAkBxa,GAAA,CAAA5T,YAAA,OAAQjE,EAAMiE,KAAK,EAAA,uBAAuB,QAAW0T,EAAS,CAAAja,eAAAqX,MAAAA,CAAAA,GAC5Eud,GAAyB,CAAA50B,eAAAqX,MAAAA,CAAAA,GACrBsb,GAAE,CACChD,qBAAc,OAAErtB,EAAMwyB,OAAOnF,cAAc,EAC3CC,wBAAiB,OAAEttB,EAAMwyB,OAAOlF,iBAAiB,EAAA5vB,eAAA,OAEhDsC,EAAMtC,QAAQ,IAAAqX,GAElBjS,GAAI,CAACI,WAAI,OAAElD,EAAM+R,IAAI,EAAArU,eAAA,OAAAqX,GACjBqa,GAAU,CACP/B,qBAAc,OAAErtB,EAAM+R,KAAMsb,cAAc,EAC1CC,wBAAiB,OAAEttB,EAAM+R,KAAMub,iBAAiB,GAAA,IAAA,IAAAF,IAAA,IAI3DptB,EAAMyR,OAAI,IAAA,EChCVghB,GAAmBrkB,GAAOojB,GAAU;;ECMpCkB,GAAsF1yB,UACzF2yB,MAAAA,EAAen1B,GAAWm0B,KACzBriD,GAAK49C,KACNpqC,GAAO6vC,OAAAA,EAAAA,EAAcpjC,aAAdojC,EAAAA,EAAsB7vC,OAAQxT,EAAE,oBAAqB,GAAI,eAEtE,OAAAylC,GACKwd,GAAY,CACTC,OAAQ,CAAEnF,eAAgB,+BAAgCC,kBAAmB,CAAExqC,SAAQmhB,YAAA,OAChFjE,EAAMiE,KAAK,EAClBwN,WAAIsD,OAAAA,GAAG0d,GAAgB,CAAA,EAAA,EAAA,+BACM,OAAM/0B,SAAA,oCAAA,EChBlCk1B,GAAkBxkB,GAAOmjB,GAAS;;ECIlCsB,GAAsF7yB,GAC/F+U,GACKwd,GAAY,CACTC,OAAQ,CAAEnF,eAAgB,4CAC1Btb,KAAM,CAAEsb,eAAgB,0CACxB5b,WAAIsD,OAAAA,GAAG6d,GAAe,CAAA,EAAA,EAAA3uB,YAAA,OACfjE,EAAMiE,KAAK,EAAA,oCACgB,OAAMvG,SAAA,0BCXvCo1B,GAAoB1kB,GAAOoiB,GAAW;;ECItCuC,GAEA/yB,GACT+U,GACKwd,GAAY,CACTC,OAAQ,CAAEnF,eAAgB,wCAC1Btb,KAAM,CAAEsb,eAAgB,sCACxB5b,WAAIsD,OAAAA,GAAG+d,GAAiB,CAAA,EAAA,EAAA7uB,YAAA,OACjBjE,EAAMiE,KAAK,EAAA,+BACW,OAAMvG,SAAA,qBCdlCs1B,GAAoBnlB,EAAAA;;;yDCIpBolB,GAAsB7kB,GAAOwJ,GAAM;wBACf5X,GAAAA,EAAMsN,MAAO8G,OAAO/C,cAAcC;aAC7CtR,GAAAA,EAAMsN,MAAO8G,OAAO/C,cAAcE;kBACtCvR,GAAS,cAAc0V,GAAK1V,EAAMsN,MAAO8G,OAAOlD,SAASC,MAAO;;;;;;;EASrE+hB,GAAuB9kB,GAAO6kB,GAAmB;;;;wBAI7BjzB,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWI;EAGnDyhB,GAAqB/kB,GAAOwJ,GAAM;;;;wBAId5X,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWI;aAC1C1R,GAAAA,EAAMsN,MAAO8G,OAAO/C,cAAcE;kBACtCvR,GAAS,cAAc0V,GAAK1V,EAAMsN,MAAO8G,OAAOlD,SAASC,MAAO;;;;;EAMrEshB,GAAmBrkB,GAAOojB,GAAU;;;EAKpC4B,GAA0BhlB,GAAO6G,GAAA;;;;EAMjCoe,GAAiBjlB,IV1BuDpO,IAC3EszB,MAAAA,EAAe91B,GAAWm0B,KACzB4B,EAAeC,GAAoB55B,IAAa,GAEjD65B,EAAS,IAA2BC,QAAAztD,KAAA,MAAA,YAChC0tD,MAAAA,EAAsBr9B,GACxBg9B,EAAax/B,QAASmB,QACtBq+B,EAAax/B,QAASqB,QAAU1W,EAAMm1C,eAEpC9H,GAAgB6H,GACtBH,GAAiB,GAEjBtE,YAAW,IAAMsE,GAAiB,IAAQ,QAQ9C,OAAAze,GACKid,GAA2B,CAAArsB,IAAA8P,GAAA,MAAAwC,EAAMjY,EAAM2F,IAAGsS,mBAAAA,EAAAA,EAAAxC,GAATzV,EAAM2F,IAAG8P,CAAA,EAAAxR,YAAA,OAASjE,EAAMiE,KAAK,EAAA,mBAAmB,OAAMvG,eAAA,OAAAqX,GACnFkd,GAAQ,CAAAv0B,eAAA,MAAA,OAAA6e,MAAAA,EAAAC,GAAA5V,WAAA,GAU4D2V,OAV5DA,GAAAA,EAAAxH,GAEAod,GAAgB,CAACra,QAASA,IAAM2b,IAAQ/1B,eAAA,MAAA,CAAAqX,GACpC6c,GAAQ7c,CAAAA,GAAAA,GACRjS,GAAI,CAACI,WAAI,OAAGqwB,GAAe,EAAA71B,eAAA,OAAAqX,GACvBqd,GAAY,CAAC/E,eAAe,uBAAsB3vB,SAAA,gBAAA,IAAAqX,GAItDjS,GAAI,CAACI,WAAI,OAAEqwB,GAAe,EAAA71B,eAAA,OAAAqX,GACtBqd,GAAY,CAAC/E,eAAe,yBAAwB3vB,SAAA,mBAAA,IAAA,KAAA6e,CAAA,WAAAK,MAAAA,EAAAJ,GAAA5V,WAAA,GASAgW,OATAA,GAAAA,EAAA7H,GAO5Dod,GAAgB,CAACra,QAASA,KAvBvCwb,EAAa5mC,kBACbsT,EAAMye,WAsBqD/gB,eAAA,MAAA,CAAAqX,GAC1C8c,GAAc9c,CAAAA,GAAAA,GACdqd,GAAY,CAAC/E,eAAe,6BAA4B3vB,SAAA,eAAA,KAAAkf,MAAA,GAAA,GAAA,GUfvB;;;;EAM7CiX,GAAsBzlB,IC3CkCpO,IACjE,MAAM8zB,EAA4C,IAE3CC,EAAqBC,GAA0Bp6B,GAEpD,IAEF,IAAInP,GAAS,EA+Bb,OA3BIwpC,GvE6YC,SAAGC,EAAMt2C,EAAI+E,GACd,MAAA+I,EAAU5jB,MAAM4jB,QAAQwoC,GAC1B,IAAAC,EACAC,EAAQzxC,GAAWA,EAAQyxC,MAC/B,OAAoBC,IACd,IAAAnV,EACJ,GAAIxzB,EAAS,CACHwzB,EAAAp3C,MAAMosD,EAAKptD,QACnB,IAAA,IAASN,EAAI,EAAGA,EAAI0tD,EAAKptD,OAAQN,IAAWA,EAAAA,GAAK0tD,EAAK1tD,IAC5D,MAAW04C,EAAQgV,IACf,GAAIE,EAEK,YADCA,GAAA,GAGV,MAAMr0C,EAAS0Z,IAAQ,IAAM7b,EAAGshC,EAAOiV,EAAWE,KAE3C,OADKF,EAAAjV,EACLn/B,CAAA,CAEX,CuE/ZQk0C,CAAGtnB,IAAQA,IACHA,GAAAA,GAAUA,EAAO2nB,iBAAkB,CACnC7pC,IACA,MAAMH,EAAKG,EAEY8pC,GAAAA,GACnBA,EACKxnC,WAA+C,wBAAxBynC,EAAa7nB,SACpCxa,OAAO,CAAE7H,KAAIqiB,OAAQA,EAAO7pB,SAErCgxC,EAAS5sD,KACLgoD,YACI,IACI8E,GAAuBO,GACnBA,EAAcxnC,QAAOynC,GAAgBA,EAAalqC,KAAOA,OAjB/D,MAsBd,MAIR6S,IAAU,KACN22B,EAASl0C,QAAQqvC,aAAY,IAGjC,MAAA1S,MAAAA,EAAAC,GAAA5V,WAAA,GAC2B2V,OAD3BA,GAAAA,EAAAxH,GAES8F,GAAe,CACZ/B,cAAqB7N,IACjBA,EAAGkT,QACC,CACI,CAAEvI,QAAS,EAAG+F,UAAW,iBACzB,CAAE/F,QAAS,EAAG+F,UAAW,qBAE7B,CACIuC,SAAU,KACb,EAGThF,OAAQA,CAACjO,EAAI1oB,KACC0oB,EAAGkT,QACT,CACI,CAAEvI,QAAS,EAAG+F,UAAW,oBACzB,CAAE/F,QAAS,EAAG+F,UAAW,sBAE7B,CACIuC,SAAU,MAGhBK,SAAS/7B,KAAKD,EAAI,EACvBmb,eAAA,OAAAqX,GAEAtT,GAAG,CAACoB,WAAI,OAAEkxB,GAAqB,EAAAr2B,SACTqX,GAAAA,GACd3R,GAAM,CAAA1F,eAAAqX,MAAAA,CAAAA,GACFtR,GAAK,CAACP,WAAI,MAAgC,qBAA9BuxB,EAAmB9nB,MAA6B,EAAAjP,eAAA,OAAAqX,GACxDge,GAA8B,CAAA9uB,MAAQ+uB,IAAiB,IAAAje,GAE3DtR,GAAK,CAACP,WAAI,MAAgC,yBAA9BuxB,EAAmB9nB,MAAiC,EAAAjP,eAAA,OAAAqX,GAC5D8d,GAA4B,CAAA5uB,MAAQ+uB,IAAiB,IAAAje,GAEzDtR,GAAK,CAACP,WAAI,MAAgC,wBAA9BuxB,EAAmB9nB,MAAgC,EAAAjP,eAAA,OAAAqX,GAC3D2d,GAA4B,CAAAzuB,MAAQ+uB,IAAiB,IAAA,KAGjE,KAAAvW,QAAAkC,GAAApC,EAvCDvc,EAAMiE,SAAKsY,GAD3B,KDKmD;;;;EEtDvD,SAASmY,GAAQC,GACR,OAAAA,EAAU/9B,MAAM,KAAK,EAC9B,CAcS,SAAAg+B,GAA2BC,EAAMF,EAAWG,GAC/C,IAAAC,UACFA,EAAAC,SACAA,GACEH,EACJ,MAAMI,EAAUF,EAAUvrD,EAAIurD,EAAUle,MAAQ,EAAIme,EAASne,MAAQ,EAC/Dqe,EAAUH,EAAUlrD,EAAIkrD,EAAUra,OAAS,EAAIsa,EAASta,OAAS,EACjEya,EAfR,SAAkCR,GACzB,MAAA,CAAC,MAAO,UAAUznC,SAASwnC,GAAQC,IAAc,IAAM,GAChE,CAamBS,CAAyBT,GACpC7tD,EAXU,MAWiBquD,EAXX,SAAW,QAYjC,MAAME,EAAcN,EAAUjuD,GAAU,EAAIkuD,EAASluD,GAAU,EAEzDwuD,EAA0B,MAAbH,EACf,IAAAI,EAEJ,OAJab,GAAQC,IAKnB,IAAK,MACMY,EAAA,CACP/rD,EAAGyrD,EACHprD,EAAGkrD,EAAUlrD,EAAImrD,EAASta,QAE5B,MAEF,IAAK,SACM6a,EAAA,CACP/rD,EAAGyrD,EACHprD,EAAGkrD,EAAUlrD,EAAIkrD,EAAUra,QAE7B,MAEF,IAAK,QACM6a,EAAA,CACP/rD,EAAGurD,EAAUvrD,EAAIurD,EAAUle,MAC3BhtC,EAAGqrD,GAEL,MAEF,IAAK,OACMK,EAAA,CACP/rD,EAAGurD,EAAUvrD,EAAIwrD,EAASne,MAC1BhtC,EAAGqrD,GAEL,MAEF,QACWK,EAAA,CACP/rD,EAAGurD,EAAUvrD,EACbK,EAAGkrD,EAAUlrD,GAIX,OA9DV,SAAsB8qD,GACb,OAAAA,EAAU/9B,MAAM,KAAK,EAC9B,CA4DU4+B,CAAab,IACnB,IAAK,QACHY,EAAOJ,IAAaE,GAAeP,GAAOQ,GAAkB,EAAA,GAC5D,MAEF,IAAK,MACHC,EAAOJ,IAAaE,GAAeP,GAAOQ,GAAkB,EAAA,GAIzD,OAAAC,CACT,CAUA,MAAME,GAAkB,CAAOV,EAAWC,EAAUU,IAAWhC,QAAAztD,KAAA,MAAA,YACvD,MAAA0uD,UACJA,EAAY,SAAAgB,SACZA,EAAW,WAAAC,WACXA,EAAa,GACbC,SAAAA,GACEH,EACEI,EAAkBF,EAAW7oC,OAAO+gB,SACpCgnB,QAA+B,MAAlBe,EAASE,WAAgB,EAASF,EAASE,MAAMf,GAEhE,GAAyB,eAAzB,CAAW,EAACgB,SAA2B,CAKrC,GAJY,MAAZH,GACM9sC,QAAArE,MAAM,CAAC,oEAAqE,+DAAgE,mEAAoE,qDAAqDnd,KAAK,MAGhRuuD,EAAgB/oC,QAAe8nC,IAC7B,IAAA/xC,KACFA,GACE+xC,EACG,MAAS,kBAAT/xC,GAAqC,SAATA,CAAS,IAC3Chc,OAAS,EACJ,MAAA,IAAI8B,MAAM,CAAC,kEAAmE,mEAAoE,qDAAqDrB,KAAK,MAG/MwtD,GAAcC,GACTjsC,QAAArE,MAAM,CAAC,qEAAsE,sEAAuE,qCAAqCnd,KAAK,KAEzM,CAEG,IAAA0uD,QAAcJ,EAASK,gBAAgB,CACzCnB,YACAC,WACAW,cAEEnsD,EACFA,EAAAK,EACAA,GACE+qD,GAA2BqB,EAAOtB,EAAWG,GAC7CqB,EAAoBxB,EACpByB,EAAiB,CAAA,EACjBC,EAAa,EAEjB,IAAA,IAAS7vD,EAAI,EAAGA,EAAIsvD,EAAgBhvD,OAAQN,IAAK,CACzC,MAAAsc,KACJA,EAAAlF,GACAA,GACEk4C,EAAgBtvD,IAElBgD,EAAG8sD,EACHzsD,EAAG0sD,EAAAttC,KACHA,EAAAutC,MACAA,SACQ54C,EAAG,CACXpU,IACAK,IACA4sD,iBAAkB9B,EAClBA,UAAWwB,EACXR,WACAS,iBACAH,QACAJ,SAAAA,EACAa,SAAU,CACR3B,YACAC,cAGAxrD,EAAS,MAAT8sD,EAAgBA,EAAQ9sD,EACxBK,EAAS,MAAT0sD,EAAgBA,EAAQ1sD,EAC5BusD,EAAiBO,gCAAKP,GAAL,CACftzC,CAACA,GAAO8zC,eAAKA,eAAA,CAAA,EAAAR,EAAetzC,IACvBmG,KAIsB,eAAzB,CAAW,EAAC+sC,UACVK,EAAa,IACPttC,QAAAmK,KAAK,CAAC,oEAAqE,iEAAkE,6CAA6C3rB,KAAK,MAIvMivD,GAASH,GAAc,KACzBA,IAEqB,iBAAVG,IACLA,EAAM7B,YACRwB,EAAoBK,EAAM7B,WAGxB6B,EAAMP,QACRA,GAAwB,IAAhBO,EAAMP,YAAuBJ,EAASK,gBAAgB,CAC5DnB,YACAC,WACAW,aACGa,EAAMP,SAIXzsD,IACAK,KACE+qD,GAA2BqB,EAAOE,EAAmBrB,KAG3DtuD,GAAI,EAGP,CAEM,MAAA,CACLgD,IACAK,IACA8qD,UAAWwB,EACXR,WACAS,iBAEJ,IAqBA,SAASS,GAAiBvR,GACxB,OAAOqR,gCAAKrR,GAAL,CACLhL,IAAKgL,EAAKz7C,EACV2wC,KAAM8K,EAAK97C,EACXixC,MAAO6K,EAAK97C,EAAI87C,EAAKzO,MACrB0D,OAAQ+K,EAAKz7C,EAAIy7C,EAAK5K,QAE1B,CClOA,SAASrsB,GAAU+P,GACb,IAAA04B,EAEJ,OAAsD,OAA7CA,EAAsB14B,EAAK24B,oBAAyB,EAASD,EAAoBE,cAAgB1oC,MAC5G,CAEA,SAAS2vB,GAAiBjY,GACxB,OAAO3X,GAAU2X,GAASiY,iBAAiBjY,EAC7C,CAEA,SAASixB,GAAY74B,GACnB,OAAO84B,GAAO94B,IAASA,EAAKkK,UAAY,IAAI5Q,cAAgB,EAC9D,CAEI,IAAAy/B,GACJ,SAASC,KACP,GAAID,GACK,OAAAA,GAGT,MAAME,EAAStL,UAAUuL,cAEzB,OAAID,GAAUvvD,MAAM4jB,QAAQ2rC,EAAOE,SACtBJ,GAAAE,EAAOE,OAAO5rC,KAAYmC,GAAAA,EAAK0pC,MAAQ,IAAM1pC,EAAK2pC,UAASlwD,KAAK,KACpE4vD,IAGFpL,UAAU2L,SACnB,CAEA,SAASC,GAAc/4C,GACd,OAAAA,aAAiByP,GAAUzP,GAAOg5C,WAC3C,CACA,SAASC,GAAUj5C,GACV,OAAAA,aAAiByP,GAAUzP,GAAOk5C,OAC3C,CACA,SAASZ,GAAOt4C,GACP,OAAAA,aAAiByP,GAAUzP,GAAO+rB,IAC3C,CACA,SAASotB,GAAa35B,GAEhB,GAAsB,oBAAf45B,WACF,OAAA,EAIF,OAAA55B,aADY/P,GAAU+P,GAAM45B,YACE55B,aAAgB45B,UACvD,CACA,SAASC,GAAkBjyB,GAEnB,MAAAkyB,SACJA,EAAAC,UACAA,EAAAC,UACAA,EAAAC,QACAA,GACEpa,GAAiBjY,GACrB,MAAO,6BAA6B3/B,KAAK6xD,EAAWE,EAAYD,KAAe,CAAC,SAAU,YAAYjrC,SAASmrC,EACjH,CACA,SAASC,GAAetyB,GACf,MAAA,CAAC,QAAS,KAAM,MAAM9Y,SAAS+pC,GAAYjxB,GACpD,CACA,SAASuyB,GAAkBvyB,GAEzB,MAAMwyB,EAAY,WAAWnyD,KAAK+wD,MAC5BvpB,EAAMoQ,GAAiBjY,GACvByyB,EAAiB5qB,EAAI4qB,gBAAkB5qB,EAAI6qB,qBAIjD,MAAyB,SAAlB7qB,EAAI8N,WAA4C,SAApB9N,EAAI8qB,eAA2BF,GAAoC,SAAnBA,GAAsCD,GAAgC,WAAnB3qB,EAAI+qB,YAA2BJ,KAAc3qB,EAAI9gB,QAAwB,SAAf8gB,EAAI9gB,QAA8B,CAAC,YAAa,eAAewF,SAAcsb,EAAI+qB,WAAW1rC,SAAStO,MAAW,CAAC,QAAS,SAAU,SAAU,WAAW2T,MAChV3T,IACP,MAAMi6C,EAAUhrB,EAAIgrB,QACpB,OAAkB,MAAXA,GAAkBA,EAAQ3rC,SAAStO,EAAS,GAEvD,CACA,SAASk6C,KAEP,OAAQ,iCAAiCzyD,KAAK+wD,KAKhD,CACA,SAAS2B,GAAsB36B,GACtB,MAAA,CAAC,OAAQ,OAAQ,aAAalR,SAAS+pC,GAAY74B,GAC5D,CAEA,MAAMngB,GAAM/O,KAAK+O,IACXqlC,GAAMp0C,KAAKo0C,IACXqL,GAAQz/C,KAAKy/C,MAEbqK,GAAiB,CACrBxvD,EAAG,EACHK,EAAG,GAEL,SAASovD,GAASjzB,GAChB,MAAMkzB,GAAcrB,GAAU7xB,IAAYA,EAAQmzB,eAAiBnzB,EAAQmzB,eAAiBtB,GAAU7xB,GAAWA,EAAU,KAE3H,IAAKkzB,EACI,OAAAF,GAGH,MAAA1T,EAAO4T,EAAWve,wBAClB9M,EAAMoQ,GAAiBib,GAIzB,GAAkB,eAAlBrrB,EAAIurB,UACF,OAACzB,GAAcuB,GAIZ,CACL1vD,EAAG0vD,EAAWG,YAAc,GAAI1K,GAAMrJ,EAAKzO,OAASqiB,EAAWG,aAAmB,EAClFxvD,EAAGqvD,EAAWrd,aAAe,GAAI8S,GAAMrJ,EAAK5K,QAAUwe,EAAWrd,cAAoB,GAL9Emd,GASX,IAAIxvD,EAAI87C,EAAKzO,MAAQmH,WAAWnQ,EAAIgJ,OAChChtC,EAAIy7C,EAAK5K,OAASsD,WAAWnQ,EAAI6M,QAU9B,OARFlxC,GAAM8vD,OAAOC,SAAS/vD,KACrBA,EAAA,GAGDK,GAAMyvD,OAAOC,SAAS1vD,KACrBA,EAAA,GAGC,CACLL,IACAK,IAEJ,CAEA,SAAS8wC,GAAsB3U,EAASwzB,EAAcC,EAAiBC,GACjE,IAAAC,EAAuBC,EAAqBC,EAAwBC,OAEnD,IAAjBN,IACaA,GAAA,QAGO,IAApBC,IACgBA,GAAA,GAGd,MAAAM,EAAa/zB,EAAQ2U,wBAC3B,IAAInD,EAAQwhB,GAERQ,IACEE,EACE7B,GAAU6B,KACZliB,EAAQyhB,GAASS,IAGnBliB,EAAQyhB,GAASjzB,IAIrB,MAAMg0B,EAAMnC,GAAU7xB,GAAW3X,GAAU2X,GAAW1X,OAChD2rC,GAAoBnB,MAAsBW,EAC1CjwD,GAAKuwD,EAAWvf,MAAQyf,GAA6I,OAAzHN,EAAsE,OAA7CC,EAAsBI,EAAIE,qBAA0B,EAASN,EAAoBO,YAAsBR,EAA4B,IAAMniB,EAAMhuC,EACpNK,GAAKkwD,EAAWzf,KAAO2f,GAA+I,OAA3HJ,EAAwE,OAA9CC,EAAuBE,EAAIE,qBAA0B,EAASJ,EAAqBM,WAAqBP,EAA6B,IAAMriB,EAAM3tC,EACtNgtC,EAAQkjB,EAAWljB,MAAQW,EAAMhuC,EACjCkxC,EAASqf,EAAWrf,OAASlD,EAAM3tC,EAClC,MAAA,CACLgtC,QACA6D,SACAJ,IAAKzwC,EACL4wC,MAAOjxC,EAAIqtC,EACX0D,OAAQ1wC,EAAI6wC,EACZF,KAAMhxC,EACNA,IACAK,IAEJ,CAEA,SAASwwD,GAAmBj8B,GACjB,QAAA84B,GAAO94B,GAAQA,EAAK24B,cAAgB34B,EAAK5I,WAAalH,OAAOkH,UAAUmoB,eAClF,CAEA,SAAS2c,GAAct0B,GACjB,OAAA6xB,GAAU7xB,GACL,CACLu0B,WAAYv0B,EAAQu0B,WACpBzc,UAAW9X,EAAQ8X,WAIhB,CACLyc,WAAYv0B,EAAQw0B,YACpB1c,UAAW9X,EAAQy0B,YAEvB,CAEA,SAASC,GAAoB10B,GAGpB,OAAA2U,GAAsB0f,GAAmBr0B,IAAUwU,KAAO8f,GAAct0B,GAASu0B,UAC1F,CAES,SAAAI,GAA8B30B,EAAS0zB,EAAc/D,GACtD,MAAAiF,EAA0BjD,GAAc+B,GACxC/b,EAAkB0c,GAAmBX,GACrCpU,EAAO3K,GAAsB3U,GAAS,EAAmB,UAAb2vB,EAAsB+D,GACxE,IAAImB,EAAS,CACXN,WAAY,EACZzc,UAAW,GAEb,MAAMgd,EAAU,CACdtxD,EAAG,EACHK,EAAG,GAGL,GAAI+wD,IAA4BA,GAAwC,UAAbjF,EAKrD,IAJ8B,SAA9BsB,GAAYyC,IAA4BzB,GAAkBta,MAC5Dkd,EAASP,GAAcZ,IAGrB/B,GAAc+B,GAAe,CACzB,MAAAqB,EAAapgB,GAAsB+e,GAAc,GAC/CoB,EAAAtxD,EAAIuxD,EAAWvxD,EAAIkwD,EAAasB,WAChCF,EAAAjxD,EAAIkxD,EAAWlxD,EAAI6vD,EAAauB,SACzC,MAAUtd,IACDmd,EAAAtxD,EAAIkxD,GAAoB/c,IAI7B,MAAA,CACLn0C,EAAG87C,EAAK9K,KAAOqgB,EAAON,WAAaO,EAAQtxD,EAC3CK,EAAGy7C,EAAKhL,IAAMugB,EAAO/c,UAAYgd,EAAQjxD,EACzCgtC,MAAOyO,EAAKzO,MACZ6D,OAAQ4K,EAAK5K,OAEjB,CAEA,SAASwgB,GAAc98B,GACjB,GAAsB,SAAtB64B,GAAY74B,GACP,OAAAA,EAGT,MAAMre,EACNqe,EAAK+8B,cACL/8B,EAAKmL,aACLwuB,GAAa35B,GAAQA,EAAKoL,KAAO,OACjC6wB,GAAmBj8B,GACnB,OAAO25B,GAAah4C,GAAUA,EAAOypB,KAAOzpB,CAC9C,CAEA,SAASq7C,GAAoBp1B,GACvB,OAAC2xB,GAAc3xB,IAAmD,UAAvCiY,GAAiBjY,GAASmmB,SAIlDnmB,EAAQ0zB,aAHN,IAIX,CAkBA,SAAS2B,GAAgBr1B,GACjB1X,MAAAA,EAASD,GAAU2X,GACrB,IAAA0zB,EAAe0B,GAAoBp1B,GAEhC,KAAA0zB,GAAgBpB,GAAeoB,IAA6D,WAA5Czb,GAAiByb,GAAcvN,UACpFuN,EAAe0B,GAAoB1B,GAGrC,OAAIA,IAA+C,SAA9BzC,GAAYyC,IAA0D,SAA9BzC,GAAYyC,IAAwE,WAA5Czb,GAAiByb,GAAcvN,WAA0BoM,GAAkBmB,IACvKprC,EAGForC,GA5BT,SAA4B1zB,GACtB,IAAAs1B,EAAcJ,GAAcl1B,GAEhC,KAAO2xB,GAAc2D,KAAiBvC,GAAsBuC,IAAc,CACpE,GAAA/C,GAAkB+C,GACb,OAAAA,EAEPA,EAAcJ,GAAcI,EAE/B,CAEM,OAAA,IACT,CAgByBC,CAAmBv1B,IAAY1X,CACxD,CAyHA,SAASktC,GAA2Bp9B,GAC5B,MAAAmL,EAAa2xB,GAAc98B,GAE7B,OAAA26B,GAAsBxvB,GAEjBnL,EAAK24B,cAAc3uC,KAGxBuvC,GAAcpuB,IAAe0uB,GAAkB1uB,GAC1CA,EAGFiyB,GAA2BjyB,EACpC,CAES,SAAAkyB,GAAqBr9B,EAAMuD,GAC9B,IAAAm1B,OAES,IAATn1B,IACFA,EAAO,IAGH,MAAA+5B,EAAqBF,GAA2Bp9B,GAChDu9B,EAASD,KAAsE,OAA7C5E,EAAsB14B,EAAK24B,oBAAyB,EAASD,EAAoB1uC,MACnH4xC,EAAM3rC,GAAUqtC,GAEtB,OAAIC,EACKh6B,EAAKxP,OAAO6nC,EAAKA,EAAIE,gBAAkB,GAAIjC,GAAkByD,GAAsBA,EAAqB,IAG1G/5B,EAAKxP,OAAOupC,EAAoBD,GAAqBC,GAC9D,CA2BS,SAAAE,GAAkC51B,EAAS61B,EAAkBlG,GACpE,MAAyB,aAArBkG,EACKhF,GAjHF,SAAgB7wB,EAAS2vB,GAC1B,MAAAqE,EAAM3rC,GAAU2X,GAChBlB,EAAOu1B,GAAmBr0B,GAC1Bk0B,EAAiBF,EAAIE,eAC3B,IAAIrjB,EAAQ/R,EAAK4pB,YACbhU,EAAS5V,EAAK+Y,aACdr0C,EAAI,EACJK,EAAI,EAER,GAAIqwD,EAAgB,CAClBrjB,EAAQqjB,EAAerjB,MACvB6D,EAASwf,EAAexf,OACxB,MAAMohB,EAAiBhD,MAEnBgD,IAAmBA,GAA+B,UAAbnG,KACvCnsD,EAAI0wD,EAAeC,WACnBtwD,EAAIqwD,EAAeE,UAEtB,CAEM,MAAA,CACLvjB,QACA6D,SACAlxC,IACAK,IAEJ,CAuF4BkyD,CAAgB/1B,EAAS2vB,IAG/CkC,GAAUgE,GA7BP,SAA2B71B,EAAS2vB,GAC3C,MAAMoE,EAAapf,GAAsB3U,GAAS,EAAmB,UAAb2vB,GAClDrb,EAAMyf,EAAWzf,IAAMtU,EAAQi1B,UAC/BzgB,EAAOuf,EAAWvf,KAAOxU,EAAQg1B,WACjCxjB,EAAQmgB,GAAc3xB,GAAWizB,GAASjzB,GAAW,CACzDx8B,EAAG,EACHK,EAAG,GAECgtC,EAAQ7Q,EAAQ0oB,YAAclX,EAAMhuC,EACpCkxC,EAAS1U,EAAQ6X,aAAerG,EAAM3tC,EACtCL,EAAIgxC,EAAOhD,EAAMhuC,EACjBK,EAAIywC,EAAM9C,EAAM3tC,EACf,MAAA,CACLywC,IAAKzwC,EACL2wC,KAAMhxC,EACNixC,MAAOjxC,EAAIqtC,EACX0D,OAAQ1wC,EAAI6wC,EACZlxC,IACAK,IACAgtC,QACA6D,SAEJ,CAQWshB,CAA2BH,EAAkBlG,GAG/CkB,GA1FT,SAAyB7wB,GACnB,IAAAi2B,EAEE,MAAAn3B,EAAOu1B,GAAmBr0B,GAC1B60B,EAASP,GAAct0B,GACvB5d,EAA0D,OAAlD6zC,EAAwBj2B,EAAQ+wB,oBAAyB,EAASkF,EAAsB7zC,KAChGyuB,EAAQyM,GAAIxe,EAAKo3B,YAAap3B,EAAK4pB,YAAatmC,EAAOA,EAAK8zC,YAAc,EAAG9zC,EAAOA,EAAKsmC,YAAc,GACvGhU,EAAS4I,GAAIxe,EAAK8Y,aAAc9Y,EAAK+Y,aAAcz1B,EAAOA,EAAKw1B,aAAe,EAAGx1B,EAAOA,EAAKy1B,aAAe,GAClH,IAAIr0C,GAAKqxD,EAAON,WAAaG,GAAoB10B,GAC3C,MAAAn8B,GAAKgxD,EAAO/c,UAMX,MAJ0C,QAA7CG,GAAiB71B,GAAQ0c,GAAMwX,YACjC9yC,GAAK85C,GAAIxe,EAAK4pB,YAAatmC,EAAOA,EAAKsmC,YAAc,GAAK7X,GAGrD,CACLA,QACA6D,SACAlxC,IACAK,IAEJ,CAqE0BsyD,CAAgB9B,GAAmBr0B,IAC7D,CAiEA,MAAM6vB,GAAW,CACfuG,gBA3BF,SAAyBvH,GACnB,IAAA7uB,QACFA,EAAAq2B,SACAA,EAAAC,aACAA,EAAA3G,SACAA,GACEd,EACE,MACA0H,EAAoB,IADoB,sBAAbF,EAzC1B,SAA4Br2B,EAASw2B,GACtC,MAAAC,EAAeD,EAAMnvC,IAAI2Y,GAE/B,GAAIy2B,EACK,OAAAA,EAGT,IAAI18C,EAAS07C,GAAqBz1B,GAASjZ,QAAOke,GAAM4sB,GAAU5sB,IAA2B,SAApBgsB,GAAYhsB,KACjFyxB,EAAsC,KAC1C,MAAMC,EAAwD,UAAvC1e,GAAiBjY,GAASmmB,SACjD,IAAImP,EAAcqB,EAAiBzB,GAAcl1B,GAAWA,EAE5D,KAAO6xB,GAAUyD,KAAiBvC,GAAsBuC,IAAc,CAC9D,MAAAsB,EAAgB3e,GAAiBqd,GACjCuB,EAAkBtE,GAAkB+C,IACZqB,EAAkBE,GAAoBH,EAAuCG,GAA8C,WAA3BD,EAAczQ,WAA2BuQ,IAAuC,CAAC,WAAY,SAASxvC,SAASwvC,EAAoCvQ,WAOzOuQ,EAAAE,EAHtC78C,EAASA,EAAOgN,QAAmB+vC,GAAAA,IAAaxB,IAMlDA,EAAcJ,GAAcI,EAC7B,CAGM,OADDkB,EAAAx7C,IAAIglB,EAASjmB,GACZA,CACT,CAWsEg9C,CAA4B/2B,EAAS//B,KAAK+2D,IAAM,GAAG7qC,OAAOkqC,GACtEC,GAClDW,EAAwBV,EAAkB,GAC1CW,EAAeX,EAAkBpjD,QAAO,CAACgkD,EAAStB,KACtD,MAAMvW,EAAOsW,GAAkC51B,EAAS61B,EAAkBlG,GAKnE,OAJPwH,EAAQ7iB,IAAMgJ,GAAIgC,EAAKhL,IAAK6iB,EAAQ7iB,KACpC6iB,EAAQ1iB,MAAQx8B,GAAIqnC,EAAK7K,MAAO0iB,EAAQ1iB,OACxC0iB,EAAQ5iB,OAASt8B,GAAIqnC,EAAK/K,OAAQ4iB,EAAQ5iB,QAC1C4iB,EAAQ3iB,KAAO8I,GAAIgC,EAAK9K,KAAM2iB,EAAQ3iB,MAC/B2iB,CAAA,GACNvB,GAAkC51B,EAASi3B,EAAuBtH,IAC9D,MAAA,CACL9e,MAAOqmB,EAAaziB,MAAQyiB,EAAa1iB,KACzCE,OAAQwiB,EAAa3iB,OAAS2iB,EAAa5iB,IAC3C9wC,EAAG0zD,EAAa1iB,KAChB3wC,EAAGqzD,EAAa5iB,IAEpB,EAIE8iB,sDA/OF,SAA+DvI,GACzD,IAAAvP,KACFA,EAAAoU,aACAA,EAAA/D,SACAA,GACEd,EACE,MAAA+F,EAA0BjD,GAAc+B,GACxC/b,EAAkB0c,GAAmBX,GAE3C,GAAIA,IAAiB/b,EACZ,OAAA2H,EAGT,IAAIuV,EAAS,CACXN,WAAY,EACZzc,UAAW,GAETtG,EAAQ,CACVhuC,EAAG,EACHK,EAAG,GAEL,MAAMixD,EAAU,CACdtxD,EAAG,EACHK,EAAG,GAGL,IAAI+wD,IAA4BA,GAAwC,UAAbjF,MACvB,SAA9BsB,GAAYyC,IAA4BzB,GAAkBta,MAC5Dkd,EAASP,GAAcZ,IAGrB/B,GAAc+B,IAAe,CACzB,MAAAqB,EAAapgB,GAAsB+e,GACzCliB,EAAQyhB,GAASS,GACToB,EAAAtxD,EAAIuxD,EAAWvxD,EAAIkwD,EAAasB,WAChCF,EAAAjxD,EAAIkxD,EAAWlxD,EAAI6vD,EAAauB,SACzC,CAOI,MAAA,CACLpkB,MAAOyO,EAAKzO,MAAQW,EAAMhuC,EAC1BkxC,OAAQ4K,EAAK5K,OAASlD,EAAM3tC,EAC5BL,EAAG87C,EAAK97C,EAAIguC,EAAMhuC,EAAIqxD,EAAON,WAAa/iB,EAAMhuC,EAAIsxD,EAAQtxD,EAC5DK,EAAGy7C,EAAKz7C,EAAI2tC,EAAM3tC,EAAIgxD,EAAO/c,UAAYtG,EAAM3tC,EAAIixD,EAAQjxD,EAE/D,EA+LEguD,aACAwF,cAhQF,SAAuBr3B,GACjB,GAAA2xB,GAAc3xB,GACT,MAAA,CACL6Q,MAAO7Q,EAAQqzB,YACf3e,OAAQ1U,EAAQ6V,cAId,MAAAyJ,EAAO3K,GAAsB3U,GAC5B,MAAA,CACL6Q,MAAOyO,EAAKzO,MACZ6D,OAAQ4K,EAAK5K,OAEjB,EAoPE2gB,mBACAhB,sBACApB,YAEM/C,gBAAgBrB,GAAM,OAAAnB,QAAAztD,KAAA,MAAA,YACtB,IAAA8uD,UACFA,EAAAC,SACAA,EAAAW,SACAA,GACEd,EACE,MAAAyI,EAAoBr3D,KAAKo1D,iBAAmBA,GAC5CkC,EAAkBt3D,KAAKo3D,cACtB,MAAA,CACLtI,UAAW4F,GAA8B5F,QAAiBuI,EAAkBtI,GAAWW,GACvFX,SAAU4B,eAAA,CACRptD,EAAG,EACHK,EAAG,SACO0zD,EAAgBvI,IAG/B,GAAA,EAEDwI,eAA2Bx3B,GAAAl+B,MAAMJ,KAAKs+B,EAAQw3B,kBAC9CzH,MAAO/vB,GAAmD,QAAxCiY,GAAiBjY,GAASsW,WAO9C,SAASmhB,GAAW1I,EAAWC,EAAUxmD,EAAQmU,QAC/B,IAAZA,IACFA,EAAU,CAAA,GAGN,MACJ+6C,eAAgBC,GAAkB,EAAAC,eAClCA,GAAiB,EAAAC,cACjBA,GAAgB,EAAAC,eAChBA,GAAiB,GACfn7C,EACE+6C,EAAiBC,IAAoBG,EACrCx+B,EAAYo+B,GAAkBE,EAAiB,IAAK/F,GAAU9C,GAAa0G,GAAqB1G,GAAaA,EAAUoE,eAAiBsC,GAAqB1G,EAAUoE,gBAAkB,MAAQsC,GAAqBzG,IAAa,GACzO11B,EAAU1f,SAAoBk9C,IACVY,GAAAZ,EAASpnC,iBAAiB,SAAUlnB,EAAQ,CAC5DuvD,SAAS,IAEOH,GAAAd,EAASpnC,iBAAiB,SAAUlnB,EAAM,IAE9D,IAoBIwvD,EApBAC,EAAW,KAEf,GAAIJ,EAAe,CACjB,IAAIK,GAAgB,EACTD,EAAA,IAAIE,gBAAe,KACvBD,OAIWA,GAAA,CAAA,IAElBrG,GAAU9C,KAAe+I,GAAkBG,EAASG,QAAQrJ,GAEvD8C,GAAU9C,KAAcA,EAAUoE,gBAAmB2E,GAC/CG,EAAAG,QAAQrJ,EAAUoE,gBAG7B8E,EAASG,QAAQpJ,EAClB,CAGD,IAAIqJ,EAAcP,EAAiBnjB,GAAsBoa,GAAa,KAkBtE,OAhBI+I,GAIJ,SAASQ,IACD,MAAAC,EAAc5jB,GAAsBoa,IAEtCsJ,GAAgBE,EAAY/0D,IAAM60D,EAAY70D,GAAK+0D,EAAY10D,IAAMw0D,EAAYx0D,GAAK00D,EAAY1nB,QAAUwnB,EAAYxnB,OAAS0nB,EAAY7jB,SAAW2jB,EAAY3jB,YAI1J2jB,EAAAE,EACdP,EAAUxlB,sBAAsB8lB,EACjC,QAGM,KACD,IAAAE,EAEJl/B,EAAU1f,SAAoBk9C,IACVY,GAAAZ,EAAS/0B,oBAAoB,SAAUv5B,GACvCovD,GAAAd,EAAS/0B,oBAAoB,SAAUv5B,EAAM,IAEvC,OAAzBgwD,EAAYP,IAA6BO,EAAU9xC,aACzCuxC,EAAA,KAEPH,GACFW,qBAAqBT,EACtB,CAEL,CAQA,MAAMvI,GAAkB,CAACV,EAAWC,EAAUryC,KAItC,MAAA65C,MAAYxxC,IACZ0zC,EAAgB9H,eAAA,CACpBf,aACGlzC,GAECg8C,EAAoBhI,cAAKC,eAAA,CAAA,EAAA8H,EAAc7I,UAAnB,CACxBmH,GAAIR,IAEN,OAAOoC,GAAkB7J,EAAWC,EAAU2B,cAAAC,eAAA,CAAA,EAAK8H,GAAL,CAC5C7I,SAAU8I,IACX,uECxoBUE,GAA+CA,KACxD,MAAMvxB,EAAQC,KACRuxB,EAAYthC,GAAWsR,IACvB6jB,EAAen1B,GAAWm0B,KACzBoN,EAAUC,GAAeplC,IAAa,IACtC9F,EAASmrC,GAAcrlC,GAA6BklC,EAAUhrC,UAC9DorC,EAAkBC,GAAuBvlC,IAAsB,GAElEwlC,IAAAA,EAEJ,MAAOpK,EAAUqK,GAAezlC,MACzB0lC,EAAQC,GAAa3lC,KAEtBuyB,ECrC2I,SAAEziD,EAAEe,EAAEiI,GAAG,IAAIpI,EAAE,KAASgF,IAAAA,EAAE,OAAsC,OAA/BA,EAAK,MAAHoD,OAAQ,EAAOA,EAAEiiD,WAAiBrlD,EAAE,QAAA,EAAU7I,EAAE,KAAS6I,IAAAA,EAAE,OAAqC,OAA9BA,EAAK,MAAHoD,OAAQ,EAAOA,EAAEijD,UAAgBrmD,EAAE,UAAA,GAAavF,EAAEQ,GAAG8K,GAAE,CAAC7L,EAAE,KAAKK,EAAE,KAAK8qD,UAAUrqD,IAAIqrD,SAASlvD,IAAI2vD,eAAe,MAAM5sD,EAAEg2D,GAAGnqD,KAAIrP,IAAE,KAAK,IAAIsJ,EAAE9F,IAAO8F,GAAAA,EAAE,MAAMA,EAAEsP,KAAA,IAAYxY,IAAAA,EAAEq5D,IAAE,KAAK/1D,IAAIe,IAAI,CAAA,KAAK,SAASjE,IAAI,IAAI8I,EAAE5F,IAAIjB,EAAEgC,IAAI,GAAG6E,GAAG7G,EAAE,CAAC,IAAIsG,EAAE3I,IAAIs5D,GAAEpwD,EAAE7G,EAAE,CAACmtD,WAAc,MAAHljD,OAAQ,EAAOA,EAAEkjD,WAAWjB,UAAUrqD,IAAIqrD,SAASlvD,MAAM+b,MAAQxV,IAAC+B,IAAI3I,KAAKmE,EAAEyC,EAAC,IAAMA,IAACwyD,EAAExyD,EAAC,GAAG,CAAC,CAAC,OAAOhH,IAAE,KAAK,IAAIsJ,EAAE5F,IAAIjB,EAAEgC,IAAOiI,GAAG,MAAHA,GAASA,EAAEkjD,WAAWtrD,IAAI7D,IAAI6I,GAAG7G,EAAKiK,GAAG,MAAHA,GAASA,EAAEitD,qBAAqB,CAAC,IAAI5wD,EAAE2D,EAAEitD,qBAAqBrwD,EAAE7G,EAAEjC,GAAGuI,GAAGlF,GAAEkF,EAAE,MAAMvI,GAAC,IAAK,CAAKgD,QAAI,OAAOO,IAAIP,CAAC,EAAMK,QAAI,OAAOE,IAAIF,CAAC,EAAM8qD,gBAAY,OAAO5qD,IAAI4qD,SAAS,EAAMgB,eAAW,OAAO5rD,IAAI4rD,QAAQ,EAAMS,qBAAiB,OAAOrsD,IAAIqsD,cAAc,EAAE5nD,OAAOhI,EAAE,CDqCp5Bo5D,CAAYN,EAAQtK,EAAU,CAC3C2K,qBAAsBlC,GACtB9I,UAAW,eAgBfhC,EAAakN,mBAAmBr9C,MAAK,IAAM28C,GAAoB,KAEzDW,MAAAA,EAAchB,EAAU/qC,gBAAyBxE,IACnD,IAAKA,EAGD,OAFAyvC,GAAY,QACZC,EAAW,MAIfA,EAAW1vC,EAAOuE,QAAO,IAGvBgkB,EAAWplC,IACb,IAAKohB,MAAcirC,IACf,OAEJ,MAAMgB,EAAgBT,IAAUniB,SAASzqC,EAAEuuB,QACrC++B,EAAkBZ,EAAajiB,SAASzqC,EAAEuuB,QAE3C8+B,GAAkBC,GACnBhB,GAAY,EAChB,E1E0WR,IAAiBphD,E0E9Vb,O1E8VaA,E0EvWL,KACKwK,SAAAA,KAAKsN,iBAAiB,QAASoiB,EAAO,E1EuWxCxd,IAAA,IAAMb,GAAQ7b,K0EpWzBuf,IAAU,KACG/U,SAAAA,KAAK2f,oBAAoB,QAAS+P,UAI/C/C,GACK7I,GAAO,CAACG,UAAWsI,GAAejX,eAAAqX,MAAAA,CAAAA,GAC9BjS,GAAI,CAACI,WAAI,OAAEg8B,GAAkB,EAAAxhC,eAAA,OAAAqX,GACzBoe,GAAkB,CAAC/pB,UAAU,EAAI,iCAAiC,OAAM1L,eAAAqX,OAAAA,GACpE0d,GAAgB,CAAA,EAAA,GAAA,IAAA1d,GAGxBjS,GAAI,CAACI,WAAI,OAAGg8B,GAAkB,EAAAxhC,eAAAqX,MAAAA,CAAAA,GAC1BjS,GAAI,CAACI,WAAI,OAAGpP,GAAS,EAAA4J,eAAA,OAAAqX,GACjBke,GAAmB,CAChBnb,QAASA,IAAM6a,EAAasN,gBAAe,yBACpB,OAAMviC,eAAAqX,MAAAA,CAAAA,GAE5Bwb,GAAO,CAACnU,WAAM9O,OAAAA,EAAM8G,OAAO/C,cAAcE,UAAU,IAAAwD,GACnDya,GAAI,CACDnC,eAAe,uBACfiC,SAAS,OACTC,WAAW,OACXF,WAAW,MACX1Z,YAAOrI,OAAAA,EAAM8G,OAAO/C,cAAcE,UAAU,EAAA7T,SAAA,mBAAA,GAAA,IAAAqX,GAMvDjS,GAAI,CAACI,WAAI,OAAEpP,GAAS,EAAA4J,eAAA,OAAAqX,GAChBqe,GAAuB,CAAA11B,eAAAqX,MAAAA,CAAAA,GACnBme,GAAoB,CACjBpb,QAASA,IAAMknB,GAAY/vD,IAAMA,IAAE02B,IAC9B45B,EAAS,0BACU,OAAM7hC,eAAAqX,MAAAA,CAAAA,GAE7Bya,GAAI,CAACF,SAAS,OAAOD,WAAW,MAAME,WAAW,OAAM7xB,eAAA,MA9EtDwiC,MACtB,MAAMC,EAAMrsC,IACZ,GAAIqsC,EAAK,CACL,MAAMxM,EAAsBr9B,GACxB6pC,EAAIlrC,QACJkrC,EAAIhrC,QAAU1W,EAAMm1C,SAEjBD,OAAAA,EAAoB3rD,MAAM,EAAG,GAAK,IAAM2rD,EAAoB3rD,OAAQ,EAC/E,CAEO,MAAA,EAAA,EAqEkBk4D,EAAmB,IAAAnrB,GAEvBkH,GAAS,CAACK,UAAU,WAAQ,IAAAvH,GAEhCzJ,GAAM,CAAA5N,eAAA,MAAA6e,EAAA6jB,IAAA,IAAA5qC,SAAA6qC,WAAA7jB,IAAA,KAMiCD,OANjCiC,GAEM6gB,EAAW9iB,GAAA/U,EAAAA,MAAAG,YAAA,UAAA,OAAA4U,EAAA+jB,Q1EwUvCxnC,G0ExUuCyjB,GAAAA,EAAAxH,GASf/b,GAAU,CACP8f,cAAqB7N,IACjBA,EAAGkT,QACC,CACI,CAAEvI,QAAS,EAAG+F,UAAW,oBACzB,CAAE/F,QAAS,EAAG+F,UAAW,kBAE7B,CACIuC,SAAU,KACb,EAGThF,OAAQA,CAACjO,EAAI1oB,KACC0oB,EAAGkT,QACT,CACI,CAAEvI,QAAS,EAAG+F,UAAW,iBACzB,CAAE/F,QAAS,EAAG+F,UAAW,qBAE7B,CACIuC,SAAU,MAGhBK,SAAS/7B,KAAKD,EAAI,EACvBmb,eAAA,OAAAqX,GAEAjS,GAAI,CAACI,WAAI,OAAE67B,GAAU,EAAArhC,eAAA,OAAAqX,GACjBse,GAAc,CACX19B,aAAM,OAAGopC,GAAU,EACnBtgB,QAASA,IAAMugB,GAAY,GAAMr5B,IAAA8P,sBAC5B2pB,IAAW3pB,GAAX2pB,EAAW3pB,CAAA,GAAA,GAAA,IAAA,MAAAiJ,GAAAnC,EAAAxH,GAI3B8e,GAAmB,CAAA,GAAA,MAAApX,IAAAkU,YAAA,MAAAC,EAxCNzE,EAASwJ,SAAQ9E,EACrB,GAAE1E,OAAAA,EAAAA,EAAStiD,GAATsiD,EAAc,MAAK2E,EACpB,GAAE3E,OAAAA,EAAAA,EAAS3iD,GAAKmf,EAAA,MAAKgoC,OAAAA,IAAAA,EAAAC,KAAArU,EAAA/U,MAAAG,YAAAgpB,WAAAA,EAAAC,IAAAA,GAAAD,IAAAA,EAAAE,MAAAtU,EAAA/U,MAAAG,YAAAgpB,MAAAA,EAAAE,KAAAA,GAAAF,IAAAA,EAAAG,MAAAvU,EAAA/U,MAAAG,YAAAgpB,OAAAA,EAAAG,KAAAA,GAAAH,CAAAA,GAAA,CAAAC,SAAAG,EAAAF,UAAAE,EAAAD,UAAAC,IAAAxU,CAAA,IAAA,GAAA,IAAA,IAAA,GAAA,EE/H1DrF,GAA8B,CAChClqC,EAAG,OACH5G,EAAG,MACH+wC,KAAM,KAGGopB,GAAoBnyB,GAAO6G,GAAA,GAE3B+a,GAAW5hB,GAAO6hB,GAAE;;;EAKpBuQ,GAAmBpyB,GAAO0O,GAAU;;;;EAMpC2jB,GAAWryB,GAAOqf,GAAM;;EAIxBiT,GAAyBtyB,GAAO6G,GAAA;;;;;EAOhC0rB,GAAqBvyB,GAAOwJ,GAAM;;;;;;qBAM1B5X,GAASkX,GAAQlX,EAAMsN,MAAO+G;EAGtCusB,GAAkBxyB,GAAO6G,GAAA;;;;EAMzBma,GAAahhB,GAAOohB,GAAI;;aAEfxvB,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKJ;;GClCjCkvB,GAAUC,IAAelwB,GAAsB,CACzDmwB,aAAc,KACdpU,SAAU,KACVtW,eAAgB,OAChB2qB,yBAA0B,CAAC,ICnBlBC,GAAU7yB,GAAOr/B,CAAA;;;ECUjBmyD,GAAsClhC,GAI/C+U,GACKksB,GAAOppB,GAAA,CAAC3B,WAAI,OAAElW,EAAMkW,IAAI,EAAEjV,aAAQjB,OAAAA,EAAMmhC,MAAQ,SAAW,OAAO,IAJpDC,IACfphC,EAAMmhC,MAAQ,CAAEE,IAAK,uBAA0B,IAGoC,CAAA3jC,eAAA,OAC9EsC,EAAMtC,QAAQ,KCcd4jC,GAAoDthC,IACvD8+B,MAAAA,EAAYthC,GAAWsR,IACvBrjB,EAAgBgP,IAAW,IAC7BqkC,EAAUvzC,QACN,CACIE,cAAeuU,EAAMzQ,OAAO9D,cAC5B7F,UAAWoa,EAAMzQ,OAAO3J,WAE5Boa,EAAMuhC,qBAId,OAAAxsB,GACKwrB,GAAiB,CAAA,kCAAiC,OAAM7iC,eAAAqX,MAAAA,CAAAA,GACpDyrB,GAAgB,CAAC/uB,KAAK,QAAQqG,QAASA,IAAM9X,EAAMwhC,gBAAazsB,GAChEib,GAAQ,CACL3C,eAAe,sCACfC,wBAAmB,MAAA,CAAExqC,KAAMkd,EAAMzQ,OAAOzM,KAAM,EAAA4a,eAAA,MAAA,CAAA,gBAAA0vB,IAEhCptB,IAAAA,EAAMzQ,OAAOzM,OAAI,IAAAiyB,GAElCob,GAAE,CACC9C,eAAe,+BACfC,wBAAmB,MAAA,CAAExqC,KAAMkd,EAAMzQ,OAAOzM,KAAM,EAAA4a,eAAA,MAAA,CAAA,qCAAA0vB,IAEXptB,IAAAA,EAAMzQ,OAAOzM,OAAI,aAAA,IAAAiyB,GAEvD0rB,GAAQ,CACLtR,aAAa,EACbX,gBAAS,OAAE/iC,GAAe,EAC1BiE,eAAQ,OAAEsQ,EAAMzQ,OAAOG,QAAQ,IAAAqlB,GAElC2rB,GAAsB,CAAAhjC,eAAAqX,MAAAA,CAAAA,GAClB4rB,GAAkB,CACfnpB,MAAM,IACNM,QAASA,KACqBpL,GAAAiqB,cAAAC,eAAA,CAAA,EACnB52B,EAAMzQ,QADa,CAEtBkyC,WAAY,oBAEhBtrB,GAAcC,GAAkB3qB,IAAiBo1C,GAASxqB,gBAAe,EAC5E3Y,eAAA,OAAAqX,GAEAoY,GAAW,CACRE,eAAe,qCACfC,wBAAmB,MAAA,CAAExqC,KAAMkd,EAAMzQ,OAAOzM,KAAM,EAAA4a,eAAA,MAAA,CAAA,QAAA0vB,IAExCptB,IAAAA,EAAMzQ,OAAOzM,OAAI,GAAA,IAAAiyB,GAG9BjS,GAAI,CAACI,WAAM3S,OAAAA,GAA8ByP,EAAMzQ,OAAO,EAAAmO,eAAA,OAAAqX,GAClD4rB,GAAkB,CACfnpB,MAAM,IACNM,QAASA,KACLpL,GAA0B1M,EAAMzQ,QAChCuvC,EAAUvzC,QACN,CACI0D,YAAc+Q,EAAMzQ,OACfN,aAET+Q,EAAMuhC,kBAAiB,EAE9B7jC,eAAA,OAAAqX,GAEAoY,GAAW,CAACE,eAAe,uBAAsB3vB,SAAA,kBAAA,GAAA,IAAA,IAAAqX,GAM7D6rB,GAAe,CAAAljC,eAAAqX,MAAAA,CAAAA,GACXqa,GAAU,CACP/B,eAAe,mCACfC,wBAAmB,MAAA,CAAExqC,KAAMkd,EAAMzQ,OAAOzM,KAAM,EAAA4a,eAAA,MAAA,CAAA,cAAA0vB,IAElCptB,IAAAA,EAAMzQ,OAAOzM,OAAI,IAAA,IAAAiyB,GAEhCmsB,GAAI,CAAChrB,WAAI,OAAElW,EAAMzQ,OAAOC,QAAQ,EAAE2xC,OAAK,EAAAzjC,eAAA,OAAAqX,GACnC6C,GAAM,CAAAla,eAAA,OAAAqX,GACFoY,GAAW,CAACE,eAAe,aAAY3vB,SAAA,OAAA,GAAA,IAAA,IAAA,GAAA,EC3GnDgkC,GAActzB,GAAOqP,GAAK;;;;MAIjC1G,GAAM;;;;;;EAQCiZ,GAAW5hB,GAAO6hB,GAAE;;;MAG3BlZ,GAAM;;;EAKC4qB,GAAwBvzB,GAAO6G,GAAA;;;;;;MAMtC8B,GAAM;;;;EAMC6qB,GAAgBxzB,GAAOohB,GAAI;;;;EAM3BzQ,GAAe3Q,IC7B2BpO,IACnD,MAAM6hC,EAAY,SAAW3yD,KAAKC,MAAsB,IAAhBD,KAAK4yD,UAE7C,OAAA/sB,GACKgK,GAAY,CAAA9a,YAAA,OAAQjE,EAAMiE,KAAK,EAAA,kBAAkB,OAAMvG,eAAAqX,MAAAA,CAAAA,GACnDiK,GAAY,CAACvE,YAAK,OAA6B,IAA3Bza,EAAM+hC,gBAAsB,IAAAhtB,GAChDoK,GAAW,CAACE,eAAQ,OAA6B,IAA3Brf,EAAM+hC,gBAAsB,EAAArkC,eAAAqX,MAAAA,CAAAA,GAC9CkK,GAAW,CACR31B,KAAK,QACLxG,KAAM++C,EACNG,QAASA,WAAMhiC,OAAAA,OAAAA,EAAAA,EAAMiiC,+BAANjiC,EAAAA,EAAAA,KAAiCA,EAAA,EAAA,IAAEotB,IAAA,IAErDptB,EAAMkiC,OAAI,IAAAntB,GAEdoK,GAAW,CAACE,eAAQ,OAA6B,IAA3Brf,EAAM+hC,gBAAsB,EAAArkC,eAAAqX,MAAAA,CAAAA,GAC9CkK,GAAW,CACR31B,KAAK,QACLxG,KAAM++C,EACNG,QAASA,WAAMhiC,OAAAA,OAAAA,EAAAA,EAAMiiC,+BAANjiC,EAAAA,EAAAA,KAAiCA,EAAA,EAAA,IAAEotB,IAAA,IAErDptB,EAAMmiC,OAAI,IAAA,GAAA,GDSc;;EErClC,SAASC,GAAqBC,GACjC,MAAI,gBAAiBA,EACV1L,gCACA0L,GADA,CAEHxyC,SAAUuD,GAAWtB,iBAAiBuwC,EAASpzC,aAC/Ca,SAAUsD,GAAWrB,sBAAsBswC,EAASpzC,eAIrDozC,CACX,CAEgB,SAAAC,GACZnxC,EACAoxC,SCdAC,EACAC,EACAC,EDcA,OAAKH,IAID,OAAAj6C,EAAAi6C,EAAcI,qBAAd,EAAAr6C,EAA8BxhB,UCpBlC07D,EDsBQ,OCrBRC,EDsBQtxC,ECrBRuxC,EDsBQH,EAAcI,eAAeh3C,IAAIy2C,IAHvBjxC,ECjBXsxC,EACF92C,KAAai3C,IACJ,MAAAC,EAAQH,EAAO70C,SAAakb,EAAKy5B,KAAWI,EAAMJ,KAGjD,OAFPE,EAASA,EAAO31C,QAAOgc,GAAQA,EAAKy5B,KAAWI,EAAMJ,UAEpC,IAAVK,EAAsBD,EAAQC,CAAA,IAExC1wC,OAAOuwC,IDiBLvxC,GAXIA,CAYf,CE9BA,MAAO2xC,GAAUC,IAAenpC,GAAagd,GAAS,WAElDvoB,MACAC,OAAOoH,iBAAiB,UAAU,IAAMqtC,GAAYnsB,GAAS,aCF1D,MAAMqb,GAAW7jB,GAAO8jB,EAAA;;;;;;;;;;;;;;;;EAkBlB8Q,GAAgB50B,GAAO60B,EAAA;;;;;;;;;;;;;;MAc9BhsB;;;;;;;;;;MAUAD;;;;;EAOOksB,GAAU90B,GAAO6G,GAAA;;;;;;;wBAOGjV,GAAAA,EAAMsN,MAAO8G,OAAO3C,KAAKG;EAG7CuxB,GAAyB/0B,GAAO6G,GAAA;;;;;;;;2BAQZS,GAAK1V,EAAMsN,MAAO8G,OAAO5C,OAAQ;aACrDxR,GAASA,EAAMsN,MAAO8G,OAAO5C;;;EAK7B0e,GAAW9hB,GAAO+hB,GAAE;;;;EAMpB9Y,GAAejJ,GAAOwJ,GAAM;;;ECpF5BwrB,GACG,sGCwBHC,GAA4ErjC,IACrF,MAAM8+B,EAAY+B,GAAS/B,UACrBxxB,EAAQC,KAqBR+1B,EAAoBA,KAChB73C,MAAAA,EAAgBqzC,EAAUvzC,QAC5ByU,EAAM7O,YACDpE,OAAO2D,IACP/E,KAAamC,IAAA,CAAElI,UAAWkI,EAAKlI,UAAW6F,cAAeqC,EAAKrC,kBACnEuU,EAAMuhC,mBAGgB70B,GAAA,CAAE+0B,WAAY,mBAExCxrB,GAASG,GAAkB3qB,EAAeo1C,GAASxqB,gBAAe,EAGtE,MAAA,MAAAkG,MAAAA,EAAAC,GAAA5V,WAAA,GAmC8D2V,OAnC9DA,GAAAA,EAAAxH,GAESkb,GAAE,CAAC5C,eAAe,oDAAmD3vB,SAAA,qBAAA,MAAA6e,GAAAA,EAAAxH,GAGrEmb,GAAQ,CAAC7C,eAAe,mDAAkD3vB,SAAA,wDAAA,MAAA6e,GAAAA,EAAAxH,GAG1Ekd,GAAQ,CAAAv0B,eAAAqX,MAAAA,CAAAA,GACJiuB,GAAa,CAAClrB,QAASwrB,EAAiB5lC,eAAAqX,MAAAA,CAAAA,GACpCouB,GAAsB,CAAAzlC,eAAA,OAAAqX,GAClBub,GAAa,CAAClU,WAAI,OAAE9O,EAAO8G,OAAO5C,MAAM,GAAA,IAAAuD,GAE5Cya,GAAI,CACDH,WAAY,IACZhC,eAAe,sDAAqD3vB,SAAA,qBAAA,IAAAqX,GAK3EmuB,GAAO,CAAAxlC,SAAA,MAAAqX,GACPtT,GAAG,CAACoB,WAAI,OAAE7C,EAAM7O,YAAYpE,QAAOwC,GAAU,cAAeA,GAAO,EAAAmO,kBACzDkf,MAAAA,EAAAqU,GAAArqB,WAAA,GAKoCgW,OALpCA,GAAAA,EAAA7H,GAEE+a,GAAU,CACPC,cAAO,OAAExgC,EAAOG,QAAQ,EACxB5M,WAAI,OAAEyM,EAAOzM,IAAI,EACjBg1B,QAASA,KA3DnBzoB,IAAiCA,EAC3C,kBAD2CA,EA2DCE,IAzD5Cmd,GAA0BiqB,gCAAKtnC,GAAL,CAAiBoyC,WAAY,oBAUvDxrB,GAASG,GARa0oB,EAAUvzC,QAC5B,CACIE,cAAe4D,EAAW5D,cAC1B7F,UAAWyJ,EAAWzJ,WAE1Boa,EAAMuhC,mBAGgCV,GAASxqB,kBAIvDF,GAAc9mB,EAAWG,SA2C8B,KAAAotB,CAAA,OAG1C,IAAA,MAAAL,GAAAA,EAAAxH,GAGRmsB,GAAI,CAAChrB,WAAI,OAAEktB,EAAgB,EAAEjC,OAAK,EAAAzjC,eAAA,OAAAqX,GAC9BsC,GAAY,CAAA3Z,eAAA,OAAAqX,GACRoY,GAAW,CAACE,eAAe,mBAAkB3vB,SAAA,cAAA,GAAA,IAAA,MAAA6e,GAnC9D,ICzDErF,GAA8B,CAChClqC,EAAG,OACH5G,EAAG,MACH+wC,KAAM,KAGJ2a,GAAmC,CACrC9kD,EAAG,MACH5G,EAAG,MACH+wC,KAAM,KAGGosB,GAAyBn1B,GAAO6G,GAAA;;;;EAMhCib,GAAW9hB,GAAO+hB,GAAE;;;EAKpBqT,GAAep1B,GAAOqf,GAAM;;EAI5BiT,GAAyBtyB,GAAO6G,GAAA;;;;EAMhC0rB,GAAqBvyB,GAAOwJ,GAAM;;;;;;;qBAO1B5X,GAASkX,GAAQlX,EAAMsN,MAAO+G;;;UAGzCrU,GAAUA,EAAMyjC,uBAAyB,oBAAsB;;;;UAI/DzjC,GAAUA,EAAMyjC,uBAAyB,oBAAsB;;EAI5DC,GAAqBt1B,GAAO8jB,EAAA;;;;;;;;;wBASRlyB,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWI;qBAC3C1R,GAASkX,GAAQlX,EAAMsN,MAAO+G;;EAItCsvB,GAAoBv1B,GAAO60B,EAAA;;;;;;;;qBAQnBjjC,GAAS8xB,GAAa9xB,EAAMsN,MAAO+G;;;;;4BAKnBrU,GAAAA,EAAMsN,MAAO8G,OAAO9C,WAAWK;;;;;;EAQvD+N,GAActR,GAAO8G,GAAK;;;;;EAO1B0rB,GAAkBxyB,GAAO6G,GAAA;;;;;;;EASZ7G,GAAOohB,GAAI;aACfxvB,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKJ;;ECxExC,MAAMiyB,GAA8D5jC,IACvE,MAAO6jC,EAAaC,GAAkBlqC,IAAa,GAC7CklC,EAAY+B,GAAS/B,UAErBiF,EAAiB/jC,EAAM7O,YACxBpE,OAAO2D,IACP/E,KAAamC,IAAA,CAAElI,UAAWkI,EAAKlI,UAAW6F,cAAeqC,EAAKrC,kBAC7Du4C,EAA6BhkC,EAAM7O,YAAYpE,OAAOwD,IAElCmc,GAAA,CAAE+0B,WAAY,WAClCt8C,MAAAA,EAAUsV,IAAW,IAAMqkC,EAAUvzC,QAAQw4C,EAAgB/jC,EAAMuhC,qBAEnE0C,EAAoBA,KACtB,SAASC,IACqBx3B,GAAA,CAAE+0B,WAAY,mBACjC15B,OAAAA,oBAAoB,OAAQm8B,EACvC,CAEOxuC,OAAAA,iBAAiB,OAAQwuC,GAEhCjuB,GAASG,GAAkBjxB,IAAW07C,GAASxqB,iBAC/C6Y,YAAW,KACAnnB,OAAAA,oBAAoB,OAAQm8B,EAAW,GAC/C,IAAG,EAGJC,EAAwBzxD,IAEtBsxD,GADJtxD,EAAE0xD,kBACwC,IAAtCJ,EAA2Bl9D,OAAc,CACzC,MAAMuoB,EAAa20C,EAA2B,GAS9C,OARAt3B,GAA0Brd,QAE1ByvC,EAAUvzC,QACN,CACI0D,YAAaI,EAAWJ,aAE5B+Q,EAAMuhC,kBAGd,CAEe7jB,GAAAA,IAAWA,GAAM,EAcpC,OAAA3I,GACKwuB,GAAsB,CACnBzrB,QAASA,IAAMgsB,GAAe,GAAM,+BACP,OAAMpmC,eAAAqX,MAAAA,CAAAA,GAElCmb,GAAQ,CAAC7C,eAAe,sCAAqC3vB,SAAA,uDAAAqX,GAG7DyuB,GAAY,CAAChV,gBAAS,OAAErpC,GAAS,EAAEgqC,kBAAW,OAAE0U,GAAa,IAAA9uB,GAC7D2rB,GAAsB,CAAAhjC,eAAAqX,MAAAA,CAAAA,GAClB4rB,GAAkB,CAAC7oB,QAASmsB,EAAmBzsB,MAAM,IAAG9Z,eAAAqX,MAAAA,CAAAA,GACpDjS,GAAI,CAACI,WAAI,OAAE8gC,EAA2Bl9D,MAAM,EAAA42B,eAAA,OAAAqX,GACxCoY,GAAW,CAACE,eAAe,0CAAyC3vB,SAAA,eAAA,IAAAqX,GAIxEjS,GAAI,CAACI,WAAI,OAAG8gC,EAA2Bl9D,MAAM,EAAA42B,eAAA,OAAAqX,GACzCoY,GAAW,CAACE,eAAe,mDAAkD3vB,SAAA,yBAAA,IAAA,IAAAqX,GAKrFjS,GAAI,CAACI,WAAI,OAAE8gC,EAA2Bl9D,MAAM,EAAA42B,eAAA,OAAAqX,GACxC4rB,GAAkB,CACf7oB,QAASqsB,EACTV,6BAAsB,OAAEI,GAAa,EACrCrsB,MAAM,IAAG9Z,eAAAqX,MAAAA,CAAAA,GAER/b,GAAU,CACP8f,cAAqB7N,IACjBA,EAAGkT,QACC,CACI,CAAEvI,QAAS,EAAG+F,UAAW,iBACzB,CAAE/F,QAAS,EAAG+F,UAAW,sBAE7B,CACIuC,SAAU,KACb,EAGThF,OAAQA,CAACjO,EAAI1oB,KACT0oB,EAAGkT,QACC,CACI,CAAEvI,QAAS,EAAG+F,UAAW,qBACzB,CAAE/F,QAAS,EAAG+F,UAAW,kBAE7B,CACIuC,SAAU,MAEhBK,SAAS/7B,KAAKD,EAAI,EACvBmb,eAAA,OAAAqX,GAEAjS,GAAI,CAACI,WAAI,OAAE2gC,GAAa,EAAAnmC,eAAA,OAAAqX,GACpB2uB,GAAkB,CAAAhmC,eAAA,OAAAqX,GACdtT,GAAG,CAACoB,KAAMmhC,EAA0BtmC,SAC1BqX,GAAAA,GACF4uB,GAAiB,CACd7rB,QAASA,KAAMusB,OAnEvD33B,GADwErd,EAoEAE,QAjExEuvC,EAAUvzC,QACN,CACI0D,YAAaI,EAAWJ,aAE5B+Q,EAAMuhC,mBAPYlyC,IAAkDA,CAoEM,EAACqO,eAAAqX,MAAAA,CAAAA,GAEtC2K,GAAW,CAACpK,UAAG,OAAE/lB,EAAOG,QAAQ,EAAE6lB,IAAI,KAAER,GACxCya,GAAI,CAACH,WAAY,IAAG3xB,eAAA,OAAGnO,EAAOzM,IAAI,IAAA,KAE1C,GAAA,GAAA,IAAAiyB,GAKhBoY,GAAW,CAACE,eAAe,uBAAsB3vB,SAAA,mBAAA,GAAA,IAAA,IAAAqX,GAM7DjS,GAAI,CAACI,WAAI,OAAG8gC,EAA2Bl9D,MAAM,EAAA42B,eAAA,OAAAqX,GACzC6rB,GAAe,CAAAljC,eAAA,OAAAqX,GACXmsB,GAAI,CAAChrB,WAAI,OAAEktB,EAAgB,EAAEjC,OAAK,EAAAzjC,eAAA,OAAAqX,GAC9B6C,GAAM,CACHL,WAAW,OAAMtT,MACV4J,EAAAA;;8BAENnQ,eAAA,OAAAqX,GAEAoY,GAAW,CAACE,eAAe,mBAAkB3vB,SAAA,cAAA,GAAA,GAAA,GAAA,IAAA,GAAA,ECzK7D4mC,GAAiCl2B,GAAO6G,GAAA;;;;EAMxCib,GAAW9hB,GAAO+hB,GAAE;;EAIpBoU,GAAYn2B,GAAO8jB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;EA0BnB7a,GAAejJ,GAAOwJ,GAAM;;;;qBC1B5B4sB,GAA8ExkC,GACvF+U,GACKuvB,GAA8B,CAAA,gCAA+B,OAAM5mC,eAAAqX,MAAAA,CAAAA,GAC/Dmb,GAAQ,CAAC7C,eAAe,oDAAmD3vB,SAAA,kEAAAqX,GAG3EwvB,GAAS,CAAA7mC,eAAA,OAAAqX,GACLtT,GAAG,CAACoB,WAAI,OAAE7C,EAAM7O,WAAW,EAAAuM,kBACjB6e,MAAAA,EAAAC,GAAA5V,WAAA,GAK0C2V,OAL1CA,GAAAA,EAAAxH,GAEE+a,GAAU,CACPC,cAAO,OAAExgC,EAAOG,QAAQ,EACxB5M,WAAI,OAAEyM,EAAOzM,IAAI,EACjBg1B,QAASA,IAAM9X,EAAMykC,SAASl1C,MAAOgtB,CAAA,MAGhD,IAAAxH,GAGRmsB,GAAI,CAAChrB,WAAI,OAAEktB,EAAgB,EAAEjC,OAAK,EAAAzjC,eAAA,OAAAqX,GAC9BsC,GAAY,CAACE,WAAW,OAAM7Z,eAAA,OAAAqX,GAC1BoY,GAAW,CAACE,eAAe,mBAAkB3vB,SAAA,cAAA,GAAA,IAAA,8DCKrDgnC,GAA0BA,KAC7B,MAAA9X,OAAEA,GAAWM,KAAU,GAC7B5yB,IAAa,IAAMsyB,EAAOiU,GAASlU,YAE7BmS,MAAAA,EAAYthC,GAAWsR,IACvB6jB,EAAen1B,GAAWm0B,KACzBgT,GAAsBjqC,IAAe,IAAMi4B,EAAc7hC,gBAEzD8zC,EAAoBC,GAAyBjrC,GAAgC,OAC7EmoC,EAAkB+C,GAAuBlrC,GAAa,GAEvDzI,EAAcsJ,IAAW,KACvBkqC,GAA6B,UAA7BA,EAAmBjpC,MACZ,OAAA,KAGX,IAAIvK,EAAcmxC,GACdqC,IACA9D,GAASG,0BAEb,MAAM+D,EAAsBlE,GAASkE,oBAC/BC,EAAkB7zC,EAAYtD,MAAaC,GAAAA,EAAKhL,OAASiiD,IACzDE,EACF9zC,EAAYpE,QAAOe,GAAQA,EAAKhL,OAASiiD,IAAqBj+D,QAAU,EAQrEqqB,OANH4zC,GAAuBC,IAAoBC,IAC3C9zC,EAAc,CAAC6zC,GAAiB7yC,OAC5BhB,EAAYpE,QAAee,GAAAA,EAAKhL,OAASiiD,MAI1C5zC,CAAAA,IAGL+zC,EAA2BA,WAC7BrE,MAA6C,aAA7CA,OAAAA,EAAAA,GAASsE,+BAATtE,EAAAA,EAAmCnlC,MAAU,EAE3C6lC,EAAoB9mC,IAAW,WACjC,IAAIyqC,IAIJ,OAAQrE,OAAAA,EAAAA,GAASsE,+BAATtE,EAAAA,EACFjiD,KAAAA,IAGJ6/B,EAAUA,KACZjS,IAAoB,GACpBq4B,EAAsB,KAAI,EAGxBO,EAA0D/1C,GACxDkB,GAA8BlB,IAC9Bqd,GAA0Brd,QAC1ByvC,EAAUvzC,QACN,CACI0D,YAAaI,EAAWJ,aAE5BsyC,MAKJ7wC,GAAmBrB,IACnBqd,GAA0BiqB,gCAAKtnC,GAAL,CAAiBoyC,WAAY,iBACvDoD,EAAsBx1C,SAI1B8mB,GAAc9mB,EAAWG,UAW7B,OAFA2N,GANoB2hC,EAAU/qC,gBAAyBxE,IAC/CA,MAEJ,KAKJwlB,GACK2sB,GAAW,CACRhkB,aAAM,OAAEnR,IAAkB,EAC1BkS,UAAgB,kCACgB,OAAM/gB,eAAAqX,MAAAA,CAAAA,GAErCjS,GAAI,CAACI,WAAMgiC,OAAAA,MAA+B/zC,GAAa,EAAAuM,eAAAqX,MAAAA,CAAAA,GACnDib,GAAQ,CAAC3C,eAAe,sBAAqB3vB,SAAA,4BAAAqX,GAC7C4sB,GAAqB,CAAAjkC,eAAA,OAAAqX,GACjByc,GAAU,CAAC7R,KAAK,KAAG,IAAA,IAAA5K,GAI3BjS,GAAI,CAACI,WAAMkqB,OAAAA,IAAC8X,KAAAA,KAAD9X,IAA+Bj8B,GAAa,EAAAuM,eAAAqX,MAAAA,CAAAA,GACnDjS,GAAI,CAACI,WAAI,OAAE4/B,IAAU,EAAAplC,eAAA,OAAAqX,GACjBsuB,GAAuB,CACpBlyC,kBAAW,OAAEA,GAAa,EAC1BowC,wBAAiB,OAAEA,GAAmB,GAAA,IAAAxsB,GAI7CjS,GAAI,CAACI,WAAI,OAAG4/B,IAAU,EAAAplC,eAAAqX,MAAAA,CAAAA,GAClBjS,GAAI,CAACI,WAAI,OAAG0hC,GAAoB,EAAAlnC,eAAA6e,MAAAA,EAAAC,GAAA5V,WAAA,GAiCkB2V,OAjClBA,GAAAA,EAAAxH,GAExBgK,GAAY,CACTmjB,WAAI,OAAAntB,GACC6sB,GAAa,CACVvU,eAAe,qBACfsC,OAAO,QAAOjyB,SAAA,WAAA,EAKtBykC,WAAI,OAAAptB,GACC6sB,GAAa,CACVvU,eAAe,sBACfsC,OAAO,QAAOjyB,SAAA,WAAA,EAKtBqkC,uBAAgB,OAAEA,GAAkB,EACpCE,yBAA0B6C,IAAmB,MAAAvoB,GAAAA,EAAAxH,GAGhD3R,GAAM,CAAA1F,eAAAqX,MAAAA,CAAAA,GACFtR,GAAK,CAACP,WAAI,OAAyB,IAAvB6+B,GAAwB,EAAArkC,eAAA,OAAAqX,GAChC6uB,GAAgB,CACbzyC,kBAAW,OAAEA,GAAa,EAC1BowC,wBAAiB,OAAEA,GAAmB,GAAA,IAAAxsB,GAG7CtR,GAAK,CAACP,WAAI,OAAyB,IAAvB6+B,GAAwB,EAAArkC,eAAA,OAAAqX,GAChCyvB,GAAwB,CACrBrzC,kBAAW,OAAEA,GAAa,EAC1BszC,SAAUW,GAAqB,IAAA,IAAA,MAAA7oB,CAAA,IAAAxH,GAMlDjS,GAAI,CAACI,WAAI,OAAE0hC,GAAoB,EAAAlnC,eAAA,OAAAqX,GAC3BusB,GAAW,CACRC,wBAAiB,OAAEA,GAAmB,EACtChyC,aAAM,OAAEq1C,GAAoB,EAC5BpD,YAAaA,IAAMqD,EAAsB,OAAK,IAAA,IAAA,IAAA,GAAA,ECrL7DQ,GAAoBj3B,GAAO6G,GAAA;;;;;EAO3B+a,GAAW5hB,GAAO6hB,GAAE;;EAIpBb,GAAahhB,GAAOohB,GAAI;;;;;;;aAOfxvB,GAAAA,EAAMsN,MAAO8G,OAAOrC,KAAKJ;EAGlC0F,GAAejJ,GAAOwJ,GAAM;;ECR5B0tB,GAAoDtlC,IACvD2X,MAAAA,EAAYF,GAAkBzX,GAEpC+U,OAAAA,GACKswB,GAAiBxtB,GAAKF,EAAS,CAAAja,eAAA,MAAA0vB,CAAAA,QAC3BptB,EAAMyR,OAAIsD,GACVib,GAAQ,CACL3C,qBAAc,OAAErtB,EAAMulC,oBAAoB,EAC1CjY,wBAAiB,OAAEttB,EAAMwlC,uBAAuB,IAAAzwB,GAEnDqa,GAAU,CACP/B,qBAAc,OAAErtB,EAAMylC,kBAAkB,EACxCnY,wBAAiB,OAAEttB,EAAM0lC,qBAAqB,IAAA3wB,GAEjDjS,GAAI,CAACI,WAAI,OAAuB,IAArBlD,EAAM2lC,UAAoB,EAAAjoC,eAAA,OAAAqX,GACjCsC,GAAY,CAACS,QAASA,IAAM9X,EAAMye,UAAS/gB,eAAA,OAAAqX,GACvCoY,GAAW,CAACE,eAAe,eAAc3vB,SAAA,SAAA,GAAA,IAAA,IAAA,ECtBjDkoC,GAA4E5lC,UAC/E2yB,MAAAA,EAAen1B,GAAWm0B,KACzBriD,GAAK49C,KACNpqC,GAAO6vC,OAAAA,EAAAA,EAAcpjC,aAAdojC,EAAAA,EAAsB7vC,OAAQxT,EAAE,oBAAqB,GAAI,eAEtE,OAAAylC,GACKuwB,GAAW,CACRC,qBAAqB,wCACrBC,wBAAyB,CAAE1iD,QAC3B2iD,mBAAmB,sCACnBh0B,WAAI,OAAAsD,GAAGyc,GAAU,CAAC7R,KAAK,KAAG,EAC1BlB,QAASA,IAAMze,EAAMye,UACrBknB,YAAY,EAAK,wBACK,QAAM,ECf3BE,GAA8E7lC,GACvF+U,GACKuwB,GAAW,CACRC,qBAAqB,yCACrBE,mBAAmB,uCACnBh0B,WAAI,OAAAsD,GAAGwc,GAAS,CAAC5R,KAAK,KAAG,EACzBlB,QAASA,IAAMze,EAAMye,UAAS,qCACK,SCPlCqnB,GAAsE9lC,GAC/E+U,GACKuwB,GAAW,CACRC,qBAAqB,qCACrBE,mBAAmB,mCACnBh0B,WAAI,OAAAsD,GAAGyb,GAAW,CAAC7Q,KAAK,KAAG,EAC3BlB,QAASA,IAAMze,EAAMye,UAAS,iCACC,SCR9BsnB,GAA0BA,IACnChxB,GACK0I,GAAK,CACFC,mBAAM,OAAE0P,IAAA,IAAa,OAAbzgB,MAAAygB,KAA6C,KAAxBzgB,OAAAA,EAAAA,WAAAA,EAAAA,EAAUq5B,UAAkB,EACzDvnB,QAASA,IAAM7R,GAAU,MAAK,kCACE,OAAMlP,eAAA,OAAAqX,GAErC3R,GAAM,CAAA1F,eAAAqX,MAAAA,CAAAA,GACFtR,GAAK,CAACP,WAAMyJ,MAAmB,qBAAnBA,KAAU7pB,IAA2B,EAAA4a,eAAA,OAAAqX,GAC7C+wB,GAAoB,CAACrnB,QAASA,IAAM7R,GAAU,OAAK,IAAAmI,GAEvDtR,GAAK,CAACP,WAAMyJ,MAAmB,yBAAnBA,KAAU7pB,IAA+B,EAAA4a,eAAA,OAAAqX,GACjD8wB,GAAwB,CAACpnB,QAASA,IAAM7R,GAAU,OAAK,IAAAmI,GAE3DtR,GAAK,CAACP,WAAMyJ,MAAmB,wBAAnBA,KAAU7pB,IAA8B,EAAA4a,eAAA,OAAAqX,GAChD6wB,GAAuB,CAACnnB,QAASA,IAAM7R,GAAU,OAAK,IAAA,GAAA,ICArEq5B,GAAoCjmC,IACtC,MAAMkmC,EAAezZ,GAAkBne,GAAgBuyB,GAASlU,UAKhE5X,OjFkCAoxB,eAAeC,OAAOzxB,GAAiB,cAA4B0xB,iBAAmB,CAClFC,QAAS,QAPR9wC,SAASpN,KAAKm+C,aAAa,iBACnB/wC,SAAApN,KAAKid,aAAa,eAAgB,IiF7B/C0P,GACKkY,GAAY1vB,SAAQ,CAAC3e,MAAOsnD,EAAYxoC,eAAAqX,OAAAA,GACpC4c,GAAoBp0B,SAAQ,CAAC3e,YAAK,OAAEohB,EAAM2yB,YAAY,EAAAj1B,eAAAqX,OAAAA,GAClDjG,GAAiBvR,SAAQ,CAAC3e,YAAK,OAAEiiD,GAAS/B,SAAS,EAAAphC,eAAA,MAAA,CAAAqX,GAC/CD,GAAYC,CAAAA,GAAAA,GACZ1H,GAAa,CAACC,MAAO2G,GAAUvW,eAAAqX,MAAAA,CAAAA,GAC3BjS,GAAI,CAACI,WAAI,OAAE29B,GAASE,YAAY,EAAArjC,eAAA,OAAAqX,GAC5BzJ,GAAM,CAACE,YAAOhW,OAAAA,SAASgxC,eAAe3F,GAASE,aAAc,EAAArjC,eAAAqX,OAAAA,GACzD8pB,GAAa,CAAA,EAAA,GAAA,IAAA9pB,GAGrB7I,GAAO,CAACG,UAAWsI,GAAejX,eAAA,MAAA,CAAAqX,GAC9B2vB,GAAY3vB,CAAAA,GAAAA,GACZgxB,GAAY,CAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,EC7B5BU,GACSC,KAAiBxX,YAAW,IAAM1iB,IAAoB,IAAK,EADpEi6B,GAGG95B,IAA8BuiB,YAAW,IAAMtiB,GAAUD,IAAO,EAHnE85B,GAIIE,KAAiBzX,YAAW,IAAMtiB,GAAU,OAAK,EAJrD65B,GAKcG,IAKTn6B,KAVLg6B,GAWEI,CAAC9gE,EAAc4sD,IpGiE9B,SAAgB/tC,EAAMohB,EAASx9B,EAAMma,EAAU,CAAA,GACzC,IAAA+f,EAKJ,OAJArJ,IAAW6G,IACEA,EAAAA,EACC8F,IAAAxQ,SAAW5Q,IAASshB,GAAOF,EAASphB,IAAQohB,EAAQZ,WAAa,UAAO,EAAW58B,EAAI,GAClGma,EAAQiW,OACJ,SAELoN,EAAQ8D,YAAc,EAAA,CAE1B,CoG1EQg9B,EACI,IAAA/xB,GAAOkxB,GAAG,CAACtT,kBACXn9B,SAASgxC,eAAezgE,ICvB7B,MAAMghE,GAKT7mD,cAJiB8mD,cAAA/gE,KAAA,gBAEa+gE,cAAA/gE,KAAA,aAAA,mCAK1BA,KAAKqqB,aAAeA,YACxB,CAEO22C,cAAc53C,GACjBppB,KAAKqqB,aAAatK,QAAQ/f,KAAKihE,WAAYnoD,KAAKC,UAAUqQ,GAC9D,CAEO83C,gBACH,MAAMC,EAAmBnhE,KAAKqqB,aAAajK,QAAQpgB,KAAKihE,YAExD,OAAKE,EAIEroD,KAAKQ,MAAM6nD,GAHP,IAIf,CAEOC,mBACEphE,KAAAqqB,aAAapK,WAAWjgB,KAAKihE,WACtC,EC5BG,MAAMI,GAKTpnD,cAJiB8mD,cAAA/gE,KAAA,gBAEa+gE,cAAA/gE,KAAA,aAAA,wCAK1BA,KAAKqqB,aAAeA,YACxB,CAEOi3C,uBAAuBzkD,GAC1B7c,KAAKqqB,aAAatK,QAAQ/f,KAAKihE,WAAYpkD,EAC/C,CAEO0kD,yBACH,OAAOvhE,KAAKqqB,aAAajK,QAAQpgB,KAAKihE,kBAAe,CACzD,ECeG,MAAMO,GA6GTvnD,YAAYyC,GACR,GAzGaqkD,cAAA/gE,KAAA,oBAAoB,IAAI8gE,IAExBC,cAAA/gE,KAAA,yBAAyB,IAAIqhE,IAE9BN,cAAA/gE,KAAA,aAEsC+gE,cAAA/gE,KAAA,aAAA,MAEM+gE,cAAA/gE,KAAA,+BAAA,MAEpD+gE,cAAA/gE,KAAA,wBAES+gE,cAAA/gE,KAAA,eAET+gE,cAAA/gE,KAAA,oCAQ6B+gE,cAAA/gE,KAAA,qBAAA+b,QAAQC,SAAQ,IAmF7CU,GAAW,cAAeA,GAAWA,EAAQm8C,UAC7C74D,KAAK64D,UAAYn8C,EAAQm8C,cAClB,MAAAn8C,GAAW,gBAAiBA,GAAWA,EAAQ+Q,aAGtD,MAAM,IAAIsiB,GACN,wEAHJ/vC,KAAK64D,UAAY,IAAI1rC,GAAW,CAAEM,YAAa/Q,EAAQ+Q,aAK3D,CAEKztB,KAAAkrB,YAAclrB,KAAK6qB,aAExB7qB,KAAKkrB,YAAY3O,MAAamf,IAAA+lC,OpB5JdrmD,EoB4JiCsgB,EAAKhW,KAAImC,GAAQA,EAAK4B,epB3JpE,IAAI,IAAIwC,IAAI7Q,IjEmEZzB,SAAey1B,KACL,IAAI/mB,OAAO4mB,OACnBI,IAAMD,CAAA,IAHZ,IiEnEiBh0B,CoB4JkE,IAElF,MAAMsmD,EAAS1hE,KAAK2hE,oBAAoB,MAAAjlD,OAAA,EAAAA,EAASklD,cAEjD5hE,KAAK6hE,2BAE8B,KAA/B,MAAAnlD,OAAA,EAAAA,EAASuJ,qBACTjmB,KAAK45D,mBAAqB,IAAI79C,SAAcC,GAAWyxC,QAAAztD,KAAA,MAAA,kBAC7CA,KAAK64D,UAAU5yC,oBAEhBjmB,KAAK64D,UAAUjrC,WAChB5tB,KAAK8hE,kBAAkBV,mBAGnBplD,EAAAhc,KAAK64D,UAAUjrC,UAAS,OAInC5tB,KAAA+hE,UAAYn0B,GAAalxB,EAAS,CAAEslD,cAAe,CAAE36B,MAAO,YAC3D,MAAAy3B,EAAsB9+D,KAAKiiE,uBAAuBV,yBAC5C1G,GAAA,CACRhC,UAAW74D,KAAK64D,UAChBiG,wBAGa0B,GAAUkB,EAAQ1hE,KACvC,CAnJAolB,oBACI,OAAO+H,GAAWtC,YACtB,CA6BW+C,gBACP,OAAO5tB,KAAK64D,UAAUjrC,SAC1B,CAKWC,cACP,OAAO7tB,KAAK64D,UAAUhrC,OAC1B,CAKWvE,aACP,OAAKtpB,KAAK64D,UAAUvvC,QAAWtpB,KAAKopB,WAI7BunC,eACAA,eAAA,CAAA,EAAA3wD,KAAK64D,UAAUvvC,QACftpB,KAAKopB,YALD,IAOf,CAMW24C,cAAUrlD,iB3FlDC+xB,EAJML,E2FuDnBpuC,KAAAkiE,qBAAqBxlD,EAAQo+C,cAElC96D,KAAKmiE,qBAAuBzlD,EAAQylD,sBAEhC,OAAA9/C,EAAA3F,EAAQslD,oBAAR,EAAA3/C,EAAuBglB,OACc,YAAjC,OAAA3kB,EAAQhG,EAAAslD,oBAAe,EAAAt/C,EAAA2kB,QACvB,OAAA0vB,EAAA/2D,KAAKoiE,+BAALrL,EAAA/0D,KAAAhC,MACAwuC,GAAS9xB,EAAQslD,cAAc36B,MAAO3qB,EAAQslD,cAAcvzB,aAE5DD,GrF1FRnmB,OAAOg6C,YAAch6C,OAAOg6C,WAAW,iCAAiCC,QACjEv3B,GAAMmD,MAGVnD,GAAMuD,KqFsF0B5xB,EAAQslD,cAAcvzB,WAE5CzuC,KAAKoiE,+BACDpiE,KAAAoiE,6BrFtFlB,SAAgCv7C,GAC7B,MAAAmb,EAAWza,GACbV,EAASU,EAAM+6C,QAAUv3B,GAAMuD,KAAOvD,GAAMmD,OAEhD,OADA7lB,OAAOg6C,WAAW,gCAAgC5yC,iBAAiB,SAAUuS,GACtE,IACH3Z,OAAOg6C,WAAW,gCAAgCvgC,oBAAoB,SAAUE,EACxF,CqFgFwDugC,CAAuB/zB,OAI/D,OAAAg0B,EAAA9lD,EAAQslD,oBAAR,EAAAQ,EAAuB/zB,a3FnEbA,E2FoEA/xB,EAAQslD,cAAcvzB,U3FnE5CF,GAAkBxD,GAAMuD,MAAQV,GAC5Ba,EAAU1D,GAAMuD,MAChBC,GAAkBxD,GAAMuD,OAE5BC,GAAkBxD,GAAMmD,OAASN,GAC7Ba,EAAU1D,GAAMmD,OAChBK,GAAkBxD,GAAMmD,QAG5BD,IAAwBxY,IAAA,CACpB0Y,OAAQP,GACJW,GAAkB9Y,EAAM4R,OACxBgH,GAA0B5Y,EAAM4R,c2F2DhC,OAAAo7B,EAAA/lD,EAAQslD,oBAAR,EAAAS,EAAuBr0B,gB3F5EHA,E2F6EJ1xB,EAAQslD,cAAc5zB,a3F5EhCH,GAAA,CAAEG,kB2F+EZysB,IAAqBplC,UACjB,MAAMitC,EAAS90B,GACX+iB,eACQA,eAAAA,eAAA,CAAA,EAAAj0C,EAAQgqC,UAAY,CAAEA,SAAUhqC,EAAQgqC,cACtC,OAAArkC,EAAA3F,EAAQylD,2BAAR,EAAA9/C,EAA8B+tB,iBAAkB,CAClDA,eAAgB1zB,EAAQylD,qBAAqB/xB,mBAE3C1zB,EAAQq+C,0BAA4B,CACtCA,yBAA0Br+C,EAAQq+C,2BAG1Cl2B,GAAOpP,IAOJ,YAJsB,IAAzB/Y,EAAQo+C,eACR4H,EAAO5H,aAAep+C,EAAQo+C,cAG3B4H,CAAA,GAEf,CAiDOC,4BACHzD,SAEYrE,GAAA,CAAEqE,6BAC0B,WAAV,MAA1BA,OAA0B,EAAAA,EAAAzpC,QAAsBypC,GAC3C,OAAA78C,EAAAriB,KAAA4iE,mCAAAvgD,EAAArgB,UAA6D,MAA1Bk9D,OAA0B,EAAAA,EAAAvmD,MAE1E,CAKakS,aAAoC,OAAA4iC,QAAAztD,KAAA,MAAA,YACtC,OAAAA,KAAK64D,UAAUhuC,YAC1B,GAAA,CAMOiD,eACHjH,EACAnF,GAEA,OAAO1hB,KAAK64D,UAAU/qC,gBAAqBxE,GAAUmkC,QAAAztD,KAAA,MAAA,YACjD,GAAIspB,EAAQ,CACR,MAAMkd,QAA+BxmC,KAAK2gE,sBAAsBr3C,GAEvDzC,EAAA8pC,iCACFrnC,GACCkd,GAA0BxmC,KAAK8hE,kBAAkBZ,iBACxD,MAEDr6C,EAASyC,OAEd5H,EACP,CAKas4C,gBAA0C,OAAAvM,QAAAztD,KAAA,MAAA,YAC7C,MACAkuB,SADoBluB,KAAK6qB,cACIjD,KAAK4C,IAExC,GAAI0D,EAAgB,CACV,MAAA5I,EAAWu9C,IACbp8B,GAA0BvY,GAC1BluB,KAAK64D,UAAUvzC,QAAQ,CAAE0D,YAAakF,EAAelF,aAAe65C,EAAU,EAG5EvH,EAAoBV,GAASsE,yBACF,aAA7B,MAAA5D,OAAA,EAAAA,EAAmB7lC,OACnBz1B,KAAK4iE,iCAAmCt9C,EAExCA,QAAQg2C,WAAmB3iD,MAC/B,MAEA6nD,KAGJ,OAAO,IAAIzkD,SAAQ,CAACC,EAASC,KACzB,MAAM49C,EAAc75D,KAAK64D,UAAU/qC,gBAAqBxE,GAAUmkC,QAAAztD,KAAA,MAAA,YAE9D,OAAIspB,EAAQ,CACR,MAAMkd,QAA+BxmC,KAAK2gE,sBAAsBr3C,GAExDtN,EAAA20C,iCACDrnC,GACCkd,GAA0BxmC,KAAK8hE,kBAAkBZ,iBACxD,MAEMjlD,EAAA,IAAI8zB,GAAkB,iCAElC9zB,EAAM,GAEjB,GAAA,CAKOwK,aAGI,OAFP+5C,KACAxgE,KAAK8hE,kBAAkBV,mBAChBphE,KAAK64D,UAAUpyC,YAC1B,CAOa4H,gBACT/b,EACAoK,GACgC,OAAA+wC,QAAAztD,KAAA,MAAA,YAChC,IAAKA,KAAK4tB,YAAc5tB,KAAKopB,WACnB,MAAA,IAAI2mB,GAAkB,yCAG1B,MAAEue,cAAAA,EAAewU,OAAAA,EAAA1yB,eAAQA,GAC3BpwC,KAAK+iE,uCAAuCrmD,GAE5C,kBAAmB1c,KAAKopB,YAA6C,mBAA/BppB,KAAKopB,WAAWoyC,YACtDxrB,GAASG,GAAkBnwC,KAAKopB,WAAW5D,cAAe4qB,IAG9DowB,GAA2B,CACvB3jD,KAAM,sBACNwxC,iBAAkBC,EAAcrnC,SAAS,UACzC84C,UAAW+C,EAAO77C,SAAS,YAG3B,IACA,MAAMnN,QAAe9Z,KAAK64D,UAAUxqC,gBAAgB/b,GAQ7C,OANPkuD,GAA2B,CACvB3jD,KAAM,mBACNwxC,iBAAkBC,EAAcrnC,SAAS,WACzC84C,UAAW+C,EAAO77C,SAAS,aAGxBnN,QACFrN,GAOL,MANA+zD,GAA2B,CACvB3jD,KAAM,uBACNwxC,iBAAkBC,EAAcrnC,SAAS,SACzC84C,UAAW+C,EAAO77C,SAAS,WAG3Bxa,aAAagQ,EACPhQ,GAENqW,QAAQrE,MAAMhS,GACR,IAAIsjC,GAAkB,mBAAqBtjC,GAEzD,CACJ,GAAA,CAEQo1D,0BACC7hE,KAAA64D,UAAU/qC,gBAAqBxE,GAAUmkC,QAAAztD,KAAA,MAAA,kBACtCspB,SACMtpB,KAAKgjE,iBAAiB15C,GACvBtpB,KAAAshE,wBAAuB,OAAAj/C,EAAAriB,KAAKopB,mBAAL/G,EAAiBxF,OAAQyM,EAAOkF,OAAOy0C,UAEnEjjE,KAAK8hE,kBAAkBV,kBAC3B,KAER,CAEQE,uBAAuB3oD,GACtB3Y,KAAAiiE,uBAAuBX,uBAAuB3oD,GACvCkiD,GAAA,CAAEiE,oBAAqBnmD,GACvC,CAEcgoD,sBAAsBr3C,GAA0D,OAAAmkC,QAAAztD,KAAA,MAAA,YACtFwmC,IAMA08B,EANA18B,EAAyBg6B,KAE7B,IAAKh6B,EACM,OAAA,KAIP,GAAE,SAAUA,EAoBiBA,EAAAA,MApBQ,CACrC,MAIMpd,EAJcizC,SACVr8D,KAAKkrB,YACX0vC,GAASG,0BAEkBnzC,MAC3BC,GAAQA,EAAKhL,KAAK4U,gBAAkBnI,EAAOkF,OAAOy0C,QAAQxxC,gBAG9D,IAAKrI,EACD,MAAM,IAAI2mB,GACN,mCAAmCzmB,EAAOkF,OAAOy0C,mBAI5BC,EAAAvS,iCACtBvnC,GACAod,EACP,CAKG,OAAA08B,CACX,GAAA,CAEcF,iBAAiB15C,GAA+B,OAAAmkC,QAAAztD,KAAA,MAAA,YAC1D,MAAM2+D,QAA2B3+D,KAAK2gE,sBAAsBr3C,GAExDq1C,GACA3+D,KAAKopB,WAAau1C,EACb3+D,KAAA8hE,kBAAkBd,cAAcrC,IAEhC3+D,KAAAopB,WAAappB,KAAK8hE,kBAAkBZ,eAEjD,GAAA,CAEQS,oBAAoBD,GACxB,IAAKA,IAAWnyC,SAASgxC,eAAemB,GAAS,CACpCA,EAAA,iBACH,MAAAyB,EAAc5zC,SAASyP,cAAc,OAC3CmkC,EAAY9+C,GAAKq9C,EACRnyC,SAAApN,KAAKwiB,YAAYw+B,EAC9B,CAEO,OAAAzB,CACX,CAEQQ,qBAAqBpH,GACzB,GAAoB,MAAhBA,IAICvrC,SAASgxC,eAAezF,GACnB,MAAA,IAAI/qB,GAAkB,GAAG+qB,uCAEvC,CAEQiI,uCACJrmD,aAEA,MAAM0mD,EAAyD,CAC3D,SACA,UACA,SAGJ,IAAI9U,EAA4D8U,GAE5D,OAAA/gD,EAAAriB,KAAKmiE,2BAAL9/C,EAAAA,EAA2BisC,gBACkB,SAA7C,OAAA5rC,EAAK1iB,KAAAmiE,2BAAsB,EAAAz/C,EAAA4rC,iBAE3BA,EAAgBtuD,KAAKmiE,qBAAqB7T,sBAG1C5xC,WAAS4xC,iBAEWA,EADU,QAA1B5xC,EAAQ4xC,cACQ8U,EAEA1mD,EAAQ4xC,eAI5B,IAAAwU,EAA8C,CAAC,UAgB5C,OAfH,OAAA/L,EAAA/2D,KAAKmiE,2BAAL,EAAApL,EAA2B+L,UAEdA,EAD4B,QAArC9iE,KAAKmiE,qBAAqBW,OACjBM,EAEApjE,KAAKmiE,qBAAqBW,eAGvCpmD,WAASomD,UAEIA,EADU,QAAnBpmD,EAAQomD,OACCM,EAEA1mD,EAAQomD,QAIlB,CACHxU,cAAAA,EACAwU,SACA1yB,sBAAgB1zB,WAAS0zB,iBAAkB,OAEnD"}