@tonconnect/sdk 0.0.39 → 0.0.40
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-sdk.min.js","mappings":"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","sources":["webpack://TonConnectSDK/./src/errors/dapp/dapp-metadata.error.ts","webpack://TonConnectSDK/./src/errors/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-content-error.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-not-found.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/user-rejects.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/index.ts","webpack://TonConnectSDK/./src/errors/protocol/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/bad-request.error.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/unknown-app.error.ts","webpack://TonConnectSDK/./src/errors/storage/index.ts","webpack://TonConnectSDK/./src/errors/storage/localstorage-not-found.error.ts","webpack://TonConnectSDK/./src/errors/ton-connect.error.ts","webpack://TonConnectSDK/./src/errors/unknown.error.ts","webpack://TonConnectSDK/./src/errors/wallet/index.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-already-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-injected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-support-feature.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/fetch-wallets.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/index.ts","webpack://TonConnectSDK/./src/index.ts","webpack://TonConnectSDK/./src/models/index.ts","webpack://TonConnectSDK/./src/models/methods/index.ts","webpack://TonConnectSDK/./src/models/wallet/index.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-connection-source.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-info.ts","webpack://TonConnectSDK/./src/parsers/connect-errors-parser.ts","webpack://TonConnectSDK/./src/parsers/rpc-parser.ts","webpack://TonConnectSDK/./src/parsers/send-transaction-parser.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-gateway.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-provider.ts","webpack://TonConnectSDK/./src/provider/injected/injected-provider.ts","webpack://TonConnectSDK/./src/storage/bridge-connection-storage.ts","webpack://TonConnectSDK/./src/storage/default-storage.ts","webpack://TonConnectSDK/./src/storage/http-bridge-gateway-storage.ts","webpack://TonConnectSDK/./src/ton-connect.ts","webpack://TonConnectSDK/./src/utils/url.ts","webpack://TonConnectSDK/./src/utils/web-api.ts","webpack://TonConnectSDK/./src/wallets-list-manager.ts","webpack://TonConnectSDK/../../node_modules/tweetnacl-util/nacl-util.js","webpack://TonConnectSDK/../../node_modules/tweetnacl/nacl-fast.js","webpack://TonConnectSDK/../protocol/lib/crypto/index.js","webpack://TonConnectSDK/../protocol/lib/crypto/session-crypto.js","webpack://TonConnectSDK/../protocol/lib/index.js","webpack://TonConnectSDK/../protocol/lib/models/CHAIN.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/connect-request/index.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/index.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/request/index.js","webpack://TonConnectSDK/../protocol/lib/models/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-event/connect-event.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-event/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-response/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-response/send-transaction-rpc-response.js","webpack://TonConnectSDK/../protocol/lib/utils/base64.js","webpack://TonConnectSDK/../protocol/lib/utils/binary.js","webpack://TonConnectSDK/../protocol/lib/utils/index.js","webpack://TonConnectSDK/../protocol/lib/utils/web-api.js","webpack://TonConnectSDK/webpack/bootstrap","webpack://TonConnectSDK/webpack/startup"],"sourcesContent":["import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n","export * from './protocol';\nexport * from './wallet';\nexport * from './storage';\nexport * from './wallets-manager';\nexport { TonConnectError } from './ton-connect.error';\nexport { UnknownError } from './unknown.error';\n","export { UserRejectsError } from 'src/errors/protocol/events/connect/user-rejects.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed manifest contains errors.\n */\nexport class ManifestContentErrorError extends TonConnectError {\n private static additionalMessage =\n '\\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\n constructor(message?: string) {\n super(message || '' + ManifestContentErrorError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nexport class ManifestNotFoundError extends TonConnectError {\n private static additionalMessage =\n '\\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\n constructor(message?: string) {\n super(message || '' + ManifestNotFoundError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n","export * from './connect';\n","export * from './events';\nexport * from './responses';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n","export { BadRequestError } from './bad-request.error';\nexport { UnknownAppError } from './unknown-app.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\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: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n","export { LocalstorageNotFoundError } from './localstorage-not-found.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\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: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\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 */\nexport class TonConnectError extends Error {\n private static prefix = '[TON_CONNECT_SDK_ERROR]';\n\n constructor(message?: string, options?: ErrorOptions) {\n if (message) {\n message = TonConnectError.prefix + ' ' + message;\n }\n super(message, options);\n\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n","export { WalletAlreadyConnectedError } from './wallet-already-connected.error';\nexport { WalletNotConnectedError } from './wallet-not-connected.error';\nexport { WalletNotInjectedError } from './wallet-not-injected.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\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 */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\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: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\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: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nexport class WalletNotSupportFeatureError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n","export { FetchWalletsError } from './fetch-wallets.error';\n","export * from './ton-connect';\nexport * from './models';\nexport * from './errors';\nexport { IStorage } from './storage/models/storage.interface';\nexport { TonConnect as default } from './ton-connect';\nexport { ITonConnect } from './ton-connect.interface';\nexport { CHAIN, DeviceInfo } from '@tonconnect/protocol';\n","export * from './wallet';\nexport * from './methods';\nexport { DappMetadata } from './dapp/dapp-metadata';\nexport { TonConnectOptions } from './ton-connect-options';\n","export * from './connect';\nexport * from './send-transaction';\n","export type { Account } from './account';\nexport type { Wallet } from './wallet';\nexport type {\n WalletConnectionSource,\n WalletConnectionSourceHTTP,\n WalletConnectionSourceJS\n} from './wallet-connection-source';\nexport {\n WalletInfo,\n WalletInfoInjected,\n WalletInfoRemote,\n isWalletInfoInjected\n} from './wallet-info';\n","export type WalletConnectionSource = WalletConnectionSourceHTTP | WalletConnectionSourceJS;\n\nexport interface WalletConnectionSourceHTTP {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletConnectionSourceJS {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n}\n\nexport function isWalletConnectionSourceJS(\n value: WalletConnectionSource\n): value is WalletConnectionSourceJS {\n return 'jsBridgeKey' in value;\n}\n","export interface WalletInfoBase {\n /**\n * Name of the wallet.\n */\n name: string;\n\n /**\n * Url to the icon of the wallet. Resolution 288×288px. On non-transparent background, without rounded corners. PNG format.\n */\n imageUrl: string;\n\n /**\n * Will be used in the protocol later.\n */\n tondns?: string;\n\n /**\n * Info or landing page of your wallet. May be useful for TON newcomers.\n */\n aboutUrl: string;\n}\n\nexport interface WalletInfoRemote extends WalletInfoBase {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletInfoInjected extends WalletInfoBase {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n\n /**\n * Indicates if the wallet currently is injected to the webpage.\n */\n injected: boolean;\n\n /**\n * Indicates if the dapp is opened inside this wallet's browser.\n */\n embedded: boolean;\n}\n\nexport type WalletInfo =\n | WalletInfoRemote\n | WalletInfoInjected\n | (WalletInfoRemote & WalletInfoInjected);\n\nexport interface WalletInfoDTOBase {\n name: string;\n image: string;\n tondns?: string;\n about_url: string;\n}\n\nexport interface WalletInfoRemoteDTO extends WalletInfoDTOBase {\n universal_url: string;\n bridge_url: string;\n}\n\nexport interface WalletInfoInjectedDTO extends WalletInfoDTOBase {\n js_bridge_key: string;\n}\n\nexport type WalletInfoDTO =\n | WalletInfoRemoteDTO\n | WalletInfoInjectedDTO\n | (WalletInfoRemoteDTO & WalletInfoInjectedDTO);\n\nexport function isWalletInfoInjected(value: WalletInfo): value is WalletInfoInjected {\n return 'jsBridgeKey' in value;\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { CONNECT_EVENT_ERROR_CODES, ConnectEventError } from '@tonconnect/protocol';\n\nconst connectEventErrorsCodes: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> =\n {\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 };\n\nclass ConnectErrorsParser {\n parseError(error: ConnectEventError['payload']): TonConnectError {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n\n return new ErrorConstructor(error.message);\n }\n}\n\nexport const connectErrorsParser = new ConnectErrorsParser();\n","import {\n AppRequest,\n RpcMethod,\n WalletResponse,\n WalletResponseError,\n WalletResponseSuccess\n} from '@tonconnect/protocol';\nimport { WithoutId } from 'src/utils/types';\n\nexport abstract class RpcParser<T extends RpcMethod> {\n abstract convertToRpcRequest(...args: unknown[]): WithoutId<AppRequest<T>>;\n\n abstract convertFromRpcResponse(rpcResponse: WithoutId<WalletResponseSuccess<T>>): unknown;\n\n abstract parseAndThrowError(response: WithoutId<WalletResponseError<T>>): never;\n\n public isError(\n response: WithoutId<WalletResponse<T>>\n ): response is WithoutId<WalletResponseError<T>> {\n return 'error' in response;\n }\n}\n","import {\n CONNECT_EVENT_ERROR_CODES,\n SEND_TRANSACTION_ERROR_CODES,\n SendTransactionRpcRequest,\n SendTransactionRpcResponseError,\n SendTransactionRpcResponseSuccess\n} from '@tonconnect/protocol';\nimport { BadRequestError, TonConnectError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { RpcParser } from 'src/parsers/rpc-parser';\nimport { WithoutId } from 'src/utils/types';\n\nconst sendTransactionErrors: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> = {\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};\n\nclass SendTransactionParser extends RpcParser<'sendTransaction'> {\n convertToRpcRequest(\n request: Omit<SendTransactionRequest, 'validUntil'> & { valid_until: number }\n ): WithoutId<SendTransactionRpcRequest> {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n\n parseAndThrowError(response: WithoutId<SendTransactionRpcResponseError>): never {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n\n throw new ErrorConstructor(response.error.message);\n }\n\n convertFromRpcResponse(\n rpcResponse: WithoutId<SendTransactionRpcResponseSuccess>\n ): SendTransactionResponse {\n return {\n boc: rpcResponse.result\n };\n }\n}\n\nexport const sendTransactionParser = new SendTransactionParser();\n","import { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { HttpBridgeGatewayStorage } from 'src/storage/http-bridge-gateway-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { addPathToUrl } from 'src/utils/url';\n\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n } catch (err) {\n console.error(err);\n }\n}\n\nexport class BridgeGateway {\n private readonly ssePath = 'events';\n\n private readonly postPath = 'message';\n\n private readonly defaultTtl = 300;\n\n private eventSource: EventSource | undefined;\n\n private isClosed = false;\n\n private readonly bridgeGatewayStorage: HttpBridgeGatewayStorage;\n\n constructor(\n storage: IStorage,\n private readonly bridgeUrl: string,\n public readonly sessionId: string,\n private readonly listener: (msg: BridgeIncomingMessage) => void,\n private readonly errorsListener: (err: Event) => void\n ) {\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n\n public async registerSession(): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n\n const lastEventId = await this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n\n this.eventSource = new EventSource(url.toString());\n\n return new Promise((resolve, reject) => {\n this.eventSource!.onerror = reject;\n this.eventSource!.onopen! = (): void => {\n this.eventSource!.onerror = this.errorsHandler.bind(this);\n this.eventSource!.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n }\n\n public async send(message: Uint8Array, receiver: string, ttl?: number): Promise<void> {\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 await fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n }\n\n public close(): void {\n this.isClosed = true;\n this.eventSource?.close();\n }\n\n private errorsHandler(e: Event): void {\n if (!this.isClosed) {\n this.errorsListener(e);\n }\n }\n\n private async messagesHandler(e: MessageEvent<string>): Promise<void> {\n await this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n\n if (!this.isClosed) {\n let bridgeIncomingMessage: BridgeIncomingMessage;\n\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n } catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n\n this.listener(bridgeIncomingMessage);\n }\n }\n}\n","import {\n Base64,\n SessionCrypto,\n AppRequest,\n ConnectRequest,\n RpcMethod,\n WalletEvent,\n WalletResponse,\n WalletMessage,\n hexToByteArray,\n ConnectEventSuccess,\n TonAddressItemReply\n} from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletConnectionSourceHTTP } from 'src/models/wallet/wallet-connection-source';\nimport { BridgeGateway } from 'src/provider/bridge/bridge-gateway';\nimport { BridgeConnectionHttp } from 'src/provider/bridge/models/bridge-connection';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { BridgePartialSession, BridgeSession } from 'src/provider/bridge/models/bridge-session';\nimport { HTTPProvider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport * as protocol from 'src/resources/protocol.json';\n\nexport class BridgeProvider implements HTTPProvider {\n public static async fromStorage(storage: IStorage): Promise<BridgeProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n }\n\n public readonly type = 'http';\n\n private readonly connectionStorage: BridgeConnectionStorage;\n\n private readonly pendingRequests = new Map<\n string,\n (response: WithoutId<WalletResponse<RpcMethod>>) => void\n >();\n\n private nextRequestId = 0;\n\n private session: BridgeSession | BridgePartialSession | null = null;\n\n private bridge: BridgeGateway | null = null;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(\n private readonly storage: IStorage,\n private readonly walletConnectionSource: WalletConnectionSourceHTTP\n ) {\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n\n public connect(message: ConnectRequest): string {\n this.bridge?.close();\n const sessionCrypto = new SessionCrypto();\n\n this.session = {\n sessionCrypto,\n walletConnectionSource: this.walletConnectionSource\n };\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n this.bridge.registerSession();\n\n return this.generateUniversalLink(message);\n }\n\n public async restoreConnection(): Promise<void> {\n this.bridge?.close();\n const storedConnection = await this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n\n this.session = storedConnection.session;\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n storedConnection.session.sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n\n await this.bridge.registerSession();\n\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n }\n\n public sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\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\n const encodedRequest = this.session!.sessionCrypto.encrypt(\n JSON.stringify({ ...request, id }),\n hexToByteArray(this.session.walletPublicKey)\n );\n\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n\n public closeConnection(): void {\n this.bridge?.close();\n this.listeners = [];\n }\n\n public disconnect(): Promise<void> {\n this.bridge?.close();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n\n public listen(callback: (e: WalletEvent) => void): () => void {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n\n private async gatewayListener(bridgeIncomingMessage: BridgeIncomingMessage): Promise<void> {\n const walletMessage: WalletMessage = JSON.parse(\n this.session!.sessionCrypto.decrypt(\n Base64.decode(bridgeIncomingMessage.message).toUint8Array(),\n hexToByteArray(bridgeIncomingMessage.from)\n )\n );\n\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\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n\n if (walletMessage.event === 'connect') {\n await this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n\n if (walletMessage.event === 'disconnect') {\n await this.removeBridgeAndSession();\n }\n\n this.listeners.forEach(listener => listener(walletMessage));\n }\n\n private async gatewayErrorsListener(e: Event): Promise<void> {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n }\n\n private async updateSession(\n connectEvent: ConnectEventSuccess,\n walletPublicKey: string\n ): Promise<void> {\n this.session = {\n ...this.session!,\n walletPublicKey\n };\n\n const tonAddrItem: TonAddressItemReply = connectEvent.payload.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply;\n\n const connectEventToSave: BridgeConnectionHttp['connectEvent'] = {\n ...connectEvent,\n payload: {\n ...connectEvent.payload,\n items: [tonAddrItem]\n }\n };\n\n await this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n }\n\n private async removeBridgeAndSession(): Promise<void> {\n this.session = null;\n this.bridge = null;\n await this.connectionStorage.removeConnection();\n }\n\n private generateUniversalLink(message: ConnectRequest): string {\n const url = new URL(this.walletConnectionSource.universalLink);\n url.searchParams.append('v', protocol.version.toString());\n url.searchParams.append('id', this.session!.sessionCrypto.sessionId);\n url.searchParams.append('r', Base64.encode(JSON.stringify(message), true));\n return url.toString();\n }\n}\n","import { WalletNotInjectedError } from 'src/errors/wallet/wallet-not-injected.error';\nimport {\n AppRequest,\n RpcMethod,\n WalletResponse,\n ConnectRequest,\n WalletEvent,\n ConnectEvent\n} from '@tonconnect/protocol';\nimport { InjectedWalletApi } from 'src/provider/injected/models/injected-wallet-api';\nimport { InternalProvider } from 'src/provider/provider';\nimport * as protocol from 'src/resources/protocol.json';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport { getWindow } from 'src/utils/web-api';\n\ntype WindowWithTon<T extends string> = {\n [key in T]: {\n tonconnect: InjectedWalletApi;\n };\n} & Window;\n\nexport class InjectedProvider<T extends string = string> implements InternalProvider {\n private static window = getWindow();\n\n public static async fromStorage(storage: IStorage): Promise<InjectedProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(connection.jsBridgeKey);\n }\n\n public static isWalletInjected(injectedWalletKey: string): boolean {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n\n public static isInsideWalletBrowser(injectedWalletKey: string): boolean {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey]!.tonconnect.isWalletBrowser;\n }\n\n return false;\n }\n\n private static isWindowContainsWallet<T extends string>(\n window: Window | undefined,\n injectedWalletKey: string\n ): window is WindowWithTon<T> {\n return (\n !!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey as keyof Window] === 'object' &&\n 'tonconnect' in window[injectedWalletKey as keyof Window]\n );\n }\n\n public readonly type = 'injected';\n\n private unsubscribeCallback: (() => void) | null = null;\n\n private injectedWallet: InjectedWalletApi;\n\n private listenSubscriptions = false;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(injectedWalletKey: T) {\n const window: Window | undefined | WindowWithTon<T> = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n\n this.injectedWallet = window[injectedWalletKey]!.tonconnect!;\n }\n\n public connect(message: ConnectRequest, auto = false): void {\n this.injectedWallet\n .connect(protocol.version, message, auto)\n .then(connectEvent => {\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n }\n this.listeners.forEach(listener => listener(connectEvent));\n })\n .catch(e => {\n const connectEventError: ConnectEvent = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e?.toString()\n }\n };\n\n this.listeners.forEach(listener => listener(connectEventError));\n });\n }\n\n public async restoreConnection(): Promise<void> {\n try {\n const connectEvent = await this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n this.listeners.forEach(listener => listener(connectEvent));\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n public closeConnection(): void {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n\n public disconnect(): Promise<void> {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return Promise.resolve();\n }\n\n private closeAllListeners(): void {\n this.listenSubscriptions = false;\n this.listeners = [];\n this.unsubscribeCallback?.();\n }\n\n public listen(eventsCallback: (e: WalletEvent) => void): () => void {\n this.listeners.push(eventsCallback);\n return () =>\n (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n\n public async sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return this.injectedWallet.send<T>({ ...request, id: '0' });\n }\n\n private makeSubscriptions(): void {\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n}\n","import { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeSessionRaw } from 'src/provider/bridge/models/bridge-session-raw';\nimport {\n BridgeConnection,\n BridgeConnectionHttp,\n BridgeConnectionHttpRaw,\n BridgeConnectionInjected,\n BridgeConnectionRaw\n} from 'src/provider/bridge/models/bridge-connection';\nimport { IStorage } from 'src/storage/models/storage.interface';\n\nexport class BridgeConnectionStorage {\n private readonly storeKey = 'ton-connect-storage_bridge-connection';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeConnection(connection: BridgeConnection): Promise<void> {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n\n const rawSession: BridgeSessionRaw = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n\n const rawConnection: BridgeConnectionHttpRaw = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n }\n\n public async removeConnection(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getConnection(): Promise<BridgeConnection | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n const connection: BridgeConnectionRaw = JSON.parse(stored);\n\n if (connection.type === 'injected') {\n return connection;\n }\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 public async getHttpConnection(): Promise<BridgeConnectionHttp> {\n const connection = await this.getConnection();\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while nothing is stored'\n );\n }\n\n if (connection.type === 'injected') {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while injected connection is stored'\n );\n }\n\n return connection;\n }\n\n public async getInjectedConnection(): Promise<BridgeConnectionInjected> {\n const connection = await this.getConnection();\n\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while nothing is stored'\n );\n }\n\n if (connection?.type === 'http') {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while HTTP connection is stored'\n );\n }\n\n return connection;\n }\n\n public async storedConnectionType(): Promise<BridgeConnection['type'] | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection: BridgeConnection = JSON.parse(stored);\n return connection.type;\n }\n}\n","import { LocalstorageNotFoundError } from 'src/errors/storage/localstorage-not-found.error';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { getWindow } from 'src/utils/web-api';\n\nexport class DefaultStorage implements IStorage {\n private readonly window: Window;\n\n constructor() {\n const window = getWindow();\n\n if (!window?.localStorage) {\n throw new LocalstorageNotFoundError();\n }\n\n this.window = window;\n }\n\n public async getItem(key: string): Promise<string | null> {\n return Promise.resolve(this.window.localStorage.getItem(key));\n }\n\n public async removeItem(key: string): Promise<void> {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n }\n\n setItem(key: string, value: string): Promise<void> {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n","import { IStorage } from 'src/storage/models/storage.interface';\n\nexport class HttpBridgeGatewayStorage {\n private readonly storeKey = 'ton-connect-storage_http-bridge-gateway';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeLastEventId(lastEventId: string): Promise<void> {\n return this.storage.setItem(this.storeKey, lastEventId);\n }\n\n public async removeLastEventId(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getLastEventId(): Promise<string | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n return stored;\n }\n}\n","import {\n ConnectEventError,\n ConnectEventSuccess,\n ConnectRequest,\n SendTransactionRpcResponseSuccess,\n TonAddressItemReply,\n WalletEvent,\n TonProofItemReply,\n ConnectItem,\n Feature\n} from '@tonconnect/protocol';\nimport { DappMetadataError } from 'src/errors/dapp/dapp-metadata.error';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletAlreadyConnectedError } from 'src/errors/wallet/wallet-already-connected.error';\nimport { WalletNotConnectedError } from 'src/errors/wallet/wallet-not-connected.error';\nimport { WalletNotSupportFeatureError } from 'src/errors/wallet/wallet-not-support-feature.error';\nimport { Account, Wallet, WalletConnectionSource, WalletInfo } from 'src/models';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { ConnectAdditionalRequest } from 'src/models/methods/connect/connect-additional-request';\nimport { TonConnectOptions } from 'src/models/ton-connect-options';\nimport {\n isWalletConnectionSourceJS,\n WalletConnectionSourceJS\n} from 'src/models/wallet/wallet-connection-source';\nimport { connectErrorsParser } from 'src/parsers/connect-errors-parser';\nimport { sendTransactionParser } from 'src/parsers/send-transaction-parser';\nimport { BridgeProvider } from 'src/provider/bridge/bridge-provider';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\nimport { Provider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { DefaultStorage } from 'src/storage/default-storage';\nimport { ITonConnect } from 'src/ton-connect.interface';\nimport { getWebPageManifest } from 'src/utils/web-api';\nimport { WalletsListManager } from 'src/wallets-list-manager';\n\nexport class TonConnect implements ITonConnect {\n private readonly walletsList = new WalletsListManager();\n\n private readonly dappSettings: Required<TonConnectOptions>;\n\n private readonly bridgeConnectionStorage: BridgeConnectionStorage;\n\n private _wallet: Wallet | null = null;\n\n private provider: Provider | null = null;\n\n private statusChangeSubscriptions: ((walletInfo: Wallet | null) => void)[] = [];\n\n private statusChangeErrorSubscriptions: ((err: TonConnectError) => void)[] = [];\n\n /**\n * Shows if the wallet is connected right now.\n */\n public get connected(): boolean {\n return this._wallet !== null;\n }\n\n /**\n * Current connected account or null if no account is connected.\n */\n public get account(): Account | null {\n return this._wallet?.account || null;\n }\n\n /**\n * Current connected wallet or null if no account is connected.\n */\n public get wallet(): Wallet | null {\n return this._wallet;\n }\n\n private set wallet(value: Wallet | null) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n\n constructor(options?: TonConnectOptions) {\n this.dappSettings = {\n manifestUrl: options?.manifestUrl || getWebPageManifest(),\n storage: options?.storage || new DefaultStorage()\n };\n\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError(\n '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 }\n\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n\n /**\n * Returns available wallets list.\n */\n public getWallets(): Promise<WalletInfo[]> {\n return this.walletsList.getWallets();\n }\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 public onStatusChange(\n callback: (wallet: Wallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): () => void {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(\n item => item !== callback\n );\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(\n item => item !== errorsHandler\n );\n }\n };\n }\n\n /**\n * Generates universal link for an external wallet and subscribes to the wallet's bridge, or sends connect request to the injected wallet.\n * @param wallet wallet's bridge url and universal link for an external wallet or jsBridge key for the injected wallet.\n * @param request (optional) additional request to pass to the wallet while connect (currently only ton_proof is available).\n * @returns universal link if external wallet was passed or void for the injected wallet.\n */\n public connect<T extends WalletConnectionSource>(\n wallet: T,\n request?: ConnectAdditionalRequest\n ): T extends WalletConnectionSourceJS ? void : string;\n public connect(\n wallet: WalletConnectionSource,\n request?: ConnectAdditionalRequest\n ): void | string {\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n\n this.provider?.closeConnection();\n this.provider = this.createProvider(wallet);\n\n return this.provider.connect(this.createConnectRequest(request));\n }\n\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n public async restoreConnection(): Promise<void> {\n const [bridgeConnectionType, embeddedWallet] = await Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = await BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = await InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = await this.createProvider(embeddedWallet);\n } else {\n return;\n }\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 public async sendTransaction(\n transaction: SendTransactionRequest\n ): Promise<SendTransactionResponse> {\n this.checkConnection();\n this.checkFeatureSupport('SendTransaction');\n\n const { validUntil, ...tx } = transaction;\n const response = await this.provider!.sendRequest(\n sendTransactionParser.convertToRpcRequest({ ...tx, valid_until: validUntil })\n );\n\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n\n return sendTransactionParser.convertFromRpcResponse(\n response as SendTransactionRpcResponseSuccess\n );\n }\n\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n public async disconnect(): Promise<void> {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n await this.provider!.disconnect();\n this.onWalletDisconnected();\n }\n\n private createProvider(wallet: WalletConnectionSource): Provider {\n let provider: Provider;\n\n if (isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(wallet.jsBridgeKey);\n } else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n\n private walletEventsListener(e: WalletEvent): void {\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\n private onWalletConnected(connectEvent: ConnectEventSuccess['payload']): void {\n const tonAccountItem: TonAddressItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply | undefined;\n\n const tonProofItem: TonProofItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_proof'\n ) as TonProofItemReply | undefined;\n\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n\n const wallet: 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\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n\n this.wallet = wallet;\n }\n\n private onWalletConnectError(connectEventError: ConnectEventError['payload']): void {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n\n private onWalletDisconnected(): void {\n this.wallet = null;\n }\n\n private checkConnection(): void | never {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n\n private checkFeatureSupport(feature: Feature): void | never {\n if (!this.wallet?.device.features.includes(feature)) {\n throw new WalletNotSupportFeatureError();\n }\n }\n\n private createConnectRequest(request?: ConnectAdditionalRequest): ConnectRequest {\n const items: ConnectItem[] = [\n {\n name: 'ton_addr'\n }\n ];\n\n if (request) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\n","export function removeUrlLastSlash(url: string): string {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n\n return url;\n}\n\nexport function addPathToUrl(url: string, path: string): string {\n return removeUrlLastSlash(url) + '/' + path;\n}\n","export function getWindow(): Window | undefined {\n if (typeof window === 'undefined') {\n return undefined;\n }\n\n return window;\n}\n\nexport function getDocument(): Document | undefined {\n if (typeof document === 'undefined') {\n return undefined;\n }\n\n return document;\n}\n\nexport function getWebPageManifest(): string {\n const origin = getWindow()?.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n\n return '';\n}\n","import { FetchWalletsError } from 'src/errors/wallets-manager/fetch-wallets.error';\nimport {\n WalletInfoRemote,\n WalletInfoInjected,\n WalletInfo,\n WalletInfoDTO,\n isWalletInfoInjected\n} from 'src/models/wallet/wallet-info';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\n\nexport class WalletsListManager {\n private walletsListCache: Promise<WalletInfo[]> | null = null;\n\n private readonly walletsListSource =\n 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n\n public async getWallets(): Promise<WalletInfo[]> {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n\n return this.walletsListCache;\n }\n\n public async getEmbeddedWallet(): Promise<WalletInfoInjected | null> {\n const walletsList = await this.getWallets();\n const injectedWallets = walletsList.filter(isWalletInfoInjected);\n\n if (injectedWallets.length !== 1) {\n return null;\n }\n\n return injectedWallets[0]!.embedded ? injectedWallets[0]! : null;\n }\n\n private async fetchWalletsList(): Promise<WalletInfo[]> {\n try {\n const walletsResponse = await fetch(this.walletsListSource);\n const walletsList: WalletInfoDTO[] = await walletsResponse.json();\n\n if (\n !Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))\n ) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n } catch (e) {\n throw new FetchWalletsError(e);\n }\n }\n\n private walletConfigDTOListToWalletConfigList(walletConfigDTO: WalletInfoDTO[]): WalletInfo[] {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig: WalletInfo = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n } as WalletInfo;\n\n if ('bridge_url' in walletConfigDTO) {\n (walletConfig as WalletInfoRemote).bridgeUrl = walletConfigDTO.bridge_url;\n (walletConfig as WalletInfoRemote).universalLink = walletConfigDTO.universal_url;\n }\n\n if ('js_bridge_key' in walletConfigDTO) {\n const jsBridgeKey = walletConfigDTO.js_bridge_key;\n (walletConfig as WalletInfoInjected).jsBridgeKey = jsBridgeKey;\n (walletConfig as WalletInfoInjected).injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n (walletConfig as WalletInfoInjected).embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n\n return walletConfig;\n });\n }\n\n private isCorrectWalletConfigDTO(value: unknown): value is WalletInfoDTO {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n\n const containsUniversalUrl = 'universal_url' in value;\n const containsHttpBridge = 'bridge_url' in value;\n const containsJsBridge = 'js_bridge_key' in value;\n\n return (containsHttpBridge && containsUniversalUrl) || containsJsBridge;\n }\n}\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","(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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nvar session_crypto_1 = require(\"./session-crypto\");\nObject.defineProperty(exports, \"SessionCrypto\", { enumerable: true, get: function () { return session_crypto_1.SessionCrypto; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nconst utils_1 = require(\"../utils\");\nconst tweetnacl_1 = __importDefault(require(\"tweetnacl\"));\nif ((0, utils_1.isNode)()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nclass SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = (0, utils_1.toHexString)(this.keyPair.publicKey);\n }\n createKeypair() {\n return tweetnacl_1.default.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: (0, utils_1.hexToByteArray)(keyPair.publicKey),\n secretKey: (0, utils_1.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 = tweetnacl_1.default.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return (0, utils_1.concatUint8Arrays)(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = (0, utils_1.splitToUint8Arrays)(message, this.nonceLength);\n const decrypted = tweetnacl_1.default.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error('Decryption error');\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: (0, utils_1.toHexString)(this.keyPair.publicKey),\n secretKey: (0, utils_1.toHexString)(this.keyPair.secretKey)\n };\n }\n}\nexports.SessionCrypto = SessionCrypto;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./crypto\"), exports);\n__exportStar(require(\"./utils\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\nvar CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN = exports.CHAIN || (exports.CHAIN = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./request\"), exports);\n__exportStar(require(\"./connect-request\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\n__exportStar(require(\"./app-message\"), exports);\n__exportStar(require(\"./wallet-message\"), exports);\nvar CHAIN_1 = require(\"./CHAIN\");\nObject.defineProperty(exports, \"CHAIN\", { enumerable: true, get: function () { return CHAIN_1.CHAIN; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./wallet-event\"), exports);\n__exportStar(require(\"./wallet-response\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_ITEM_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES = void 0;\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 = exports.CONNECT_EVENT_ERROR_CODES || (exports.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 = exports.CONNECT_ITEM_ERROR_CODES || (exports.CONNECT_ITEM_ERROR_CODES = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar connect_event_1 = require(\"./connect-event\");\nObject.defineProperty(exports, \"CONNECT_EVENT_ERROR_CODES\", { enumerable: true, get: function () { return connect_event_1.CONNECT_EVENT_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar send_transaction_rpc_response_1 = require(\"./send-transaction-rpc-response\");\nObject.defineProperty(exports, \"SEND_TRANSACTION_ERROR_CODES\", { enumerable: true, get: function () { return send_transaction_rpc_response_1.SEND_TRANSACTION_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\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 = exports.SEND_TRANSACTION_ERROR_CODES || (exports.SEND_TRANSACTION_ERROR_CODES = {}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base64 = void 0;\nconst tweetnacl_util_1 = __importDefault(require(\"tweetnacl-util\"));\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = tweetnacl_util_1.default.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 tweetnacl_util_1.default.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 = tweetnacl_util_1.default.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 tweetnacl_util_1.default.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(tweetnacl_util_1.default.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexports.Base64 = {\n encode,\n decode\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = void 0;\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}\nexports.concatUint8Arrays = concatUint8Arrays;\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}\nexports.splitToUint8Arrays = splitToUint8Arrays;\nfunction toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexports.toHexString = toHexString;\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}\nexports.hexToByteArray = hexToByteArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = exports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = exports.Base64 = void 0;\nvar base64_1 = require(\"./base64\");\nObject.defineProperty(exports, \"Base64\", { enumerable: true, get: function () { return base64_1.Base64; } });\nvar binary_1 = require(\"./binary\");\nObject.defineProperty(exports, \"concatUint8Arrays\", { enumerable: true, get: function () { return binary_1.concatUint8Arrays; } });\nObject.defineProperty(exports, \"splitToUint8Arrays\", { enumerable: true, get: function () { return binary_1.splitToUint8Arrays; } });\nObject.defineProperty(exports, \"toHexString\", { enumerable: true, get: function () { return binary_1.toHexString; } });\nObject.defineProperty(exports, \"hexToByteArray\", { enumerable: true, get: function () { return binary_1.hexToByteArray; } });\nvar web_api_1 = require(\"./web-api\");\nObject.defineProperty(exports, \"isNode\", { enumerable: true, get: function () { return web_api_1.isNode; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = void 0;\nfunction isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\nexports.isNode = isNode;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4027);\n"],"names":["DappMetadataError","TonConnectError","constructor","args","super","Object","setPrototypeOf","this","prototype","UnknownError","UserRejectsError","ManifestContentErrorError","message","additionalMessage","ManifestNotFoundError","BadRequestError","UnknownAppError","LocalstorageNotFoundError","Error","options","prefix","WalletAlreadyConnectedError","WalletNotConnectedError","WalletNotInjectedError","WalletNotSupportFeatureError","FetchWalletsError","TonConnect","CHAIN","isWalletInfoInjected","value","connectEventErrorsCodes","CONNECT_EVENT_ERROR_CODES","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","MANIFEST_NOT_FOUND_ERROR","MANIFEST_CONTENT_ERROR","connectErrorsParser","parseError","error","ErrorConstructor","code","isError","response","sendTransactionErrors","SEND_TRANSACTION_ERROR_CODES","SendTransactionParser","RpcParser","convertToRpcRequest","request","method","params","JSON","stringify","parseAndThrowError","convertFromRpcResponse","rpcResponse","boc","result","sendTransactionParser","isNode","eval","err","console","BridgeGateway","storage","bridgeUrl","sessionId","listener","errorsListener","ssePath","postPath","defaultTtl","isClosed","bridgeGatewayStorage","HttpBridgeGatewayStorage","registerSession","url","URL","addPathToUrl","searchParams","append","lastEventId","getLastEventId","eventSource","EventSource","toString","Promise","resolve","reject","onerror","onopen","errorsHandler","bind","onmessage","messagesHandler","send","receiver","ttl","fetch","body","Base64","encode","close","e","storeLastEventId","bridgeIncomingMessage","parse","data","BridgeProvider","walletConnectionSource","type","pendingRequests","Map","nextRequestId","session","bridge","listeners","connectionStorage","BridgeConnectionStorage","static","bridgeConnectionStorage","connection","getHttpConnection","connect","sessionCrypto","SessionCrypto","gatewayListener","gatewayErrorsListener","generateUniversalLink","restoreConnection","storedConnection","forEach","connectEvent","sendRequest","id","encodedRequest","encrypt","hexToByteArray","walletPublicKey","catch","set","closeConnection","disconnect","removeBridgeAndSession","listen","callback","push","filter","walletMessage","decrypt","decode","toUint8Array","from","get","delete","event","updateSession","tonAddrItem","payload","items","find","item","name","connectEventToSave","storeConnection","removeConnection","universalLink","protocol","version","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","window","isWindowContainsWallet","injectedWallet","tonconnect","getInjectedConnection","jsBridgeKey","isWalletBrowser","auto","then","makeSubscriptions","connectEventError","closeAllListeners","eventsCallback","getWindow","storeKey","setItem","rawSession","sessionKeyPair","stringifyKeypair","rawConnection","removeItem","getConnection","stored","getItem","storedConnectionType","localStorage","key","removeLastEventId","walletsList","WalletsListManager","_wallet","provider","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","manifestUrl","getWebPageManifest","DefaultStorage","connected","account","wallet","getWallets","onStatusChange","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","all","getEmbeddedWallet","fromStorage","walletEventsListener","sendTransaction","transaction","checkConnection","checkFeatureSupport","validUntil","tx","valid_until","onWalletDisconnected","isWalletConnectionSourceJS","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","device","address","chain","network","walletStateInit","connectItems","tonProof","feature","features","includes","removeUrlLastSlash","slice","path","document","origin","location","walletsListCache","walletsListSource","fetchWalletsList","injectedWallets","length","embedded","walletsResponse","json","Array","isArray","every","isCorrectWalletConfigDTO","walletConfigDTOListToWalletConfigList","walletConfigDTO","map","walletConfig","imageUrl","image","aboutUrl","about_url","tondns","bridge_url","universal_url","js_bridge_key","injected","isWalletInjected","isInsideWalletBrowser","root","f","module","exports","nacl","util","validateBase64","s","test","TypeError","decodeUTF8","i","d","unescape","encodeURIComponent","b","Uint8Array","charCodeAt","encodeUTF8","arr","String","fromCharCode","decodeURIComponent","escape","join","atob","Buffer","encodeBase64","decodeBase64","call","len","btoa","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","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","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_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_secretbox_BOXZEROBYTES","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","defineProperty","session_crypto_1","enumerable","__importDefault","mod","__esModule","utils_1","tweetnacl_1","createKeypairFromString","createKeypair","toHexString","default","createNonce","receiverPublicKey","encodedMessage","TextEncoder","encrypted","concatUint8Arrays","senderPublicKey","internalMessage","splitToUint8Arrays","decrypted","TextDecoder","__createBinding","create","k2","undefined","desc","getOwnPropertyDescriptor","writable","configurable","__exportStar","hasOwnProperty","CHAIN_1","CONNECT_ITEM_ERROR_CODES","connect_event_1","send_transaction_rpc_response_1","tweetnacl_util_1","urlSafe","uint8Array","encoded","encodeUint8Array","decodedUint8Array","decodeToUint8Array","toObject","buffer1","buffer2","mergedArray","array","index","byteArray","hexString","byte","parseInt","base64_1","binary_1","web_api_1","process","versions","node","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"tonconnect-sdk.min.js","mappings":"yJAAA,eAKA,MAAaA,UAA0B,EAAAC,gBACnCC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMP,EAAkBQ,UAClD,EALJ,qB,ijBCLA,aACA,aACA,aACA,aACA,aAAS,iFAAAP,eAAe,IACxB,cAAS,8EAAAQ,YAAY,G,yGCLrB,cAAS,kFAAAC,gBAAgB,G,iHCAzB,eAKA,MAAaC,UAAkC,EAAAV,gBAI3CC,YAAYU,GACRR,MAAMQ,GAAW,GAAKD,EAA0BE,mBAEhDR,OAAOC,eAAeC,KAAMI,EAA0BH,UAC1D,EARJ,8BACmB,EAAAK,kBACX,+K,8GCPR,eAKA,MAAaC,UAA8B,EAAAb,gBAIvCC,YAAYU,GACRR,MAAMQ,GAAW,GAAKE,EAAsBD,mBAE5CR,OAAOC,eAAeC,KAAMO,EAAsBN,UACtD,EARJ,0BACmB,EAAAK,kBACX,uN,yGCPR,eAKA,MAAaH,UAAyB,EAAAT,gBAClCC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMG,EAAiBF,UACjD,EALJ,oB,ygBCLA,Y,ygBCAA,aACA,Y,wGCDA,eAKA,MAAaO,UAAwB,EAAAd,gBACjCC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMQ,EAAgBP,UAChD,EALJ,mB,0HCLA,cAAS,iFAAAO,eAAe,IACxB,aAAS,iFAAAC,eAAe,G,uGCDxB,eAKA,MAAaA,UAAwB,EAAAf,gBACjCC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMS,EAAgBR,UAChD,EALJ,mB,kHCLA,cAAS,2FAAAS,yBAAyB,G,kHCAlC,eAKA,MAAaA,UAAkC,EAAAhB,gBAC3CC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMU,EAA0BT,UAC1D,EALJ,6B,qGCFA,MAAaP,UAAwBiB,MAGjChB,YAAYU,EAAkBO,GACtBP,IACAA,EAAUX,EAAgBmB,OAAS,IAAMR,GAE7CR,MAAMQ,EAASO,GAEfd,OAAOC,eAAeC,KAAMN,EAAgBO,UAChD,EAVJ,oBACmB,EAAAY,OAAS,yB,qGCJ5B,eAKA,MAAaX,UAAqB,EAAAR,gBAC9BC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAME,EAAaD,UAC7C,EALJ,gB,uKCLA,cAAS,6FAAAa,2BAA2B,IACpC,cAAS,yFAAAC,uBAAuB,IAChC,cAAS,wFAAAC,sBAAsB,G,oHCF/B,eAKA,MAAaF,UAAoC,EAAApB,gBAC7CC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMc,EAA4Bb,UAC5D,EALJ,+B,gHCLA,eAKA,MAAac,UAAgC,EAAArB,gBACzCC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMe,EAAwBd,UACxD,EALJ,2B,+GCLA,eAKA,MAAae,UAA+B,EAAAtB,gBACxCC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMgB,EAAuBf,UACvD,EALJ,0B,qHCLA,eAKA,MAAagB,UAAqC,EAAAvB,gBAC9CC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMiB,EAA6BhB,UAC7D,EALJ,gC,0GCLA,eAKA,MAAaiB,UAA0B,EAAAxB,gBACnCC,eAAeC,GACXC,SAASD,GAETE,OAAOC,eAAeC,KAAMkB,EAAkBjB,UAClD,EALJ,qB,0GCLA,cAAS,mFAAAiB,iBAAiB,G,kiBCA1B,aACA,aACA,aAEA,cAAS,yEAAAC,UAAU,IAEnB,cAAS,uEAAAC,KAAK,G,ygBCNd,aACA,W,mlBCDA,YACA,Y,yLCMA,cAII,sFAAAC,oBAAoB,G,gHCUxB,sCACIC,GAEA,MAAO,gBAAiBA,CAC5B,C,2GCoDA,gCAAqCA,GACjC,MAAO,gBAAiBA,CAC5B,C,4GC/EA,gBACA,SACA,UAEA,UACA,UAEMC,EACF,CACI,CAAC,EAAAC,0BAA0BC,eAAgB,EAAAvB,aAC3C,CAAC,EAAAsB,0BAA0BE,oBAAqB,EAAAvB,iBAChD,CAAC,EAAAqB,0BAA0BG,mBAAoB,EAAAnB,gBAC/C,CAAC,EAAAgB,0BAA0BI,mBAAoB,EAAAnB,gBAC/C,CAAC,EAAAe,0BAA0BK,0BAA2B,EAAAtB,sBACtD,CAAC,EAAAiB,0BAA0BM,wBAAyB,EAAA1B,2BAe/C,EAAA2B,oBAAsB,IAZnC,MACIC,WAAWC,GACP,IAAIC,EAA2C,EAAAhC,aAM/C,OAJI+B,EAAME,QAAQZ,IACdW,EAAmBX,EAAwBU,EAAME,OAAS,EAAAjC,cAGvD,IAAIgC,EAAiBD,EAAM5B,QACtC,E,gGCjBJ,kBAOW+B,QACHC,GAEA,MAAO,UAAWA,CACtB,E,6GCpBJ,gBAOA,UACA,UAEA,UAGMC,EAA4F,CAC9F,CAAC,EAAAC,6BAA6Bd,eAAgB,EAAAvB,aAC9C,CAAC,EAAAqC,6BAA6Bb,oBAAqB,EAAAvB,iBACnD,CAAC,EAAAoC,6BAA6BZ,mBAAoB,EAAAnB,gBAClD,CAAC,EAAA+B,6BAA6BX,mBAAoB,EAAAnB,iBAGtD,MAAM+B,UAA8B,EAAAC,UAChCC,oBACIC,GAEA,MAAO,CACHC,OAAQ,kBACRC,OAAQ,CAACC,KAAKC,UAAUJ,IAEhC,CAEAK,mBAAmBX,GACf,IAAIH,EAA2C,EAAAhC,aAM/C,MAJImC,EAASJ,MAAME,QAAQG,IACvBJ,EAAmBI,EAAsBD,EAASJ,MAAME,OAAS,EAAAjC,cAG/D,IAAIgC,EAAiBG,EAASJ,MAAM5B,QAC9C,CAEA4C,uBACIC,GAEA,MAAO,CACHC,IAAKD,EAAYE,OAEzB,EAGS,EAAAC,sBAAwB,IAAIb,C,8eCjDzC,2CACA,mCAEA,uDAEA,gCAEA,IAAI,aAAAc,UACA,IACIC,KAAK,+CACLA,KAAK,uC,CACP,MAAOC,GACLC,QAAQxB,MAAMuB,E,CAItB,MAAaE,cAaT/D,YACIgE,EACiBC,EACDC,EACCC,EACAC,GAHA,KAAAH,UAAAA,EACD,KAAAC,UAAAA,EACC,KAAAC,SAAAA,EACA,KAAAC,eAAAA,EAjBJ,KAAAC,QAAU,SAEV,KAAAC,SAAW,UAEX,KAAAC,WAAa,IAItB,KAAAC,UAAW,EAWfnE,KAAKoE,qBAAuB,IAAI,8BAAAC,yBAAyBV,EAC7D,CAEaW,kB,iDACT,MAAMC,EAAM,IAAIC,KAAI,QAAAC,cAAazE,KAAK4D,UAAW5D,KAAKgE,UACtDO,EAAIG,aAAaC,OAAO,YAAa3E,KAAK6D,WAE1C,MAAMe,QAAoB5E,KAAKoE,qBAAqBS,iBAOpD,OANID,GACAL,EAAIG,aAAaC,OAAO,gBAAiBC,GAG7C5E,KAAK8E,YAAc,IAAIC,YAAYR,EAAIS,YAEhC,IAAIC,SAAQ,CAACC,EAASC,KACzBnF,KAAK8E,YAAaM,QAAUD,EAC5BnF,KAAK8E,YAAaO,OAAU,KACxBrF,KAAK8E,YAAaM,QAAUpF,KAAKsF,cAAcC,KAAKvF,MACpDA,KAAK8E,YAAaU,UAAYxF,KAAKyF,gBAAgBF,KAAKvF,MACxDkF,GAAS,CACZ,GAET,G,CAEaQ,KAAKrF,EAAqBsF,EAAkBC,G,iDACrD,MAAMrB,EAAM,IAAIC,KAAI,QAAAC,cAAazE,KAAK4D,UAAW5D,KAAKiE,WACtDM,EAAIG,aAAaC,OAAO,YAAa3E,KAAK6D,WAC1CU,EAAIG,aAAaC,OAAO,KAAMgB,GAC9BpB,EAAIG,aAAaC,OAAO,OAAQiB,GAAO5F,KAAKkE,YAAYc,kBAClDa,MAAMtB,EAAK,CACb3B,OAAQ,OACRkD,KAAM,WAAAC,OAAOC,OAAO3F,IAE5B,G,CAEO4F,Q,MACHjG,KAAKmE,UAAW,EACA,QAAhB,EAAAnE,KAAK8E,mBAAW,SAAEmB,OACtB,CAEQX,cAAcY,GACblG,KAAKmE,UACNnE,KAAK+D,eAAemC,EAE5B,CAEcT,gBAAgBS,G,iDAG1B,SAFMlG,KAAKoE,qBAAqB+B,iBAAiBD,EAAEtB,cAE9C5E,KAAKmE,SAAU,CAChB,IAAIiC,EAEJ,IACIA,EAAwBtD,KAAKuD,MAAMH,EAAEI,K,CACvC,MAAOJ,GACL,MAAM,IAAI,SAAAxG,gBAAgB,wCAAwCwG,EAAEI,O,CAGxEtG,KAAK8D,SAASsC,E,CAEtB,G,EAhFJ,mC,ijCChBA,gBAaA,SAEA,UAKA,UAGA,aAEA,MAAaG,EAwBT5G,YACqBgE,EACA6C,GADA,KAAA7C,QAAAA,EACA,KAAA6C,uBAAAA,EAnBL,KAAAC,KAAO,OAIN,KAAAC,gBAAkB,IAAIC,IAK/B,KAAAC,cAAgB,EAEhB,KAAAC,QAAuD,KAEvD,KAAAC,OAA+B,KAE/B,KAAAC,UAA6C,GAMjD/G,KAAKgH,kBAAoB,IAAI,EAAAC,wBAAwBtD,EACzD,CA5BOuD,mBAAyBvD,G,yCAC5B,MAAMwD,EAA0B,IAAI,EAAAF,wBAAwBtD,GACtDyD,QAAmBD,EAAwBE,oBACjD,OAAO,IAAId,EAAe5C,EAASyD,EAAWP,QAAQL,uBAC1D,G,CA0BOc,QAAQjH,G,MACA,QAAX,EAAAL,KAAK8G,cAAM,SAAEb,QACb,MAAMsB,EAAgB,IAAI,EAAAC,cAgB1B,OAdAxH,KAAK6G,QAAU,CACXU,gBACAf,uBAAwBxG,KAAKwG,wBAGjCxG,KAAK8G,OAAS,IAAI,EAAApD,cACd1D,KAAK2D,QACL3D,KAAKwG,uBAAuB5C,UAC5B2D,EAAc1D,UACd7D,KAAKyH,gBAAgBlC,KAAKvF,MAC1BA,KAAK0H,sBAAsBnC,KAAKvF,OAEpCA,KAAK8G,OAAOxC,kBAELtE,KAAK2H,sBAAsBtH,EACtC,CAEauH,oB,+CACE,QAAX,EAAA5H,KAAK8G,cAAM,SAAEb,QACb,MAAM4B,QAAyB7H,KAAKgH,kBAAkBK,oBACjDQ,IAIL7H,KAAK6G,QAAUgB,EAAiBhB,QAEhC7G,KAAK8G,OAAS,IAAI,EAAApD,cACd1D,KAAK2D,QACL3D,KAAKwG,uBAAuB5C,UAC5BiE,EAAiBhB,QAAQU,cAAc1D,UACvC7D,KAAKyH,gBAAgBlC,KAAKvF,MAC1BA,KAAK0H,sBAAsBnC,KAAKvF,aAG9BA,KAAK8G,OAAOxC,kBAElBtE,KAAK+G,UAAUe,SAAQhE,GAAYA,EAAS+D,EAAiBE,gB,IAG1DC,YACHrF,GAEA,OAAO,IAAIsC,SAAQ,CAACC,EAASC,KACzB,MAAM8C,EAAKjI,KAAK4G,cAEhB,GADA5G,KAAK4G,iBACA5G,KAAK8G,SAAW9G,KAAK6G,WAAa,oBAAqB7G,KAAK6G,SAC7D,MAAM,IAAI,EAAAnH,gBAAgB,iDAG9B,MAAMwI,EAAiBlI,KAAK6G,QAASU,cAAcY,QAC/CrF,KAAKC,UAAU,OAAD,wBAAMJ,GAAO,CAAEsF,SAC7B,IAAAG,gBAAepI,KAAK6G,QAAQwB,kBAGhCrI,KAAK8G,OAAOpB,KAAKwC,EAAgBlI,KAAK6G,QAAQwB,iBAAiBC,MAAMnD,GACrEnF,KAAK0G,gBAAgB6B,IAAIN,EAAGjD,WAAYE,EAAQ,GAExD,CAEOsD,kB,MACQ,QAAX,EAAAxI,KAAK8G,cAAM,SAAEb,QACbjG,KAAK+G,UAAY,EACrB,CAEO0B,a,MAGH,OAFW,QAAX,EAAAzI,KAAK8G,cAAM,SAAEb,QACbjG,KAAK+G,UAAY,GACV/G,KAAK0I,wBAChB,CAEOC,OAAOC,GAEV,OADA5I,KAAK+G,UAAU8B,KAAKD,GACb,IAAO5I,KAAK+G,UAAY/G,KAAK+G,UAAU+B,QAAOhF,GAAYA,IAAa8E,GAClF,CAEcnB,gBAAgBrB,G,yCAC1B,MAAM2C,EAA+BjG,KAAKuD,MACtCrG,KAAK6G,QAASU,cAAcyB,QACxB,EAAAjD,OAAOkD,OAAO7C,EAAsB/F,SAAS6I,gBAC7C,IAAAd,gBAAehC,EAAsB+C,QAI7C,KAAM,UAAWJ,GAAgB,CAC7B,MAAMd,EAAKc,EAAcd,GAAGjD,WACtBE,EAAUlF,KAAK0G,gBAAgB0C,IAAInB,GACzC,IAAK/C,EACD,MAAM,IAAI,EAAAxF,gBAAgB,eAAeuI,oCAK7C,OAFA/C,EAAQ6D,QACR/I,KAAK0G,gBAAgB2C,OAAOpB,E,CAIJ,YAAxBc,EAAcO,cACRtJ,KAAKuJ,cAAcR,EAAe3C,EAAsB+C,OAGtC,eAAxBJ,EAAcO,cACRtJ,KAAK0I,0BAGf1I,KAAK+G,UAAUe,SAAQhE,GAAYA,EAASiF,IAChD,G,CAEcrB,sBAAsBxB,G,yCAChC,MAAM,IAAI,EAAAxG,gBAAgB,gBAAgBoD,KAAKC,UAAUmD,KAC7D,G,CAEcqD,cACVxB,EACAM,G,yCAEArI,KAAK6G,QAAU,OAAH,wBACL7G,KAAK6G,SAAQ,CAChBwB,oBAGJ,MAAMmB,EAAmCzB,EAAa0B,QAAQC,MAAMC,MAChEC,GAAsB,aAAdA,EAAKC,OAGXC,EAAkB,+BACjB/B,GAAY,CACf0B,QAAS,OAAF,wBACA1B,EAAa0B,SAAO,CACvBC,MAAO,CAACF,aAIVxJ,KAAKgH,kBAAkB+C,gBAAgB,CACzCtD,KAAM,OACNI,QAAS7G,KAAK6G,QACdkB,aAAc+B,GAEtB,G,CAEcpB,yB,yCACV1I,KAAK6G,QAAU,KACf7G,KAAK8G,OAAS,WACR9G,KAAKgH,kBAAkBgD,kBACjC,G,CAEQrC,sBAAsBtH,GAC1B,MAAMkE,EAAM,IAAIC,IAAIxE,KAAKwG,uBAAuByD,eAIhD,OAHA1F,EAAIG,aAAaC,OAAO,IAAKuF,EAASC,QAAQnF,YAC9CT,EAAIG,aAAaC,OAAO,IAAK7B,KAAKC,UAAU1C,IAC5CkE,EAAIG,aAAaC,OAAO,IAAK,EAAAoB,OAAOC,OAAOlD,KAAKC,UAAU1C,IAAU,IAC7DkE,EAAIS,UACf,EAzLJ,kB,mjCCzBA,gBAWA,aACA,UAGA,UAQA,MAAaoF,EA2CTzK,YAAY0K,GAVI,KAAA5D,KAAO,WAEf,KAAA6D,oBAA2C,KAI3C,KAAAC,qBAAsB,EAEtB,KAAAxD,UAA6C,GAGjD,MAAMyD,EAAgDJ,EAAiBI,OACvE,IAAKJ,EAAiBK,uBAAuBD,EAAQH,GACjD,MAAM,IAAI,EAAArJ,uBAGdhB,KAAK0K,eAAiBF,EAAOH,GAAoBM,UACrD,CA/COzD,mBAAyBvD,G,yCAC5B,MAAMwD,EAA0B,IAAI,EAAAF,wBAAwBtD,GACtDyD,QAAmBD,EAAwByD,wBACjD,OAAO,IAAIR,EAAiBhD,EAAWyD,YAC3C,G,CAEO3D,wBAAwBmD,GAC3B,OAAOD,EAAiBK,uBAAuBzK,KAAKwK,OAAQH,EAChE,CAEOnD,6BAA6BmD,GAChC,QAAID,EAAiBK,uBAAuBzK,KAAKwK,OAAQH,IAC9CrK,KAAKwK,OAAOH,GAAoBM,WAAWG,eAI1D,CAEQ5D,8BACJsD,EACAH,GAEA,QACMG,GACFH,KAAqBG,GACgC,iBAA9CA,EAAOH,IACd,eAAgBG,EAAOH,EAE/B,CAqBO/C,QAAQjH,EAAyB0K,GAAO,GAC3C/K,KAAK0K,eACApD,QAAQ4C,EAASC,QAAS9J,EAAS0K,GACnCC,MAAKjD,IACyB,YAAvBA,EAAauB,QACbtJ,KAAKiL,oBACLjL,KAAKuK,qBAAsB,GAE/BvK,KAAK+G,UAAUe,SAAQhE,GAAYA,EAASiE,IAAc,IAE7DO,OAAMpC,IACH,MAAMgF,EAAkC,CACpC5B,MAAO,gBACPG,QAAS,CACLtH,KAAM,EACN9B,QAAS6F,aAAC,EAADA,EAAGlB,aAIpBhF,KAAK+G,UAAUe,SAAQhE,GAAYA,EAASoH,IAAmB,GAE3E,CAEatD,oB,yCACT,IACI,MAAMG,QAAqB/H,KAAK0K,eAAe9C,oBACpB,YAAvBG,EAAauB,QACbtJ,KAAKiL,oBACLjL,KAAKuK,qBAAsB,EAC3BvK,KAAK+G,UAAUe,SAAQhE,GAAYA,EAASiE,K,CAElD,MAAO7B,GACLzC,QAAQxB,MAAMiE,E,CAEtB,G,CAEOsC,kBACCxI,KAAKuK,qBACLvK,KAAK0K,eAAejC,aAExBzI,KAAKmL,mBACT,CAEO1C,aAGH,OAFAzI,KAAKmL,oBACLnL,KAAK0K,eAAejC,aACbxD,QAAQC,SACnB,CAEQiG,oB,MACJnL,KAAKuK,qBAAsB,EAC3BvK,KAAK+G,UAAY,GACO,QAAxB,EAAA/G,KAAKsK,2BAAmB,mBAC5B,CAEO3B,OAAOyC,GAEV,OADApL,KAAK+G,UAAU8B,KAAKuC,GACb,IACFpL,KAAK+G,UAAY/G,KAAK+G,UAAU+B,QAAOhF,GAAYA,IAAasH,GACzE,CAEapD,YACTrF,G,yCAEA,OAAO3C,KAAK0K,eAAehF,KAAI,+BAAS/C,GAAO,CAAEsF,GAAI,MACzD,G,CAEQgD,oBACJjL,KAAKsK,oBAAsBtK,KAAK0K,eAAe/B,QAAOzC,IAC9ClG,KAAKuK,qBACLvK,KAAK+G,UAAUe,SAAQhE,GAAYA,EAASoC,KAGhC,eAAZA,EAAEoD,OACFtJ,KAAKyI,Y,GAGjB,EAjIJ,qBACmB,EAAA+B,QAAS,IAAAa,Y,sbCxB5B,gBACA,UAWA,gCAGI1L,YAA6BgE,GAAA,KAAAA,QAAAA,EAFZ,KAAA2H,SAAW,uCAEqB,CAEpCvB,gBAAgB3C,G,yCACzB,GAAwB,aAApBA,EAAWX,KACX,OAAOzG,KAAK2D,QAAQ4H,QAAQvL,KAAKsL,SAAUxI,KAAKC,UAAUqE,IAG9D,MAAMoE,EAA+B,CACjCC,eAAgBrE,EAAWP,QAAQU,cAAcmE,mBACjDrD,gBAAiBjB,EAAWP,QAAQwB,gBACpC7B,uBAAwBY,EAAWP,QAAQL,wBAGzCmF,EAAyC,CAC3ClF,KAAM,OACNsB,aAAcX,EAAWW,aACzBlB,QAAS2E,GAEb,OAAOxL,KAAK2D,QAAQ4H,QAAQvL,KAAKsL,SAAUxI,KAAKC,UAAU4I,GAC9D,G,CAEa3B,mB,yCACT,OAAOhK,KAAK2D,QAAQiI,WAAW5L,KAAKsL,SACxC,G,CAEaO,gB,yCACT,MAAMC,QAAe9L,KAAK2D,QAAQoI,QAAQ/L,KAAKsL,UAC/C,IAAKQ,EACD,OAAO,KAGX,MAAM1E,EAAkCtE,KAAKuD,MAAMyF,GAEnD,GAAwB,aAApB1E,EAAWX,KACX,OAAOW,EAGX,MAAMG,EAAgB,IAAI,EAAAC,cAAcJ,EAAWP,QAAQ4E,gBAC3D,MAAO,CACHhF,KAAM,OACNsB,aAAcX,EAAWW,aACzBlB,QAAS,CACLU,gBACAf,uBAAwBY,EAAWP,QAAQL,uBAC3C6B,gBAAiBjB,EAAWP,QAAQwB,iBAGhD,G,CAEahB,oB,yCACT,MAAMD,QAAmBpH,KAAK6L,gBAC9B,IAAKzE,EACD,MAAM,IAAI,EAAA1H,gBACN,iEAIR,GAAwB,aAApB0H,EAAWX,KACX,MAAM,IAAI,EAAA/G,gBACN,6EAIR,OAAO0H,CACX,G,CAEawD,wB,yCACT,MAAMxD,QAAmBpH,KAAK6L,gBAE9B,IAAKzE,EACD,MAAM,IAAI,EAAA1H,gBACN,4EAIR,GAAyB,UAArB0H,aAAU,EAAVA,EAAYX,MACZ,MAAM,IAAI,EAAA/G,gBACN,oFAIR,OAAO0H,CACX,G,CAEa4E,uB,yCACT,MAAMF,QAAe9L,KAAK2D,QAAQoI,QAAQ/L,KAAKsL,UAC/C,OAAKQ,EAGgChJ,KAAKuD,MAAMyF,GAC9BrF,KAHP,IAIf,G,8aC1GJ,gBAEA,UAEA,uBAGI9G,cACI,MAAM6K,GAAS,IAAAa,aAEf,KAAKb,aAAM,EAANA,EAAQyB,cACT,MAAM,IAAI,EAAAvL,0BAGdV,KAAKwK,OAASA,CAClB,CAEauB,QAAQG,G,yCACjB,OAAOjH,QAAQC,QAAQlF,KAAKwK,OAAOyB,aAAaF,QAAQG,GAC5D,G,CAEaN,WAAWM,G,yCAEpB,OADAlM,KAAKwK,OAAOyB,aAAaL,WAAWM,GAC7BjH,QAAQC,SACnB,G,CAEAqG,QAAQW,EAAa5K,GAEjB,OADAtB,KAAKwK,OAAOyB,aAAaV,QAAQW,EAAK5K,GAC/B2D,QAAQC,SACnB,E,obC3BJ,iCAGIvF,YAA6BgE,GAAA,KAAAA,QAAAA,EAFZ,KAAA2H,SAAW,yCAEqB,CAEpCnF,iBAAiBvB,G,yCAC1B,OAAO5E,KAAK2D,QAAQ4H,QAAQvL,KAAKsL,SAAU1G,EAC/C,G,CAEauH,oB,yCACT,OAAOnM,KAAK2D,QAAQiI,WAAW5L,KAAKsL,SACxC,G,CAEazG,iB,yCAET,aADqB7E,KAAK2D,QAAQoI,QAAQ/L,KAAKsL,YAEpC,IAIf,G,0wBCXJ,gBACA,SACA,UACA,SACA,UACA,UACA,UAKA,SAIA,UACA,SACA,UACA,UAEA,UACA,SAEA,UACA,UAEA,mBAyCI3L,YAAYiB,GAMR,GA9Ca,KAAAwL,YAAc,IAAI,EAAAC,mBAM3B,KAAAC,QAAyB,KAEzB,KAAAC,SAA4B,KAE5B,KAAAC,0BAAqE,GAErE,KAAAC,+BAAqE,GA6BzEzM,KAAK0M,aAAe,CAChBC,aAAa/L,aAAO,EAAPA,EAAS+L,eAAe,IAAAC,sBACrCjJ,SAAS/C,aAAO,EAAPA,EAAS+C,UAAW,IAAI,EAAAkJ,iBAGhC7M,KAAK0M,aAAaC,YACnB,MAAM,IAAI,EAAAlN,kBACN,qLAIRO,KAAKmH,wBAA0B,IAAI,EAAAF,wBAAwBjH,KAAK0M,aAAa/I,QACjF,CApCWmJ,gBACP,OAAwB,OAAjB9M,KAAKsM,OAChB,CAKWS,c,MACP,OAAmB,QAAZ,EAAA/M,KAAKsM,eAAO,eAAES,UAAW,IACpC,CAKWC,aACP,OAAOhN,KAAKsM,OAChB,CAEYU,WAAO1L,GACftB,KAAKsM,QAAUhL,EACftB,KAAKwM,0BAA0B1E,SAAQc,GAAYA,EAAS5I,KAAKsM,UACrE,CAoBOW,aACH,OAAOjN,KAAKoM,YAAYa,YAC5B,CAQOC,eACHtE,EACAtD,GAOA,OALAtF,KAAKwM,0BAA0B3D,KAAKD,GAChCtD,GACAtF,KAAKyM,+BAA+B5D,KAAKvD,GAGtC,KACHtF,KAAKwM,0BAA4BxM,KAAKwM,0BAA0B1D,QAC5Dc,GAAQA,IAAShB,IAEjBtD,IACAtF,KAAKyM,+BAAiCzM,KAAKyM,+BAA+B3D,QACtEc,GAAQA,IAAStE,I,CAIjC,CAYOgC,QACH0F,EACArK,G,MAEA,GAAI3C,KAAK8M,UACL,MAAM,IAAI,EAAAhM,4BAMd,OAHa,QAAb,EAAAd,KAAKuM,gBAAQ,SAAE/D,kBACfxI,KAAKuM,SAAWvM,KAAKmN,eAAeH,GAE7BhN,KAAKuM,SAASjF,QAAQtH,KAAKoN,qBAAqBzK,GAC3D,CAKaiF,oB,yCACT,MAAOyF,EAAsBC,SAAwBrI,QAAQsI,IAAI,CAC7DvN,KAAKmH,wBAAwB6E,uBAC7BhM,KAAKoM,YAAYoB,sBAGrB,OAAQH,GACJ,IAAK,OACDrN,KAAKuM,eAAiB,EAAAhG,eAAekH,YAAYzN,KAAK0M,aAAa/I,SACnE,MACJ,IAAK,WACD3D,KAAKuM,eAAiB,EAAAnC,iBAAiBqD,YAAYzN,KAAK0M,aAAa/I,SACrE,MACJ,QACI,IAAI2J,EAGA,OAFAtN,KAAKuM,eAAiBvM,KAAKmN,eAAeG,GAOtD,OADAtN,KAAKuM,SAAS5D,OAAO3I,KAAK0N,qBAAqBnI,KAAKvF,OAC7CA,KAAKuM,SAAS3E,mBACzB,G,CAQa+F,gBACTC,G,yCAEA5N,KAAK6N,kBACL7N,KAAK8N,oBAAoB,mBAEzB,MAAM,WAAEC,GAAsBH,EAAPI,EAAE,EAAKJ,EAAxB,gBACAvL,QAAiBrC,KAAKuM,SAAUvE,YAClC,EAAA3E,sBAAsBX,oBAAoB,OAAD,wBAAMsL,GAAE,CAAEC,YAAaF,MAGpE,OAAI,EAAA1K,sBAAsBjB,QAAQC,GACvB,EAAAgB,sBAAsBL,mBAAmBX,GAG7C,EAAAgB,sBAAsBJ,uBACzBZ,EAER,G,CAKaoG,a,yCACT,IAAKzI,KAAK8M,UACN,MAAM,IAAI,EAAA/L,8BAERf,KAAKuM,SAAU9D,aACrBzI,KAAKkO,sBACT,G,CAEQf,eAAeH,GACnB,IAAIT,EASJ,OANIA,GADA,IAAA4B,4BAA2BnB,GAChB,IAAI,EAAA5C,iBAAiB4C,EAAOnC,aAE5B,IAAI,EAAAtE,eAAevG,KAAK0M,aAAa/I,QAASqJ,GAG7DT,EAAS5D,OAAO3I,KAAK0N,qBAAqBnI,KAAKvF,OACxCuM,CACX,CAEQmB,qBAAqBxH,GACzB,OAAQA,EAAEoD,OACN,IAAK,UACDtJ,KAAKoO,kBAAkBlI,EAAEuD,SACzB,MACJ,IAAK,gBACDzJ,KAAKqO,qBAAqBnI,EAAEuD,SAC5B,MACJ,IAAK,aACDzJ,KAAKkO,uBAEjB,CAEQE,kBAAkBrG,GACtB,MAAMuG,EAAkDvG,EAAa2B,MAAMC,MACvEC,GAAsB,aAAdA,EAAKC,OAGX0E,EAA8CxG,EAAa2B,MAAMC,MACnEC,GAAsB,cAAdA,EAAKC,OAGjB,IAAKyE,EACD,MAAM,IAAI,EAAA5O,gBAAgB,0CAG9B,MAAMsN,EAAiB,CACnBwB,OAAQzG,EAAayG,OACrBjC,SAAUvM,KAAKuM,SAAU9F,KACzBsG,QAAS,CACL0B,QAASH,EAAeG,QACxBC,MAAOJ,EAAeK,QACtBC,gBAAiBN,EAAeM,kBAIpCL,IACAvB,EAAO6B,aAAe,CAClBC,SAAUP,IAIlBvO,KAAKgN,OAASA,CAClB,CAEQqB,qBAAqBnD,GACzB,MAAMjJ,EAAQ,EAAAF,oBAAoBC,WAAWkJ,GAK7C,GAJAlL,KAAKyM,+BAA+B3E,SAAQxC,GAAiBA,EAAcrD,KAE3EwB,QAAQsL,MAAM9M,GAEVA,aAAiB,EAAA1B,uBAAyB0B,aAAiB,EAAA7B,0BAE3D,MADAqD,QAAQxB,MAAMA,GACRA,CAEd,CAEQiM,uBACJlO,KAAKgN,OAAS,IAClB,CAEQa,kBACJ,IAAK7N,KAAK8M,UACN,MAAM,IAAI,EAAA/L,uBAElB,CAEQ+M,oBAAoBkB,G,MACxB,KAAgB,QAAX,EAAAhP,KAAKgN,cAAM,eAAEwB,OAAOS,SAASC,SAASF,IACvC,MAAM,IAAI,EAAA/N,4BAElB,CAEQmM,qBAAqBzK,GACzB,MAAM+G,EAAuB,CACzB,CACIG,KAAM,aAWd,OAPIlH,GACA+G,EAAMb,KAAK,CACPgB,KAAM,YACNJ,QAAS9G,EAAQmM,WAIlB,CACHnC,YAAa3M,KAAK0M,aAAaC,YAC/BjD,QAER,E,4BChUJ,SAAgByF,EAAmB5K,GAC/B,MAAsB,MAAlBA,EAAI6K,OAAO,GACJ7K,EAAI6K,MAAM,GAAI,GAGlB7K,CACX,C,4FANA,uBAQA,wBAA6BA,EAAa8K,GACtC,OAAOF,EAAmB5K,GAAO,IAAM8K,CAC3C,C,4BCVA,SAAgBhE,IACZ,GAAsB,oBAAXb,OAIX,OAAOA,MACX,C,uGANA,cAQA,yBACI,GAAwB,oBAAb8E,SAIX,OAAOA,QACX,EAEA,gC,MACI,MAAMC,EAAoB,QAAX,EAAAlE,WAAW,eAAEmE,SAASD,OACrC,OAAIA,EACOA,EAAS,4BAGb,EACX,C,ibCvBA,gBACA,UAOA,UAEA,yCACY,KAAAE,iBAAiD,KAExC,KAAAC,kBACb,8EAsFR,CApFiBzC,a,yCAMT,OALKjN,KAAKyP,mBACNzP,KAAKyP,iBAAmBzP,KAAK2P,mBAC7B3P,KAAKyP,iBAAiBnH,OAAM,IAAOtI,KAAKyP,iBAAmB,QAGxDzP,KAAKyP,gBAChB,G,CAEajC,oB,yCACT,MACMoC,SADoB5P,KAAKiN,cACKnE,OAAO,EAAAzH,sBAE3C,OAA+B,IAA3BuO,EAAgBC,OACT,KAGJD,EAAgB,GAAIE,SAAWF,EAAgB,GAAM,IAChE,G,CAEcD,mB,yCACV,IACI,MAAMI,QAAwBlK,MAAM7F,KAAK0P,mBACnCtD,QAAqC2D,EAAgBC,OAE3D,IACKC,MAAMC,QAAQ9D,KACdA,EAAY+D,OAAMnD,GAAUhN,KAAKoQ,yBAAyBpD,KAE3D,MAAM,IAAI,EAAA9L,kBAAkB,6BAGhC,OAAOlB,KAAKqQ,sCAAsCjE,E,CACpD,MAAOlG,GACL,MAAM,IAAI,EAAAhF,kBAAkBgF,E,CAEpC,G,CAEQmK,sCAAsCC,GAC1C,OAAOA,EAAgBC,KAAID,IACvB,MAAME,EAA2B,CAC7B3G,KAAMyG,EAAgBzG,KACtB4G,SAAUH,EAAgBI,MAC1BC,SAAUL,EAAgBM,UAC1BC,OAAQP,EAAgBO,QAQ5B,GALI,eAAgBP,IACfE,EAAkC5M,UAAY0M,EAAgBQ,WAC9DN,EAAkCvG,cAAgBqG,EAAgBS,eAGnE,kBAAmBT,EAAiB,CACpC,MAAMzF,EAAcyF,EAAgBU,cACnCR,EAAoC3F,YAAcA,EAClD2F,EAAoCS,SACjC,EAAA7G,iBAAiB8G,iBAAiBrG,GACrC2F,EAAoCV,SACjC,EAAA1F,iBAAiB+G,sBAAsBtG,E,CAG/C,OAAO2F,CAAY,GAE3B,CAEQJ,yBAAyB9O,GAC7B,SAAKA,GAA4B,iBAAVA,KAIF,SAAUA,GACT,UAAWA,GACX,cAAeA,IAOV,eAAgBA,GADd,kBAAmBA,GAEvB,kBAAmBA,GAGhD,E,mBCjGH,SAAS8P,EAAMC,GACd,aACqCC,EAAOC,QAASD,EAAOC,QAAUF,KAC7DD,EAAKI,OAEZJ,EAAKI,KAAO,CAAC,GAFKJ,EAAKI,KAAKC,KAAOJ,IAKvC,CARA,CAQErR,MAAM,WACN,aAEA,IAAIyR,EAAO,CAAC,EAEZ,SAASC,EAAeC,GACtB,IAAM,uFAAuFC,KAAKD,GAChG,MAAM,IAAIE,UAAU,mBAExB,CA2DA,OAzDAJ,EAAKK,WAAa,SAASH,GACzB,GAAiB,iBAANA,EAAgB,MAAM,IAAIE,UAAU,mBAC/C,IAAIE,EAAGC,EAAIC,SAASC,mBAAmBP,IAAKQ,EAAI,IAAIC,WAAWJ,EAAEnC,QACjE,IAAKkC,EAAI,EAAGA,EAAIC,EAAEnC,OAAQkC,IAAKI,EAAEJ,GAAKC,EAAEK,WAAWN,GACnD,OAAOI,CACT,EAEAV,EAAKa,WAAa,SAASC,GACzB,IAAIR,EAAGJ,EAAI,GACX,IAAKI,EAAI,EAAGA,EAAIQ,EAAI1C,OAAQkC,IAAKJ,EAAE9I,KAAK2J,OAAOC,aAAaF,EAAIR,KAChE,OAAOW,mBAAmBC,OAAOhB,EAAEiB,KAAK,KAC1C,EAEoB,oBAATC,UAGkB,IAAhBC,OAAO3J,MAEhBsI,EAAKsB,aAAe,SAAUR,GAC1B,OAAOO,OAAO3J,KAAKoJ,GAAKvN,SAAS,SACrC,EAEAyM,EAAKuB,aAAe,SAAUrB,GAE5B,OADAD,EAAeC,GACR,IAAIS,WAAWnC,MAAMhQ,UAAUmP,MAAM6D,KAAKH,OAAO3J,KAAKwI,EAAG,UAAW,GAC7E,IAIAF,EAAKsB,aAAe,SAAUR,GAC5B,OAAO,IAAKO,OAAOP,GAAMvN,SAAS,SACpC,EAEAyM,EAAKuB,aAAe,SAASrB,GAE3B,OADAD,EAAeC,GACR,IAAIS,WAAWnC,MAAMhQ,UAAUmP,MAAM6D,KAAK,IAAIH,OAAOnB,EAAG,UAAW,GAC5E,IAMFF,EAAKsB,aAAe,SAASR,GAC3B,IAAIR,EAAGJ,EAAI,GAAIuB,EAAMX,EAAI1C,OACzB,IAAKkC,EAAI,EAAGA,EAAImB,EAAKnB,IAAKJ,EAAE9I,KAAK2J,OAAOC,aAAaF,EAAIR,KACzD,OAAOoB,KAAKxB,EAAEiB,KAAK,IACrB,EAEAnB,EAAKuB,aAAe,SAASrB,GAC3BD,EAAeC,GACf,IAAII,EAAGC,EAAIa,KAAKlB,GAAIQ,EAAI,IAAIC,WAAWJ,EAAEnC,QACzC,IAAKkC,EAAI,EAAGA,EAAIC,EAAEnC,OAAQkC,IAAKI,EAAEJ,GAAKC,EAAEK,WAAWN,GACnD,OAAOI,CACT,GAIKV,CAET,G,iBChFA,SAAUD,GACV,aAQA,IAAI4B,EAAK,SAASC,GAChB,IAAItB,EAAGuB,EAAI,IAAIC,aAAa,IAC5B,GAAIF,EAAM,IAAKtB,EAAI,EAAGA,EAAIsB,EAAKxD,OAAQkC,IAAKuB,EAAEvB,GAAKsB,EAAKtB,GACxD,OAAOuB,CACT,EAGIE,EAAc,WAAuB,MAAM,IAAI7S,MAAM,UAAY,EAEjE8S,EAAK,IAAIrB,WAAW,IACpBsB,EAAK,IAAItB,WAAW,IAAKsB,EAAG,GAAK,EAErC,IAAIC,EAAMP,IACNQ,EAAMR,EAAG,CAAC,IACVS,EAAUT,EAAG,CAAC,MAAQ,IACtBU,EAAIV,EAAG,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAChIW,EAAKX,EAAG,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,OACjIY,EAAIZ,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,OAChIa,EAAIb,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAChIc,EAAId,EAAG,CAAC,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,IAAQ,MAAQ,MAAQ,MAAQ,KAAQ,QAEpI,SAASe,EAAKC,EAAGrC,EAAGsC,EAAGC,GACrBF,EAAErC,GAAQsC,GAAK,GAAM,IACrBD,EAAErC,EAAE,GAAMsC,GAAK,GAAM,IACrBD,EAAErC,EAAE,GAAMsC,GAAM,EAAK,IACrBD,EAAErC,EAAE,GAAS,IAAJsC,EACTD,EAAErC,EAAE,GAAMuC,GAAK,GAAO,IACtBF,EAAErC,EAAE,GAAMuC,GAAK,GAAO,IACtBF,EAAErC,EAAE,GAAMuC,GAAM,EAAM,IACtBF,EAAErC,EAAE,GAAS,IAAJuC,CACX,CAEA,SAASC,EAAGH,EAAGI,EAAIC,EAAGC,EAAIC,GACxB,IAAI5C,EAAEC,EAAI,EACV,IAAKD,EAAI,EAAGA,EAAI4C,EAAG5C,IAAKC,GAAKoC,EAAEI,EAAGzC,GAAG0C,EAAEC,EAAG3C,GAC1C,OAAQ,EAAMC,EAAI,IAAO,GAAM,CACjC,CAEA,SAAS4C,EAAiBR,EAAGI,EAAIC,EAAGC,GAClC,OAAOH,EAAGH,EAAEI,EAAGC,EAAEC,EAAG,GACtB,CAEA,SAASG,EAAiBT,EAAGI,EAAIC,EAAGC,GAClC,OAAOH,EAAGH,EAAEI,EAAGC,EAAEC,EAAG,GACtB,CA4UA,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,EAEDtE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAQ3BuE,IADAjB,GADA6B,IADA7B,GADAyB,IADAzB,GADAqB,IADArB,EAAIiB,EAAKY,EAAM,IACN,EAAI7B,IAAI,IACRiB,EAAK,IACL,EAAIjB,IAAI,IACRqB,EAAK,IACJ,GAAKrB,IAAI,IACTyB,EAAK,IACN,GAAKzB,IAAI,GASlBsB,IADAtB,GADAkB,IADAlB,GADA8B,IADA9B,GADA0B,IADA1B,EAAIsB,EAAKJ,EAAK,IACL,EAAIlB,IAAI,IACRsB,EAAK,IACJ,EAAItB,IAAI,IACR0B,EAAK,IACN,GAAK1B,IAAI,IACT8B,EAAM,IACN,GAAK9B,IAAI,GASlB2B,IADA3B,GADAuB,IADAvB,GADAmB,IADAnB,GADA+B,IADA/B,EAAI2B,EAAMJ,EAAK,IACL,EAAIvB,IAAI,IACR2B,EAAM,IACP,EAAI3B,IAAI,IACR+B,EAAM,IACN,GAAK/B,IAAI,IACTmB,EAAK,IACJ,GAAKnB,IAAI,GASnBgC,IADAhC,GADA4B,IADA5B,GADAwB,IADAxB,GADAoB,IADApB,EAAIgC,EAAMJ,EAAM,IACP,EAAI5B,IAAI,IACRgC,EAAM,IACN,EAAIhC,IAAI,IACRoB,EAAK,IACJ,GAAKpB,IAAI,IACTwB,EAAK,IACL,GAAKxB,IAAI,GASnBiB,IADAjB,GADAoB,IADApB,GADAmB,IADAnB,GADAkB,IADAlB,EAAIiB,EAAKG,EAAK,IACL,EAAIpB,IAAI,IACRiB,EAAK,IACL,EAAIjB,IAAI,IACRkB,EAAK,IACL,GAAKlB,IAAI,IACTmB,EAAK,IACL,GAAKnB,IAAI,GASlBsB,IADAtB,GADAqB,IADArB,GADAwB,IADAxB,GADAuB,IADAvB,EAAIsB,EAAKD,EAAK,IACL,EAAIrB,IAAI,IACRsB,EAAK,IACL,EAAItB,IAAI,IACRuB,EAAK,IACL,GAAKvB,IAAI,IACTwB,EAAK,IACL,GAAKxB,IAAI,GASlB2B,IADA3B,GADA0B,IADA1B,GADAyB,IADAzB,GADA4B,IADA5B,EAAI2B,EAAMD,EAAK,IACL,EAAI1B,IAAI,IACR2B,EAAM,IACP,EAAI3B,IAAI,IACR4B,EAAM,IACN,GAAK5B,IAAI,IACTyB,EAAK,IACJ,GAAKzB,IAAI,GASnBgC,IADAhC,GADA+B,IADA/B,GADA8B,IADA9B,GADA6B,IADA7B,EAAIgC,EAAMD,EAAM,IACN,EAAI/B,IAAI,IACRgC,EAAM,IACN,EAAIhC,IAAI,IACR6B,EAAM,IACN,GAAK7B,IAAI,IACT8B,EAAM,IACN,GAAK9B,IAAI,GAEpBiB,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,GACvB,CA4IEC,CAAavC,EAAIC,EAAIC,EAAEC,EACzB,CAEA,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,GAMzEnD,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAQ3BuE,IADAjB,GADA6B,IADA7B,GADAyB,IADAzB,GADAqB,IADArB,EAAIiB,EAAKY,EAAM,IACN,EAAI7B,IAAI,IACRiB,EAAK,IACL,EAAIjB,IAAI,IACRqB,EAAK,IACJ,GAAKrB,IAAI,IACTyB,EAAK,IACN,GAAKzB,IAAI,GASlBsB,IADAtB,GADAkB,IADAlB,GADA8B,IADA9B,GADA0B,IADA1B,EAAIsB,EAAKJ,EAAK,IACL,EAAIlB,IAAI,IACRsB,EAAK,IACJ,EAAItB,IAAI,IACR0B,EAAK,IACN,GAAK1B,IAAI,IACT8B,EAAM,IACN,GAAK9B,IAAI,GASlB2B,IADA3B,GADAuB,IADAvB,GADAmB,IADAnB,GADA+B,IADA/B,EAAI2B,EAAMJ,EAAK,IACL,EAAIvB,IAAI,IACR2B,EAAM,IACP,EAAI3B,IAAI,IACR+B,EAAM,IACN,GAAK/B,IAAI,IACTmB,EAAK,IACJ,GAAKnB,IAAI,GASnBgC,IADAhC,GADA4B,IADA5B,GADAwB,IADAxB,GADAoB,IADApB,EAAIgC,EAAMJ,EAAM,IACP,EAAI5B,IAAI,IACRgC,EAAM,IACN,EAAIhC,IAAI,IACRoB,EAAK,IACJ,GAAKpB,IAAI,IACTwB,EAAK,IACL,GAAKxB,IAAI,GASnBiB,IADAjB,GADAoB,IADApB,GADAmB,IADAnB,GADAkB,IADAlB,EAAIiB,EAAKG,EAAK,IACL,EAAIpB,IAAI,IACRiB,EAAK,IACL,EAAIjB,IAAI,IACRkB,EAAK,IACL,GAAKlB,IAAI,IACTmB,EAAK,IACL,GAAKnB,IAAI,GASlBsB,IADAtB,GADAqB,IADArB,GADAwB,IADAxB,GADAuB,IADAvB,EAAIsB,EAAKD,EAAK,IACL,EAAIrB,IAAI,IACRsB,EAAK,IACL,EAAItB,IAAI,IACRuB,EAAK,IACL,GAAKvB,IAAI,IACTwB,EAAK,IACL,GAAKxB,IAAI,GASlB2B,IADA3B,GADA0B,IADA1B,GADAyB,IADAzB,GADA4B,IADA5B,EAAI2B,EAAMD,EAAK,IACL,EAAI1B,IAAI,IACR2B,EAAM,IACP,EAAI3B,IAAI,IACR4B,EAAM,IACN,GAAK5B,IAAI,IACTyB,EAAK,IACJ,GAAKzB,IAAI,GASnBgC,IADAhC,GADA+B,IADA/B,GADA8B,IADA9B,GADA6B,IADA7B,EAAIgC,EAAMD,EAAM,IACN,EAAI/B,IAAI,IACRgC,EAAM,IACN,EAAIhC,IAAI,IACR6B,EAAM,IACN,GAAK7B,IAAI,IACT8B,EAAM,IACN,GAAK9B,IAAI,GAGrBF,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,GACtB,CAOES,CAAczC,EAAIC,EAAIC,EAAEC,EAC1B,CAEA,IAAIuC,EAAQ,IAAIrF,WAAW,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,MAGhG,SAASsF,EAA0BxC,EAAEyC,EAAKC,EAAEC,EAAK1F,EAAEwC,EAAEM,GACnD,IACII,EAAGtD,EADH+F,EAAI,IAAI1F,WAAW,IAAKgC,EAAI,IAAIhC,WAAW,IAE/C,IAAKL,EAAI,EAAGA,EAAI,GAAIA,IAAK+F,EAAE/F,GAAK,EAChC,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK+F,EAAE/F,GAAK4C,EAAE5C,GACjC,KAAOI,GAAK,IAAI,CAEd,IADA2C,EAAoBV,EAAE0D,EAAE7C,EAAEwC,GACrB1F,EAAI,EAAGA,EAAI,GAAIA,IAAKmD,EAAEyC,EAAK5F,GAAK6F,EAAEC,EAAK9F,GAAKqC,EAAErC,GAEnD,IADAsD,EAAI,EACCtD,EAAI,EAAGA,EAAI,GAAIA,IAClBsD,EAAIA,GAAY,IAAPyC,EAAE/F,IAAa,EACxB+F,EAAE/F,GAAS,IAAJsD,EACPA,KAAO,EAETlD,GAAK,GACLwF,GAAQ,GACRE,GAAQ,EACV,CACA,GAAI1F,EAAI,EAEN,IADA2C,EAAoBV,EAAE0D,EAAE7C,EAAEwC,GACrB1F,EAAI,EAAGA,EAAII,EAAGJ,IAAKmD,EAAEyC,EAAK5F,GAAK6F,EAAEC,EAAK9F,GAAKqC,EAAErC,GAEpD,OAAO,CACT,CAEA,SAASgG,EAAsB7C,EAAEyC,EAAKxF,EAAEwC,EAAEM,GACxC,IACII,EAAGtD,EADH+F,EAAI,IAAI1F,WAAW,IAAKgC,EAAI,IAAIhC,WAAW,IAE/C,IAAKL,EAAI,EAAGA,EAAI,GAAIA,IAAK+F,EAAE/F,GAAK,EAChC,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK+F,EAAE/F,GAAK4C,EAAE5C,GACjC,KAAOI,GAAK,IAAI,CAEd,IADA2C,EAAoBV,EAAE0D,EAAE7C,EAAEwC,GACrB1F,EAAI,EAAGA,EAAI,GAAIA,IAAKmD,EAAEyC,EAAK5F,GAAKqC,EAAErC,GAEvC,IADAsD,EAAI,EACCtD,EAAI,EAAGA,EAAI,GAAIA,IAClBsD,EAAIA,GAAY,IAAPyC,EAAE/F,IAAa,EACxB+F,EAAE/F,GAAS,IAAJsD,EACPA,KAAO,EAETlD,GAAK,GACLwF,GAAQ,EACV,CACA,GAAIxF,EAAI,EAEN,IADA2C,EAAoBV,EAAE0D,EAAE7C,EAAEwC,GACrB1F,EAAI,EAAGA,EAAII,EAAGJ,IAAKmD,EAAEyC,EAAK5F,GAAKqC,EAAErC,GAExC,OAAO,CACT,CAEA,SAASiG,EAAc9C,EAAEyC,EAAK3F,EAAE2C,EAAEM,GAChC,IAAItD,EAAI,IAAIS,WAAW,IACvBmF,EAAqB5F,EAAEgD,EAAEM,EAAEwC,GAE3B,IADA,IAAIQ,EAAK,IAAI7F,WAAW,GACfL,EAAI,EAAGA,EAAI,EAAGA,IAAKkG,EAAGlG,GAAK4C,EAAE5C,EAAE,IACxC,OAAOgG,EAAsB7C,EAAEyC,EAAK3F,EAAEiG,EAAGtG,EAC3C,CAEA,SAASuG,EAAkBhD,EAAEyC,EAAKC,EAAEC,EAAK7F,EAAE2C,EAAEM,GAC3C,IAAItD,EAAI,IAAIS,WAAW,IACvBmF,EAAqB5F,EAAEgD,EAAEM,EAAEwC,GAE3B,IADA,IAAIQ,EAAK,IAAI7F,WAAW,GACfL,EAAI,EAAGA,EAAI,EAAGA,IAAKkG,EAAGlG,GAAK4C,EAAE5C,EAAE,IACxC,OAAO2F,EAA0BxC,EAAEyC,EAAKC,EAAEC,EAAK7F,EAAEiG,EAAGtG,EACtD,CAOA,IAAIwG,EAAW,SAASjM,GAQtB,IAAIkM,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAPhC3Y,KAAK4Y,OAAS,IAAIxG,WAAW,IAC7BpS,KAAKsT,EAAI,IAAIuF,YAAY,IACzB7Y,KAAKqU,EAAI,IAAIwE,YAAY,IACzB7Y,KAAK8Y,IAAM,IAAID,YAAY,GAC3B7Y,KAAK+Y,SAAW,EAChB/Y,KAAKgZ,IAAM,EAIXZ,EAAe,IAAVlM,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGlM,KAAKsT,EAAE,GAAkC,KAA7B,EACzD+E,EAAe,IAAVnM,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGlM,KAAKsT,EAAE,GAAkC,MAA3B8E,IAAO,GAAOC,GAAO,GAChFC,EAAe,IAAVpM,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGlM,KAAKsT,EAAE,GAAkC,MAA3B+E,IAAO,GAAOC,GAAO,GAChFC,EAAe,IAAVrM,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGlM,KAAKsT,EAAE,GAAkC,MAA3BgF,IAAQ,EAAMC,GAAO,GAChFC,EAAe,IAAVtM,EAAK,IAAuB,IAAVA,EAAK,KAAc,EAAGlM,KAAKsT,EAAE,GAAkC,KAA3BiF,IAAQ,EAAMC,GAAM,IAC/ExY,KAAKsT,EAAE,GAAOkF,IAAQ,EAAM,KAC5BC,EAAe,IAAVvM,EAAI,KAAwB,IAAVA,EAAI,MAAe,EAAGlM,KAAKsT,EAAE,GAAkC,MAA3BkF,IAAO,GAAOC,GAAO,GAChFC,EAAe,IAAVxM,EAAI,KAAwB,IAAVA,EAAI,MAAe,EAAGlM,KAAKsT,EAAE,GAAkC,MAA3BmF,IAAO,GAAOC,GAAO,GAChFC,EAAe,IAAVzM,EAAI,KAAwB,IAAVA,EAAI,MAAe,EAAGlM,KAAKsT,EAAE,GAAkC,MAA3BoF,IAAQ,EAAMC,GAAO,GAChF3Y,KAAKsT,EAAE,GAAOqF,IAAQ,EAAM,IAE5B3Y,KAAK8Y,IAAI,GAAe,IAAV5M,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDlM,KAAK8Y,IAAI,GAAe,IAAV5M,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDlM,KAAK8Y,IAAI,GAAe,IAAV5M,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDlM,KAAK8Y,IAAI,GAAe,IAAV5M,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDlM,KAAK8Y,IAAI,GAAe,IAAV5M,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDlM,KAAK8Y,IAAI,GAAe,IAAV5M,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDlM,KAAK8Y,IAAI,GAAe,IAAV5M,EAAI,KAAwB,IAAVA,EAAI,MAAe,EACnDlM,KAAK8Y,IAAI,GAAe,IAAV5M,EAAI,KAAwB,IAAVA,EAAI,MAAe,CACrD,EAmUA,SAAS+M,EAAmBlE,EAAKmE,EAAQtB,EAAGC,EAAMlD,EAAGM,GACnD,IAAItD,EAAI,IAAIwG,EAASlD,GAGrB,OAFAtD,EAAEwH,OAAOvB,EAAGC,EAAMlD,GAClBhD,EAAEyH,OAAOrE,EAAKmE,GACP,CACT,CAEA,SAASG,EAA0BhF,EAAGiF,EAAM1B,EAAGC,EAAMlD,EAAGM,GACtD,IAAIb,EAAI,IAAIhC,WAAW,IAEvB,OADA6G,EAAmB7E,EAAE,EAAEwD,EAAEC,EAAKlD,EAAEM,GACzBL,EAAiBP,EAAEiF,EAAKlF,EAAE,EACnC,CAEA,SAASmF,EAAiBrE,EAAE0C,EAAE5F,EAAE2C,EAAEM,GAChC,IAAIlD,EACJ,GAAIC,EAAI,GAAI,OAAQ,EAGpB,IAFAkG,EAAkBhD,EAAE,EAAE0C,EAAE,EAAE5F,EAAE2C,EAAEM,GAC9BgE,EAAmB/D,EAAG,GAAIA,EAAG,GAAIlD,EAAI,GAAIkD,GACpCnD,EAAI,EAAGA,EAAI,GAAIA,IAAKmD,EAAEnD,GAAK,EAChC,OAAO,CACT,CAEA,SAASyH,EAAsB5B,EAAE1C,EAAElD,EAAE2C,EAAEM,GACrC,IAAIlD,EACAqC,EAAI,IAAIhC,WAAW,IACvB,GAAIJ,EAAI,GAAI,OAAQ,EAEpB,GADAgG,EAAc5D,EAAE,EAAE,GAAGO,EAAEM,GACiC,IAApDoE,EAA0BnE,EAAG,GAAGA,EAAG,GAAGlD,EAAI,GAAGoC,GAAU,OAAQ,EAEnE,IADA8D,EAAkBN,EAAE,EAAE1C,EAAE,EAAElD,EAAE2C,EAAEM,GACzBlD,EAAI,EAAGA,EAAI,GAAIA,IAAK6F,EAAE7F,GAAK,EAChC,OAAO,CACT,CAEA,SAAS0H,EAASnG,EAAGoG,GACnB,IAAI3H,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKuB,EAAEvB,GAAU,EAAL2H,EAAE3H,EACpC,CAEA,SAAS4H,EAASxE,GAChB,IAAIpD,EAAG6H,EAAG1E,EAAI,EACd,IAAKnD,EAAI,EAAGA,EAAI,GAAIA,IAClB6H,EAAIzE,EAAEpD,GAAKmD,EAAI,MACfA,EAAI2E,KAAKC,MAAMF,EAAI,OACnBzE,EAAEpD,GAAK6H,EAAQ,MAAJ1E,EAEbC,EAAE,IAAMD,EAAE,EAAI,IAAMA,EAAE,EACxB,CAEA,SAAS6E,EAAS3E,EAAG4E,EAAG7H,GAEtB,IADA,IAAI8H,EAAG/E,IAAM/C,EAAE,GACNJ,EAAI,EAAGA,EAAI,GAAIA,IACtBkI,EAAI/E,GAAKE,EAAErD,GAAKiI,EAAEjI,IAClBqD,EAAErD,IAAMkI,EACRD,EAAEjI,IAAMkI,CAEZ,CAEA,SAASC,EAAU/E,EAAGR,GACpB,IAAI5C,EAAGoI,EAAGhI,EACNyF,EAAIxE,IAAM6G,EAAI7G,IAClB,IAAKrB,EAAI,EAAGA,EAAI,GAAIA,IAAKkI,EAAElI,GAAK4C,EAAE5C,GAIlC,IAHA4H,EAASM,GACTN,EAASM,GACTN,EAASM,GACJE,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAEtB,IADAvC,EAAE,GAAKqC,EAAE,GAAK,MACTlI,EAAI,EAAGA,EAAI,GAAIA,IAClB6F,EAAE7F,GAAKkI,EAAElI,GAAK,OAAW6F,EAAE7F,EAAE,IAAI,GAAM,GACvC6F,EAAE7F,EAAE,IAAM,MAEZ6F,EAAE,IAAMqC,EAAE,IAAM,OAAWrC,EAAE,KAAK,GAAM,GACxCzF,EAAKyF,EAAE,KAAK,GAAM,EAClBA,EAAE,KAAO,MACTmC,EAASE,EAAGrC,EAAG,EAAEzF,EACnB,CACA,IAAKJ,EAAI,EAAGA,EAAI,GAAIA,IAClBoD,EAAE,EAAEpD,GAAY,IAAPkI,EAAElI,GACXoD,EAAE,EAAEpD,EAAE,GAAKkI,EAAElI,IAAI,CAErB,CAEA,SAASqI,EAASV,EAAGvH,GACnB,IAAI+C,EAAI,IAAI9C,WAAW,IAAKJ,EAAI,IAAII,WAAW,IAG/C,OAFA8H,EAAUhF,EAAGwE,GACbQ,EAAUlI,EAAGG,GACN0C,EAAiBK,EAAG,EAAGlD,EAAG,EACnC,CAEA,SAASqI,EAASX,GAChB,IAAI1H,EAAI,IAAII,WAAW,IAEvB,OADA8H,EAAUlI,EAAG0H,GACC,EAAP1H,EAAE,EACX,CAEA,SAASsI,EAAYnF,EAAGR,GACtB,IAAI5C,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKoD,EAAEpD,GAAK4C,EAAE,EAAE5C,IAAM4C,EAAE,EAAE5C,EAAE,IAAM,GACtDoD,EAAE,KAAO,KACX,CAEA,SAASoF,EAAEpF,EAAGuE,EAAGvH,GACf,IAAK,IAAIJ,EAAI,EAAGA,EAAI,GAAIA,IAAKoD,EAAEpD,GAAK2H,EAAE3H,GAAKI,EAAEJ,EAC/C,CAEA,SAASyI,EAAErF,EAAGuE,EAAGvH,GACf,IAAK,IAAIJ,EAAI,EAAGA,EAAI,GAAIA,IAAKoD,EAAEpD,GAAK2H,EAAE3H,GAAKI,EAAEJ,EAC/C,CAEA,SAAS0I,EAAEtF,EAAGuE,EAAGvH,GACf,IAAIyH,EAAG1E,EACJkD,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,EAAK9J,EAAE,GACP+J,EAAK/J,EAAE,GACPgK,EAAKhK,EAAE,GACPiK,EAAKjK,EAAE,GACPkK,EAAKlK,EAAE,GACPmK,EAAKnK,EAAE,GACPoK,EAAKpK,EAAE,GACPqK,EAAKrK,EAAE,GACPsK,EAAKtK,EAAE,GACPuK,EAAKvK,EAAE,GACPwK,EAAMxK,EAAE,IACRyK,EAAMzK,EAAE,IACR0K,EAAM1K,EAAE,IACR2K,EAAM3K,EAAE,IACR4K,EAAM5K,EAAE,IACR6K,EAAM7K,EAAE,IAGViG,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,KAkCXhH,EAAI,GACU,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSvB,GAAjDuB,EAAKvB,EAAKnD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACStB,GAAjDsB,EAAKtB,EAAKpD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSrB,GAAjDqB,EAAKrB,EAAKrD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSpB,GAAjDoB,EAAKpB,EAAKtD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSnB,GAAjDmB,EAAKnB,EAAKvD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSlB,GAAjDkB,EAAKlB,EAAKxD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSjB,GAAjDiB,EAAKjB,EAAKzD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSc,GAAjDd,EAAKc,EAAKxF,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSe,GAAjDf,EAAKe,EAAKzF,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQgB,GAAhDhB,EAAIgB,EAAM1F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQiB,GAAhDjB,EAAIiB,EAAM3F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQkB,GAAhDlB,EAAIkB,EAAM5F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQmB,GAAhDnB,EAAImB,EAAM7F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQoB,GAAhDpB,EAAIoB,EAAM9F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQqB,GAAhDrB,EAAIqB,EAAM/F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QAKSxB,GAAjDwB,GAJAxB,GAAMlD,EAAE,EAAI,IAAMA,EAAE,KAGpBA,EAAI,GACU,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSvB,GAAjDuB,EAAKvB,EAAKnD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACStB,GAAjDsB,EAAKtB,EAAKpD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSrB,GAAjDqB,EAAKrB,EAAKrD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSpB,GAAjDoB,EAAKpB,EAAKtD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSnB,GAAjDmB,EAAKnB,EAAKvD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSlB,GAAjDkB,EAAKlB,EAAKxD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSjB,GAAjDiB,EAAKjB,EAAKzD,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSc,GAAjDd,EAAKc,EAAKxF,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACSe,GAAjDf,EAAKe,EAAKzF,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQgB,GAAhDhB,EAAIgB,EAAM1F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQiB,GAAhDjB,EAAIiB,EAAM3F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQkB,GAAhDlB,EAAIkB,EAAM5F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQmB,GAAhDnB,EAAImB,EAAM7F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQoB,GAAhDpB,EAAIoB,EAAM9F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACQqB,GAAhDrB,EAAIqB,EAAM/F,EAAI,OAAgD,OAAzCA,EAAI2E,KAAKC,MAAMF,EAAI,QACxCxB,GAAMlD,EAAE,EAAI,IAAMA,EAAE,GAEpBC,EAAG,GAAKiD,EACRjD,EAAG,GAAKkD,EACRlD,EAAG,GAAKmD,EACRnD,EAAG,GAAKoD,EACRpD,EAAG,GAAKqD,EACRrD,EAAG,GAAKsD,EACRtD,EAAG,GAAKuD,EACRvD,EAAG,GAAKwD,EACRxD,EAAG,GAAKuF,EACRvF,EAAG,GAAKwF,EACRxF,EAAE,IAAMyF,EACRzF,EAAE,IAAM0F,EACR1F,EAAE,IAAM2F,EACR3F,EAAE,IAAM4F,EACR5F,EAAE,IAAM6F,EACR7F,EAAE,IAAM8F,CACV,CAEA,SAASgC,EAAE9H,EAAGuE,GACZe,EAAEtF,EAAGuE,EAAGA,EACV,CAEA,SAASwD,EAAS/H,EAAGpD,GACnB,IACI2H,EADAxE,EAAI9B,IAER,IAAKsG,EAAI,EAAGA,EAAI,GAAIA,IAAKxE,EAAEwE,GAAK3H,EAAE2H,GAClC,IAAKA,EAAI,IAAKA,GAAK,EAAGA,IACpBuD,EAAE/H,EAAGA,GACI,IAANwE,GAAiB,IAANA,GAASe,EAAEvF,EAAGA,EAAGnD,GAEjC,IAAK2H,EAAI,EAAGA,EAAI,GAAIA,IAAKvE,EAAEuE,GAAKxE,EAAEwE,EACpC,CAEA,SAASyD,EAAQhI,EAAGpD,GAClB,IACI2H,EADAxE,EAAI9B,IAER,IAAKsG,EAAI,EAAGA,EAAI,GAAIA,IAAKxE,EAAEwE,GAAK3H,EAAE2H,GAClC,IAAKA,EAAI,IAAKA,GAAK,EAAGA,IAClBuD,EAAE/H,EAAGA,GACI,IAANwE,GAASe,EAAEvF,EAAGA,EAAGnD,GAExB,IAAK2H,EAAI,EAAGA,EAAI,GAAIA,IAAKvE,EAAEuE,GAAKxE,EAAEwE,EACpC,CAEA,SAAS0D,EAAkBpD,EAAGrF,EAAGS,GAC/B,IAC8B9B,EAAGvB,EAD7B+F,EAAI,IAAI1F,WAAW,IACnBgC,EAAI,IAAIb,aAAa,IACrBmG,EAAItG,IAAMjB,EAAIiB,IAAM8B,EAAI9B,IACxBpB,EAAIoB,IAAMlN,EAAIkN,IAAM/B,EAAI+B,IAC5B,IAAKrB,EAAI,EAAGA,EAAI,GAAIA,IAAK+F,EAAE/F,GAAK4C,EAAE5C,GAIlC,IAHA+F,EAAE,IAAW,IAANnD,EAAE,IAAS,GAClBmD,EAAE,IAAI,IACNwC,EAAYlG,EAAEgB,GACTrD,EAAI,EAAGA,EAAI,GAAIA,IAClBI,EAAEJ,GAAGqC,EAAErC,GACPC,EAAED,GAAG2H,EAAE3H,GAAGmD,EAAEnD,GAAG,EAGjB,IADA2H,EAAE,GAAG1H,EAAE,GAAG,EACLD,EAAE,IAAKA,GAAG,IAAKA,EAElBgI,EAASL,EAAEvH,EADXmB,EAAGwE,EAAE/F,IAAI,MAAQ,EAAFA,GAAM,GAErBgI,EAAS7E,EAAElD,EAAEsB,GACbiH,EAAErU,EAAEwT,EAAExE,GACNsF,EAAEd,EAAEA,EAAExE,GACNqF,EAAErF,EAAE/C,EAAEH,GACNwI,EAAErI,EAAEA,EAAEH,GACNiL,EAAEjL,EAAE9L,GACJ+W,EAAE5L,EAAEqI,GACJe,EAAEf,EAAExE,EAAEwE,GACNe,EAAEvF,EAAE/C,EAAEjM,GACNqU,EAAErU,EAAEwT,EAAExE,GACNsF,EAAEd,EAAEA,EAAExE,GACN+H,EAAE9K,EAAEuH,GACJc,EAAEtF,EAAElD,EAAEX,GACNoJ,EAAEf,EAAExE,EAAErB,GACN0G,EAAEb,EAAEA,EAAE1H,GACNyI,EAAEvF,EAAEA,EAAEwE,GACNe,EAAEf,EAAE1H,EAAEX,GACNoJ,EAAEzI,EAAEG,EAAEiC,GACN6I,EAAE9K,EAAEjM,GACJ6T,EAASL,EAAEvH,EAAEmB,GACbyG,EAAS7E,EAAElD,EAAEsB,GAEf,IAAKvB,EAAI,EAAGA,EAAI,GAAIA,IAClBqC,EAAErC,EAAE,IAAI2H,EAAE3H,GACVqC,EAAErC,EAAE,IAAImD,EAAEnD,GACVqC,EAAErC,EAAE,IAAII,EAAEJ,GACVqC,EAAErC,EAAE,IAAIC,EAAED,GAEZ,IAAIsL,EAAMjJ,EAAEkJ,SAAS,IACjBC,EAAMnJ,EAAEkJ,SAAS,IAIrB,OAHAJ,EAASG,EAAIA,GACb5C,EAAE8C,EAAIA,EAAIF,GACVnD,EAAUF,EAAEuD,GACL,CACT,CAEA,SAASC,EAAuBxD,EAAGrF,GACjC,OAAOyI,EAAkBpD,EAAGrF,EAAGjB,EACjC,CAEA,SAAS+J,EAAmBhJ,EAAGL,GAE7B,OADAZ,EAAYY,EAAG,IACRoJ,EAAuB/I,EAAGL,EACnC,CAEA,SAASsJ,EAAoBzI,EAAGR,EAAGL,GACjC,IAAIzC,EAAI,IAAIS,WAAW,IAEvB,OADAgL,EAAkBzL,EAAGyC,EAAGK,GACjB8C,EAAqBtC,EAAGxB,EAAI9B,EAAG8F,EACxC,CA53BAU,EAASlY,UAAU0d,OAAS,SAAS/F,EAAGC,EAAM+F,GA2B5C,IA1BA,IACIxF,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIzD,EAChC2I,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAFpCC,EAAQve,KAAKgZ,IAAM,EAAI,KAIvBwF,EAAKxe,KAAKqU,EAAE,GACZoK,EAAKze,KAAKqU,EAAE,GACZqK,EAAK1e,KAAKqU,EAAE,GACZsK,EAAK3e,KAAKqU,EAAE,GACZuK,EAAK5e,KAAKqU,EAAE,GACZwK,EAAK7e,KAAKqU,EAAE,GACZyK,EAAK9e,KAAKqU,EAAE,GACZ0K,EAAK/e,KAAKqU,EAAE,GACZ2K,EAAKhf,KAAKqU,EAAE,GACZ4K,EAAKjf,KAAKqU,EAAE,GAEZ6K,EAAKlf,KAAKsT,EAAE,GACZ6L,EAAKnf,KAAKsT,EAAE,GACZ8L,EAAKpf,KAAKsT,EAAE,GACZ+L,EAAKrf,KAAKsT,EAAE,GACZgM,EAAKtf,KAAKsT,EAAE,GACZiM,EAAKvf,KAAKsT,EAAE,GACZkM,EAAKxf,KAAKsT,EAAE,GACZmM,EAAKzf,KAAKsT,EAAE,GACZoM,EAAK1f,KAAKsT,EAAE,GACZqM,EAAK3f,KAAKsT,EAAE,GAETsK,GAAS,IAcdC,EAFA3I,EAAI,EAGJ2I,IAdmDW,GAAmC,MAAtFpG,EAAkB,IAAbR,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAcrCqH,EACXrB,IAdmDY,GAAmC,MAA3BrG,IAAO,IAAlEC,EAAkB,IAAbT,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAAgC,KAcpE,EAAI8H,GAChB9B,IAdmDa,GAAmC,MAA3BrG,IAAO,IAAlEC,EAAkB,IAAbV,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAAgC,KAcpE,EAAI6H,GAChB7B,IAdmDc,GAAmC,MAA3BrG,IAAQ,GAAnEC,EAAkB,IAAbX,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAAgC,KAcpE,EAAI4H,GAEhBvK,GADA2I,IAdmDe,GAAmC,MAA3BrG,IAAQ,GAAnEC,EAAkB,IAAbZ,EAAEC,EAAM,IAA0B,IAAbD,EAAEC,EAAM,KAAc,IAA+B,MAcnE,EAAI2H,MACJ,GAAK3B,GAAM,KACvBA,IAfAgB,GAAQrG,IAAQ,EAAM,OAeV,EAAI+G,GAChB1B,IAfmDiB,GAAmC,MAA3BtG,IAAO,IAAlEC,EAAkB,IAAbb,EAAEC,EAAK,KAA2B,IAAbD,EAAEC,EAAK,MAAe,IAAgC,KAepE,EAAIyH,GAChBzB,IAfmDkB,GAAmC,MAA3BtG,IAAO,IAAlEC,EAAkB,IAAbd,EAAEC,EAAK,KAA2B,IAAbD,EAAEC,EAAK,MAAe,IAAgC,KAepE,EAAIwH,GAChBxB,IAfmDmB,GAAmC,MAA3BtG,IAAQ,GAAnEC,EAAkB,IAAbf,EAAEC,EAAK,KAA2B,IAAbD,EAAEC,EAAK,MAAe,IAAgC,KAepE,EAAIuH,GAIhBtB,EAFA5I,IADA2I,IAfAoB,GAAQtG,IAAO,EAAM4F,IAeT,EAAIY,MACH,GAGbrB,GAAMU,EAAKW,EACXrB,GAAMW,EAAKS,EACXpB,GAAMY,GAAM,EAAIiB,GAChB7B,GAAMa,GAAM,EAAIe,GAEhBxK,GADA4I,GAAMc,GAAM,EAAIa,MACJ,GAAK3B,GAAM,KACvBA,GAAMe,GAAM,EAAIW,GAChB1B,GAAMgB,GAAM,EAAIS,GAChBzB,GAAMiB,GAAM,EAAIO,GAChBxB,GAAMkB,GAAM,EAAIK,GAEhBnK,IADA4I,GAAMmB,GAAM,EAAIG,MACH,GAAKtB,GAAM,KAExBC,EAAK7I,EACL6I,GAAMS,EAAKY,EACXrB,GAAMU,EAAKU,EACXpB,GAAMW,EAAKQ,EACXnB,GAAMY,GAAM,EAAIgB,GAEhBzK,GADA6I,GAAMa,GAAM,EAAIc,MACJ,GAAK3B,GAAM,KACvBA,GAAMc,GAAM,EAAIY,GAChB1B,GAAMe,GAAM,EAAIU,GAChBzB,GAAMgB,GAAM,EAAIQ,GAChBxB,GAAMiB,GAAM,EAAIM,GAIhBtB,EAFA9I,IADA6I,GAAMkB,GAAM,EAAII,MACH,GAGbrB,GAAMQ,EAAKa,EACXrB,GAAMS,EAAKW,EACXpB,GAAMU,EAAKS,EACXnB,GAAMW,EAAKO,EAEXhK,GADA8I,GAAMY,GAAM,EAAIe,MACJ,GAAK3B,GAAM,KACvBA,GAAMa,GAAM,EAAIa,GAChB1B,GAAMc,GAAM,EAAIW,GAChBzB,GAAMe,GAAM,EAAIS,GAChBxB,GAAMgB,GAAM,EAAIO,GAIhBtB,EAFA/I,IADA8I,GAAMiB,GAAM,EAAIK,MACH,GAGbrB,GAAMO,EAAKc,EACXrB,GAAMQ,EAAKY,EACXpB,GAAMS,EAAKU,EACXnB,GAAMU,EAAKQ,EAEXjK,GADA+I,GAAMW,EAAKM,KACC,GAAKjB,GAAM,KACvBA,GAAMY,GAAM,EAAIc,GAChB1B,GAAMa,GAAM,EAAIY,GAChBzB,GAAMc,GAAM,EAAIU,GAChBxB,GAAMe,GAAM,EAAIQ,GAIhBtB,EAFAhJ,IADA+I,GAAMgB,GAAM,EAAIM,MACH,GAGbrB,GAAMM,EAAKe,EACXrB,GAAMO,EAAKa,EACXpB,GAAMQ,EAAKW,EACXnB,GAAMS,EAAKS,EAEXlK,GADAgJ,GAAMU,EAAKO,KACC,GAAKjB,GAAM,KACvBA,GAAMW,EAAKK,EACXhB,GAAMY,GAAM,EAAIa,GAChBzB,GAAMa,GAAM,EAAIW,GAChBxB,GAAMc,GAAM,EAAIS,GAIhBtB,EAFAjJ,IADAgJ,GAAMe,GAAM,EAAIO,MACH,GAGbrB,GAAMK,EAAKgB,EACXrB,GAAMM,EAAKc,EACXpB,GAAMO,EAAKY,EACXnB,GAAMQ,EAAKU,EAEXnK,GADAiJ,GAAMS,EAAKQ,KACC,GAAKjB,GAAM,KACvBA,GAAMU,EAAKM,EACXhB,GAAMW,EAAKI,EACXf,GAAMY,GAAM,EAAIY,GAChBxB,GAAMa,GAAM,EAAIU,GAIhBtB,EAFAlJ,IADAiJ,GAAMc,GAAM,EAAIQ,MACH,GAGbrB,GAAMI,EAAKiB,EACXrB,GAAMK,EAAKe,EACXpB,GAAMM,EAAKa,EACXnB,GAAMO,EAAKW,EAEXpK,GADAkJ,GAAMQ,EAAKS,KACC,GAAKjB,GAAM,KACvBA,GAAMS,EAAKO,EACXhB,GAAMU,EAAKK,EACXf,GAAMW,EAAKG,EACXd,GAAMY,GAAM,EAAIW,GAIhBtB,EAFAnJ,IADAkJ,GAAMa,GAAM,EAAIS,MACH,GAGbrB,GAAMG,EAAKkB,EACXrB,GAAMI,EAAKgB,EACXpB,GAAMK,EAAKc,EACXnB,GAAMM,EAAKY,EAEXrK,GADAmJ,GAAMO,EAAKU,KACC,GAAKjB,GAAM,KACvBA,GAAMQ,EAAKQ,EACXhB,GAAMS,EAAKM,EACXf,GAAMU,EAAKI,EACXd,GAAMW,EAAKE,EAIXZ,EAFApJ,IADAmJ,GAAMY,GAAM,EAAIU,MACH,GAGbrB,GAAME,EAAKmB,EACXrB,GAAMG,EAAKiB,EACXpB,GAAMI,EAAKe,EACXnB,GAAMK,EAAKa,EAEXtK,GADAoJ,GAAMM,EAAKW,KACC,GAAKjB,GAAM,KACvBA,GAAMO,EAAKS,EACXhB,GAAMQ,EAAKO,EACXf,GAAMS,EAAKK,EACXd,GAAMU,EAAKG,EAUXX,EAJAX,EAAS,MADT3I,GADAA,IAFAA,IADAoJ,GAAMW,EAAKC,KACE,KAED,GAAKhK,EAAM,IAhIL2I,GAAM,MAiIT,GAMfY,EAHAX,GADA5I,KAAW,GAKXwJ,EA5GkBX,GAAM,KA6GxBY,EA/FkBX,GAAM,KAgGxBY,EAlFkBX,GAAM,KAmFxBY,EArEkBX,GAAM,KAsExBY,EAxDkBX,GAAM,KAyDxBY,EA3CkBX,GAAM,KA4CxBY,EA9BkBX,GAAM,KA+BxBY,EAjBkBX,GAAM,KAmBxBzG,GAAQ,GACR+F,GAAS,GAEX5d,KAAKqU,EAAE,GAAKmK,EACZxe,KAAKqU,EAAE,GAAKoK,EACZze,KAAKqU,EAAE,GAAKqK,EACZ1e,KAAKqU,EAAE,GAAKsK,EACZ3e,KAAKqU,EAAE,GAAKuK,EACZ5e,KAAKqU,EAAE,GAAKwK,EACZ7e,KAAKqU,EAAE,GAAKyK,EACZ9e,KAAKqU,EAAE,GAAK0K,EACZ/e,KAAKqU,EAAE,GAAK2K,EACZhf,KAAKqU,EAAE,GAAK4K,CACd,EAEA9G,EAASlY,UAAUmZ,OAAS,SAASwG,EAAKC,GACxC,IACI3K,EAAG4K,EAAMzO,EAAGU,EADZgO,EAAI,IAAIlH,YAAY,IAGxB,GAAI7Y,KAAK+Y,SAAU,CAGjB,IAFAhH,EAAI/R,KAAK+Y,SACT/Y,KAAK4Y,OAAO7G,KAAO,EACZA,EAAI,GAAIA,IAAK/R,KAAK4Y,OAAO7G,GAAK,EACrC/R,KAAKgZ,IAAM,EACXhZ,KAAK2d,OAAO3d,KAAK4Y,OAAQ,EAAG,GAC9B,CAIA,IAFA1D,EAAIlV,KAAKqU,EAAE,KAAO,GAClBrU,KAAKqU,EAAE,IAAM,KACRtC,EAAI,EAAGA,EAAI,GAAIA,IAClB/R,KAAKqU,EAAEtC,IAAMmD,EACbA,EAAIlV,KAAKqU,EAAEtC,KAAO,GAClB/R,KAAKqU,EAAEtC,IAAM,KAaf,IAXA/R,KAAKqU,EAAE,IAAW,EAAJa,EACdA,EAAIlV,KAAKqU,EAAE,KAAO,GAClBrU,KAAKqU,EAAE,IAAM,KACbrU,KAAKqU,EAAE,IAAMa,EACbA,EAAIlV,KAAKqU,EAAE,KAAO,GAClBrU,KAAKqU,EAAE,IAAM,KACbrU,KAAKqU,EAAE,IAAMa,EAEb6K,EAAE,GAAK/f,KAAKqU,EAAE,GAAK,EACnBa,EAAI6K,EAAE,KAAO,GACbA,EAAE,IAAM,KACHhO,EAAI,EAAGA,EAAI,GAAIA,IAClBgO,EAAEhO,GAAK/R,KAAKqU,EAAEtC,GAAKmD,EACnBA,EAAI6K,EAAEhO,KAAO,GACbgO,EAAEhO,IAAM,KAKV,IAHAgO,EAAE,IAAM,KAERD,GAAY,EAAJ5K,GAAS,EACZnD,EAAI,EAAGA,EAAI,GAAIA,IAAKgO,EAAEhO,IAAM+N,EAEjC,IADAA,GAAQA,EACH/N,EAAI,EAAGA,EAAI,GAAIA,IAAK/R,KAAKqU,EAAEtC,GAAM/R,KAAKqU,EAAEtC,GAAK+N,EAAQC,EAAEhO,GAa5D,IAXA/R,KAAKqU,EAAE,GAAoE,OAA7DrU,KAAKqU,EAAE,GAAcrU,KAAKqU,EAAE,IAAM,IAChDrU,KAAKqU,EAAE,GAAoE,OAA7DrU,KAAKqU,EAAE,KAAQ,EAAMrU,KAAKqU,EAAE,IAAM,IAChDrU,KAAKqU,EAAE,GAAoE,OAA7DrU,KAAKqU,EAAE,KAAQ,EAAMrU,KAAKqU,EAAE,IAAO,GACjDrU,KAAKqU,EAAE,GAAoE,OAA7DrU,KAAKqU,EAAE,KAAQ,EAAMrU,KAAKqU,EAAE,IAAO,GACjDrU,KAAKqU,EAAE,GAAoE,OAA7DrU,KAAKqU,EAAE,KAAO,GAAOrU,KAAKqU,EAAE,IAAO,EAAMrU,KAAKqU,EAAE,IAAM,IACpErU,KAAKqU,EAAE,GAAoE,OAA7DrU,KAAKqU,EAAE,KAAQ,EAAMrU,KAAKqU,EAAE,IAAM,IAChDrU,KAAKqU,EAAE,GAAoE,OAA7DrU,KAAKqU,EAAE,KAAQ,EAAMrU,KAAKqU,EAAE,IAAO,GACjDrU,KAAKqU,EAAE,GAAoE,OAA7DrU,KAAKqU,EAAE,KAAQ,EAAMrU,KAAKqU,EAAE,IAAO,GAEjDhD,EAAIrR,KAAKqU,EAAE,GAAKrU,KAAK8Y,IAAI,GACzB9Y,KAAKqU,EAAE,GAAS,MAAJhD,EACPU,EAAI,EAAGA,EAAI,EAAGA,IACjBV,GAAOrR,KAAKqU,EAAEtC,GAAK/R,KAAK8Y,IAAI/G,GAAM,IAAMV,IAAM,IAAO,EACrDrR,KAAKqU,EAAEtC,GAAS,MAAJV,EAGduO,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAQ,GAAM7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAO,IAAO7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAO,IAAO7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAO,IAAO7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAO,IAAO7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAO,IAAO7f,KAAKqU,EAAE,KAAO,EAAK,IACrCuL,EAAIC,EAAO,IAAO7f,KAAKqU,EAAE,KAAO,EAAK,GACvC,EAEA8D,EAASlY,UAAUkZ,OAAS,SAASvB,EAAGC,EAAM+F,GAC5C,IAAI7L,EAAGiO,EAEP,GAAIhgB,KAAK+Y,SAAU,CAIjB,KAHAiH,EAAQ,GAAKhgB,KAAK+Y,UACP6E,IACToC,EAAOpC,GACJ7L,EAAI,EAAGA,EAAIiO,EAAMjO,IACpB/R,KAAK4Y,OAAO5Y,KAAK+Y,SAAWhH,GAAK6F,EAAEC,EAAK9F,GAI1C,GAHA6L,GAASoC,EACTnI,GAAQmI,EACRhgB,KAAK+Y,UAAYiH,EACbhgB,KAAK+Y,SAAW,GAClB,OACF/Y,KAAK2d,OAAO3d,KAAK4Y,OAAQ,EAAG,IAC5B5Y,KAAK+Y,SAAW,CAClB,CASA,GAPI6E,GAAS,KACXoC,EAAOpC,EAASA,EAAQ,GACxB5d,KAAK2d,OAAO/F,EAAGC,EAAMmI,GACrBnI,GAAQmI,EACRpC,GAASoC,GAGPpC,EAAO,CACT,IAAK7L,EAAI,EAAGA,EAAI6L,EAAO7L,IACrB/R,KAAK4Y,OAAO5Y,KAAK+Y,SAAWhH,GAAK6F,EAAEC,EAAK9F,GAC1C/R,KAAK+Y,UAAY6E,CACnB,CACF,EA+jBA,IAAIqC,EAAqB1G,EACrB2G,EAA0B1G,EAc1B2G,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,EAAI1I,EAAGjD,GAyBvC,IAxBA,IACI4L,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnCC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnCC,EAAIC,EAAIzP,EAAGoI,EAAG9F,EAAGC,EAAGoF,EAAGvH,EAAG+C,EAAGlD,EAH7ByP,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,EACHjO,GAAK,KAAK,CACf,IAAK5C,EAAI,EAAGA,EAAI,GAAIA,IAClBoI,EAAI,EAAIpI,EAAI6Q,EACZnB,EAAG1P,GAAM6F,EAAEuC,EAAE,IAAM,GAAOvC,EAAEuC,EAAE,IAAM,GAAOvC,EAAEuC,EAAE,IAAM,EAAKvC,EAAEuC,EAAE,GAC9DwH,EAAG5P,GAAM6F,EAAEuC,EAAE,IAAM,GAAOvC,EAAEuC,EAAE,IAAM,GAAOvC,EAAEuC,EAAE,IAAM,EAAKvC,EAAEuC,EAAE,GAEhE,IAAKpI,EAAI,EAAGA,EAAI,GAAIA,IA+HlB,GA9HAwO,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EAGNnB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EACNpB,EAAMqB,EAONhJ,EAAQ,OAFRpF,EAAIqO,GAEYxQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAI8N,GAIYnQ,EAAIqC,IAAM,GAM1BqF,GAAS,OAFTpF,GAAMkO,IAAQ,GAAOR,GAAO,KAAcQ,IAAQ,GAAOR,GAAO,KAAcA,IAAQ,EAAYQ,GAAO,KAExFrQ,GAAKmC,IAAM,GAC5BY,GAAS,OAJTb,GAAM2N,IAAQ,GAAOQ,GAAO,KAAcR,IAAQ,GAAOQ,GAAO,KAAcA,IAAQ,EAAYR,GAAO,KAIxFhQ,GAAKqC,IAAM,GAM5BqF,GAAS,OAFTpF,EAAKkO,EAAMC,GAASD,EAAME,GAETvQ,GAAKmC,IAAM,GAC5BY,GAAS,OAJTb,EAAK2N,EAAMC,GAASD,EAAME,GAITlQ,GAAKqC,IAAM,GAM5BqF,GAAS,OAFTpF,EAAI6L,EAAI,EAAFpO,EAAI,IAEOI,GAAKmC,IAAM,GAC5BY,GAAS,OAJTb,EAAI8L,EAAI,EAAFpO,IAIWC,GAAKqC,IAAM,GAG5BA,EAAIoN,EAAG1P,EAAE,IAGQI,IAFjBmC,EAAIqN,EAAG5P,EAAE,OAEmB,GAC5BmD,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAG5Ba,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,GAUXoF,EAAQ,OAFRpF,EAJAkN,EAAS,MAAJ9H,EAAavH,GAAK,IAMPA,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAJAkN,EAAS,MAAJrM,GAFLlD,GAAKkD,IAAM,KAEY,IAQPlD,EAAIqC,IAAM,GAM1BqF,GAAS,OAFTpF,GAAM8N,IAAQ,GAAOR,GAAO,IAAcA,IAAQ,EAAYQ,GAAO,KAAmBR,IAAQ,EAAYQ,GAAO,KAElGjQ,GAAKmC,IAAM,GAC5BY,GAAS,OAJTb,GAAMuN,IAAQ,GAAOQ,GAAO,IAAcA,IAAQ,EAAYR,GAAO,KAAmBQ,IAAQ,EAAYR,GAAO,KAIlG5P,GAAKqC,IAAM,GAMXlC,IAFjBmC,EAAK8N,EAAMC,EAAQD,EAAME,EAAQD,EAAMC,KAEX,GAC5BpN,GAAS,OAJTb,EAAKuN,EAAMC,EAAQD,EAAME,EAAQD,EAAMC,GAItB9P,GAAKqC,IAAM,GAM5ByM,EAAW,OAHX5L,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,KACXtC,GAAKkD,IAAM,KAEgB,GAC3BoM,EAAW,MAAJ5H,EAAevH,GAAK,GAM3BuH,EAAQ,OAFRpF,EAAI4M,GAEY/O,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAIqM,GAIY1O,EAAIqC,IAAM,GAKTlC,IAFjBmC,EAAIkN,KAEwB,GAC5BtM,GAAS,OAJTb,EAAIkN,GAIavP,GAAKqC,IAAM,GAS5BwN,EAAMtB,EACNuB,EAAMtB,EACNuB,EAAMtB,EACNuB,EANAtB,EAAW,OAHXxL,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,KACXtC,GAAKkD,IAAM,KAEgB,GAO3B+M,EAAMtB,EACNuB,EAAMtB,EACNuB,EAAMtB,EACNe,EAAMd,EAENuB,EAAMtB,EACNuB,EAAMtB,EACNuB,EAAMtB,EACNuB,EAdAtB,EAAW,MAAJxH,EAAevH,GAAK,GAe3BsQ,EAAMtB,EACNuB,EAAMtB,EACNuB,EAAMtB,EACNe,EAAMd,EAEFvP,EAAE,IAAO,GACX,IAAKoI,EAAI,EAAGA,EAAI,GAAIA,IAElB9F,EAAIoN,EAAGtH,GAGPT,EAAQ,OAFRpF,EAAIqN,EAAGxH,IAEShI,EAAImC,IAAM,GAC1BY,EAAQ,MAAJb,EAAYrC,EAAIqC,IAAM,GAE1BA,EAAIoN,GAAItH,EAAE,GAAG,IAGbT,GAAS,OAFTpF,EAAIqN,GAAIxH,EAAE,GAAG,KAEIhI,GAAKmC,IAAM,GAC5BY,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAG5BkN,EAAKE,GAAItH,EAAE,GAAG,IAKdT,GAAS,OAFTpF,IAFAkN,EAAKG,GAAIxH,EAAE,GAAG,OAED,EAAMoH,GAAM,KAAaC,IAAO,EAAMD,GAAM,KAAaC,IAAO,EAAMD,GAAM,KAExEpP,GAAKmC,IAAM,GAC5BY,GAAS,OAJTb,GAAMkN,IAAO,EAAMC,GAAM,KAAaD,IAAO,EAAMC,GAAM,IAAYD,IAAO,GAI3DvP,GAAKqC,IAAM,GAG5BkN,EAAKE,GAAItH,EAAE,IAAI,IAKEhI,IAFjBmC,IAFAkN,EAAKG,GAAIxH,EAAE,IAAI,OAEF,GAAOoH,GAAM,KAAcA,IAAO,GAAYC,GAAM,IAAmBA,IAAO,EAAMD,GAAM,OAE3E,GAC5BrM,GAAS,OAJTb,GAAMkN,IAAO,GAAOC,GAAM,KAAcA,IAAO,GAAYD,GAAM,GAAkBA,IAAO,GAIzEvP,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEXmN,EAAGtH,GAAU,MAAJjF,EAAelD,GAAK,GAC7B2P,EAAGxH,GAAU,MAAJT,EAAevH,GAAK,GASnCuH,EAAQ,OAFRpF,EAAI8N,GAEYjQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAIuN,GAIY5P,EAAIqC,IAAM,GAE1BA,EAAIgM,EAAG,GAGUlO,IAFjBmC,EAAIgM,EAAG,MAEqB,GAC5BpL,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEX+L,EAAG,GAAKuB,EAAW,MAAJ1M,EAAelD,GAAK,GACnCsO,EAAG,GAAK8B,EAAW,MAAJ1I,EAAevH,GAAK,GAKnCuH,EAAQ,OAFRpF,EAAI+N,GAEYlQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAIwN,GAIY7P,EAAIqC,IAAM,GAE1BA,EAAIgM,EAAG,GAGUlO,IAFjBmC,EAAIgM,EAAG,MAEqB,GAC5BpL,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEX+L,EAAG,GAAKwB,EAAW,MAAJ3M,EAAelD,GAAK,GACnCsO,EAAG,GAAK+B,EAAW,MAAJ3I,EAAevH,GAAK,GAKnCuH,EAAQ,OAFRpF,EAAIgO,GAEYnQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAIyN,GAIY9P,EAAIqC,IAAM,GAE1BA,EAAIgM,EAAG,GAGUlO,IAFjBmC,EAAIgM,EAAG,MAEqB,GAC5BpL,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEX+L,EAAG,GAAKyB,EAAW,MAAJ5M,EAAelD,GAAK,GACnCsO,EAAG,GAAKgC,EAAW,MAAJ5I,EAAevH,GAAK,GAKnCuH,EAAQ,OAFRpF,EAAIiO,GAEYpQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAI0N,GAIY/P,EAAIqC,IAAM,GAE1BA,EAAIgM,EAAG,GAGUlO,IAFjBmC,EAAIgM,EAAG,MAEqB,GAC5BpL,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEX+L,EAAG,GAAK0B,EAAW,MAAJ7M,EAAelD,GAAK,GACnCsO,EAAG,GAAKiC,EAAW,MAAJ7I,EAAevH,GAAK,GAKnCuH,EAAQ,OAFRpF,EAAIkO,GAEYrQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAI2N,GAIYhQ,EAAIqC,IAAM,GAE1BA,EAAIgM,EAAG,GAGUlO,IAFjBmC,EAAIgM,EAAG,MAEqB,GAC5BpL,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEX+L,EAAG,GAAK2B,EAAW,MAAJ9M,EAAelD,GAAK,GACnCsO,EAAG,GAAKkC,EAAW,MAAJ9I,EAAevH,GAAK,GAKnCuH,EAAQ,OAFRpF,EAAImO,GAEYtQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAI4N,GAIYjQ,EAAIqC,IAAM,GAE1BA,EAAIgM,EAAG,GAGUlO,IAFjBmC,EAAIgM,EAAG,MAEqB,GAC5BpL,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEX+L,EAAG,GAAK4B,EAAW,MAAJ/M,EAAelD,GAAK,GACnCsO,EAAG,GAAKmC,EAAW,MAAJ/I,EAAevH,GAAK,GAKnCuH,EAAQ,OAFRpF,EAAIoO,GAEYvQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAI6N,GAIYlQ,EAAIqC,IAAM,GAE1BA,EAAIgM,EAAG,GAGUlO,IAFjBmC,EAAIgM,EAAG,MAEqB,GAC5BpL,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEX+L,EAAG,GAAK6B,EAAW,MAAJhN,EAAelD,GAAK,GACnCsO,EAAG,GAAKoC,EAAW,MAAJhJ,EAAevH,GAAK,GAKnCuH,EAAQ,OAFRpF,EAAIqO,GAEYxQ,EAAImC,IAAM,GAC1BY,EAAQ,OAJRb,EAAI8N,GAIYnQ,EAAIqC,IAAM,GAE1BA,EAAIgM,EAAG,GAGUlO,IAFjBmC,EAAIgM,EAAG,MAEqB,GAC5BpL,GAAS,MAAJb,EAAYrC,GAAKqC,IAAM,GAI5BrC,IADAkD,IADA/C,IAHAuH,GAAS,MAAJpF,KAGM,MACA,MACA,GAEX+L,EAAG,GAAK8B,EAAW,MAAJjN,EAAelD,GAAK,GACnCsO,EAAG,GAAKqC,EAAW,MAAJjJ,EAAevH,GAAK,GAEnCyQ,GAAO,IACPjO,GAAK,GACP,CAEA,OAAOA,CACT,CAEA,SAASkO,EAAY9N,EAAK6C,EAAGjD,GAC3B,IAGI5C,EAHAsO,EAAK,IAAIqB,WAAW,GACpBpB,EAAK,IAAIoB,WAAW,GACpBtN,EAAI,IAAIhC,WAAW,KAChBD,EAAIwC,EAuBX,IArBA0L,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,UAERF,EAAqBC,EAAIC,EAAI1I,EAAGjD,GAChCA,GAAK,IAEA5C,EAAI,EAAGA,EAAI4C,EAAG5C,IAAKqC,EAAErC,GAAK6F,EAAEzF,EAAEwC,EAAE5C,GAQrC,IAPAqC,EAAEO,GAAK,IAGPP,GADAO,EAAI,IAAI,KAAKA,EAAE,IAAI,EAAE,IACjB,GAAK,EACTR,EAAKC,EAAGO,EAAE,EAAKxC,EAAI,UAAc,EAAGA,GAAK,GACzCiO,EAAqBC,EAAIC,EAAIlM,EAAGO,GAE3B5C,EAAI,EAAGA,EAAI,EAAGA,IAAKoC,EAAKY,EAAK,EAAEhD,EAAGsO,EAAGtO,GAAIuO,EAAGvO,IAEjD,OAAO,CACT,CAEA,SAAS+Q,EAAI1N,EAAG4E,GACd,IAAIN,EAAItG,IAAMjB,EAAIiB,IAAM8B,EAAI9B,IACxBpB,EAAIoB,IAAMlN,EAAIkN,IAAM/B,EAAI+B,IACxB2M,EAAI3M,IAAMiB,EAAIjB,IAAM6G,EAAI7G,IAE5BoH,EAAEd,EAAGtE,EAAE,GAAIA,EAAE,IACboF,EAAEP,EAAGD,EAAE,GAAIA,EAAE,IACbS,EAAEf,EAAGA,EAAGO,GACRM,EAAEpI,EAAGiD,EAAE,GAAIA,EAAE,IACbmF,EAAEN,EAAGD,EAAE,GAAIA,EAAE,IACbS,EAAEtI,EAAGA,EAAG8H,GACRQ,EAAEvF,EAAGE,EAAE,GAAI4E,EAAE,IACbS,EAAEvF,EAAGA,EAAGnB,GACR0G,EAAEzI,EAAGoD,EAAE,GAAI4E,EAAE,IACbO,EAAEvI,EAAGA,EAAGA,GACRwI,EAAEtU,EAAGiM,EAAGuH,GACRc,EAAEnJ,EAAGW,EAAGkD,GACRqF,EAAEwF,EAAG/N,EAAGkD,GACRqF,EAAElG,EAAGlC,EAAGuH,GAERe,EAAErF,EAAE,GAAIlP,EAAGmL,GACXoJ,EAAErF,EAAE,GAAIf,EAAG0L,GACXtF,EAAErF,EAAE,GAAI2K,EAAG1O,GACXoJ,EAAErF,EAAE,GAAIlP,EAAGmO,EACb,CAEA,SAAS0O,EAAM3N,EAAG4E,EAAG7H,GACnB,IAAIJ,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IACjBgI,EAAS3E,EAAErD,GAAIiI,EAAEjI,GAAII,EAEzB,CAEA,SAAS6Q,GAAK1P,EAAG8B,GACf,IAAIpH,EAAKoF,IAAM6P,EAAK7P,IAAM8P,EAAK9P,IAC/B8J,EAASgG,EAAI9N,EAAE,IACfqF,EAAEzM,EAAIoH,EAAE,GAAI8N,GACZzI,EAAEwI,EAAI7N,EAAE,GAAI8N,GACZhJ,EAAU5G,EAAG2P,GACb3P,EAAE,KAAO+G,EAASrM,IAAO,CAC3B,CAEA,SAASmV,GAAW/N,EAAG4E,EAAGrI,GACxB,IAAIQ,EAAGJ,EAKP,IAJA0H,EAASrE,EAAE,GAAIzB,GACf8F,EAASrE,EAAE,GAAIxB,GACf6F,EAASrE,EAAE,GAAIxB,GACf6F,EAASrE,EAAE,GAAIzB,GACV5B,EAAI,IAAKA,GAAK,IAAKA,EAEtBgR,EAAM3N,EAAG4E,EADT7H,EAAKR,EAAGI,EAAE,EAAG,KAAS,EAAFA,GAAQ,GAE5B+Q,EAAI9I,EAAG5E,GACP0N,EAAI1N,EAAGA,GACP2N,EAAM3N,EAAG4E,EAAG7H,EAEhB,CAEA,SAASiR,GAAWhO,EAAGzD,GACrB,IAAIqI,EAAI,CAAC5G,IAAMA,IAAMA,IAAMA,KAC3BqG,EAASO,EAAE,GAAIhG,GACfyF,EAASO,EAAE,GAAI/F,GACfwF,EAASO,EAAE,GAAIpG,GACf6G,EAAET,EAAE,GAAIhG,EAAGC,GACXkP,GAAW/N,EAAG4E,EAAGrI,EACnB,CAEA,SAAS0R,GAAoBC,EAAIC,EAAIC,GACnC,IAEIzR,EAFAC,EAAI,IAAII,WAAW,IACnBgD,EAAI,CAAChC,IAAMA,IAAMA,IAAMA,KAY3B,IATKoQ,GAAQhQ,EAAY+P,EAAI,IAC7BV,EAAY7Q,EAAGuR,EAAI,IACnBvR,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,GAEToR,GAAWhO,EAAGpD,GACdgR,GAAKM,EAAIlO,GAEJrD,EAAI,EAAGA,EAAI,GAAIA,IAAKwR,EAAGxR,EAAE,IAAMuR,EAAGvR,GACvC,OAAO,CACT,CAEA,IAAI0R,GAAI,IAAIlQ,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,KAEvK,SAASmQ,GAAKpQ,EAAGc,GACf,IAAIuP,EAAO5R,EAAGoI,EAAGlF,EACjB,IAAKlD,EAAI,GAAIA,GAAK,KAAMA,EAAG,CAEzB,IADA4R,EAAQ,EACHxJ,EAAIpI,EAAI,GAAIkD,EAAIlD,EAAI,GAAIoI,EAAIlF,IAAKkF,EACpC/F,EAAE+F,IAAMwJ,EAAQ,GAAKvP,EAAErC,GAAK0R,GAAEtJ,GAAKpI,EAAI,KACvC4R,EAAQ9J,KAAKC,OAAO1F,EAAE+F,GAAK,KAAO,KAClC/F,EAAE+F,IAAc,IAARwJ,EAEVvP,EAAE+F,IAAMwJ,EACRvP,EAAErC,GAAK,CACT,CAEA,IADA4R,EAAQ,EACHxJ,EAAI,EAAGA,EAAI,GAAIA,IAClB/F,EAAE+F,IAAMwJ,GAASvP,EAAE,KAAO,GAAKqP,GAAEtJ,GACjCwJ,EAAQvP,EAAE+F,IAAM,EAChB/F,EAAE+F,IAAM,IAEV,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK/F,EAAE+F,IAAMwJ,EAAQF,GAAEtJ,GAC3C,IAAKpI,EAAI,EAAGA,EAAI,GAAIA,IAClBqC,EAAErC,EAAE,IAAMqC,EAAErC,IAAM,EAClBuB,EAAEvB,GAAY,IAAPqC,EAAErC,EAEb,CAEA,SAAS6R,GAAOtQ,GACd,IAA8BvB,EAA1BqC,EAAI,IAAIb,aAAa,IACzB,IAAKxB,EAAI,EAAGA,EAAI,GAAIA,IAAKqC,EAAErC,GAAKuB,EAAEvB,GAClC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKuB,EAAEvB,GAAK,EAChC2R,GAAKpQ,EAAGc,EACV,CAGA,SAASyP,GAAYC,EAAIlM,EAAGjD,EAAG4O,GAC7B,IACIxR,EAAGoI,EADHnI,EAAI,IAAII,WAAW,IAAKiC,EAAI,IAAIjC,WAAW,IAAKkB,EAAI,IAAIlB,WAAW,IAC7DgC,EAAI,IAAIb,aAAa,IAC3B6B,EAAI,CAAChC,IAAMA,IAAMA,IAAMA,KAE3ByP,EAAY7Q,EAAGuR,EAAI,IACnBvR,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,GAET,IAAI+R,EAAQpP,EAAI,GAChB,IAAK5C,EAAI,EAAGA,EAAI4C,EAAG5C,IAAK+R,EAAG,GAAK/R,GAAK6F,EAAE7F,GACvC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK+R,EAAG,GAAK/R,GAAKC,EAAE,GAAKD,GAO7C,IALA8Q,EAAYvP,EAAGwQ,EAAGxG,SAAS,IAAK3I,EAAE,IAClCiP,GAAOtQ,GACP8P,GAAWhO,EAAG9B,GACd0P,GAAKc,EAAI1O,GAEJrD,EAAI,GAAIA,EAAI,GAAIA,IAAK+R,EAAG/R,GAAKwR,EAAGxR,GAIrC,IAHA8Q,EAAYxO,EAAGyP,EAAInP,EAAI,IACvBiP,GAAOvP,GAEFtC,EAAI,EAAGA,EAAI,GAAIA,IAAKqC,EAAErC,GAAK,EAChC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKqC,EAAErC,GAAKuB,EAAEvB,GAClC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAClB,IAAKoI,EAAI,EAAGA,EAAI,GAAIA,IAClB/F,EAAErC,EAAEoI,IAAM9F,EAAEtC,GAAKC,EAAEmI,GAKvB,OADAuJ,GAAKI,EAAGxG,SAAS,IAAKlJ,GACf2P,CACT,CAwCA,SAASC,GAAiBpM,EAAGkM,EAAInP,EAAG2O,GAClC,IAAIvR,EACAkI,EAAI,IAAI7H,WAAW,IAAKiC,EAAI,IAAIjC,WAAW,IAC3CgD,EAAI,CAAChC,IAAMA,IAAMA,IAAMA,KACvB4G,EAAI,CAAC5G,IAAMA,IAAMA,IAAMA,KAE3B,GAAIuB,EAAI,GAAI,OAAQ,EAEpB,GA9CF,SAAmBrB,EAAG8B,GACpB,IAAI6E,EAAI7G,IAAM6Q,EAAM7Q,IAAM8Q,EAAM9Q,IAC5B+Q,EAAM/Q,IAAMgR,EAAOhR,IAAMiR,EAAOjR,IAChCkR,EAAOlR,IA2BX,OAzBAqG,EAASnG,EAAE,GAAIM,GACf0G,EAAYhH,EAAE,GAAI8B,GAClB6H,EAAEiH,EAAK5Q,EAAE,IACTmH,EAAE0J,EAAKD,EAAKpQ,GACZ0G,EAAE0J,EAAKA,EAAK5Q,EAAE,IACdiH,EAAE4J,EAAK7Q,EAAE,GAAI6Q,GAEblH,EAAEmH,EAAMD,GACRlH,EAAEoH,EAAMD,GACR3J,EAAE6J,EAAMD,EAAMD,GACd3J,EAAER,EAAGqK,EAAMJ,GACXzJ,EAAER,EAAGA,EAAGkK,GAERhH,EAAQlD,EAAGA,GACXQ,EAAER,EAAGA,EAAGiK,GACRzJ,EAAER,EAAGA,EAAGkK,GACR1J,EAAER,EAAGA,EAAGkK,GACR1J,EAAEnH,EAAE,GAAI2G,EAAGkK,GAEXlH,EAAEgH,EAAK3Q,EAAE,IACTmH,EAAEwJ,EAAKA,EAAKE,GACR/J,EAAS6J,EAAKC,IAAMzJ,EAAEnH,EAAE,GAAIA,EAAE,GAAIY,GAEtC+I,EAAEgH,EAAK3Q,EAAE,IACTmH,EAAEwJ,EAAKA,EAAKE,GACR/J,EAAS6J,EAAKC,IAAc,GAE5B7J,EAAS/G,EAAE,MAAS8B,EAAE,KAAK,GAAIoF,EAAElH,EAAE,GAAIK,EAAKL,EAAE,IAElDmH,EAAEnH,EAAE,GAAIA,EAAE,GAAIA,EAAE,IACT,EACT,CAUMiR,CAAUvK,EAAGsJ,GAAK,OAAQ,EAE9B,IAAKvR,EAAI,EAAGA,EAAI4C,EAAG5C,IAAK6F,EAAE7F,GAAK+R,EAAG/R,GAClC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK6F,EAAE7F,EAAE,IAAMuR,EAAGvR,GAUtC,GATA8Q,EAAYxO,EAAGuD,EAAGjD,GAClBiP,GAAOvP,GACP8O,GAAW/N,EAAG4E,EAAG3F,GAEjB+O,GAAWpJ,EAAG8J,EAAGxG,SAAS,KAC1BwF,EAAI1N,EAAG4E,GACPgJ,GAAK/I,EAAG7E,GAERT,GAAK,GACDE,EAAiBiP,EAAI,EAAG7J,EAAG,GAAI,CACjC,IAAKlI,EAAI,EAAGA,EAAI4C,EAAG5C,IAAK6F,EAAE7F,GAAK,EAC/B,OAAQ,CACV,CAEA,IAAKA,EAAI,EAAGA,EAAI4C,EAAG5C,IAAK6F,EAAE7F,GAAK+R,EAAG/R,EAAI,IACtC,OAAO4C,CACT,CAEA,IAYI6P,GAAoB,GACpBC,GAA6B,GAC7BC,GAA6B,GAiEjC,SAASC,GAAa1P,EAAGN,GACvB,GAhF8B,KAgF1BM,EAAEpF,OAAsC,MAAM,IAAIlP,MAAM,gBAC5D,GAhFgC,KAgF5BgU,EAAE9E,OAAwC,MAAM,IAAIlP,MAAM,iBAChE,CAOA,SAASikB,KACP,IAAK,IAAI7S,EAAI,EAAGA,EAAI8S,UAAUhV,OAAQkC,IACpC,KAAM8S,UAAU9S,aAAcK,YAC5B,MAAM,IAAIP,UAAU,kCAE1B,CAEA,SAASiT,GAAQvS,GACf,IAAK,IAAIR,EAAI,EAAGA,EAAIQ,EAAI1C,OAAQkC,IAAKQ,EAAIR,GAAK,CAChD,CAhFAP,EAAKuT,SAAW,CACdxN,qBAAsBA,EACtBW,kBAAmBA,EACnBF,cAAeA,EACfN,0BAA2BA,EAC3BK,sBAAuBA,EACvBkB,mBAAoBA,EACpBI,0BAA2BA,EAC3BzE,iBAAkBA,EAClBC,iBAAkBA,EAClB0E,iBAAkBA,EAClBC,sBAAuBA,EACvB4D,kBAAmBA,EACnBI,uBAAwBA,EACxBE,oBAAqBA,EACrBuC,mBAAoBA,EACpB+E,WAxsBF,SAAoB9P,EAAG0C,EAAG5F,EAAG2C,EAAGF,EAAGL,GACjC,IAAIa,EAAI,IAAI7C,WAAW,IAEvB,OADAsL,EAAoBzI,EAAGR,EAAGL,GACnB6L,EAAmB/K,EAAG0C,EAAG5F,EAAG2C,EAAGM,EACxC,EAqsBEgQ,gBAnsBF,SAAyBrN,EAAG1C,EAAGlD,EAAG2C,EAAGF,EAAGL,GACtC,IAAIa,EAAI,IAAI7C,WAAW,IAEvB,OADAsL,EAAoBzI,EAAGR,EAAGL,GACnB8L,EAAwBtI,EAAG1C,EAAGlD,EAAG2C,EAAGM,EAC7C,EAgsBEwI,mBAAoBA,EACpBoF,YAAaA,EACbgB,YAAaA,GACbR,oBAAqBA,GACrBW,iBAAkBA,GAElBkB,0BA1C8B,GA2C9BC,4BA1CgC,GA2ChCC,2BA1C+B,GA2C/BC,8BA1CkC,GA2ClCC,wBA1C4B,GA2C5BC,8BA1CkC,GA2ClCC,0BA1C8B,GA2C9BC,0BA1C8B,GA2C9BC,yBA1C6B,GA2C7BC,sBAlDgC,GAmDhCC,qBAlD+B,GAmD/BC,wBA1C4BR,GA2C5Bb,kBAAmBA,GACnBC,2BAA4BA,GAC5BC,2BAA4BA,GAC5BoB,sBA1C0B,GA2C1BC,kBA1CsB,GA4CtB3S,GAAIA,EACJU,EAAGA,EACH2P,EAAGA,GACHvJ,UAAWA,EACXI,YAAaA,EACbG,EAAGA,EACHF,EAAGA,EACH0C,EAAGA,EACHzC,EAAGA,EACH2C,QAASA,EACT2F,IAAKA,EACLrJ,SAAUA,EACViK,KAAMA,GACNP,WAAYA,GACZC,WAAYA,IA0Bd5R,EAAKwU,YAAc,SAASrR,GAC1B,IAAIxC,EAAI,IAAIC,WAAWuC,GAEvB,OADAnB,EAAYrB,EAAGwC,GACRxC,CACT,EAEAX,EAAKyU,UAAY,SAASC,EAAKC,EAAOja,GACpC0Y,GAAgBsB,EAAKC,EAAOja,GAC5ByY,GAAazY,EAAKia,GAGlB,IAFA,IAAIvO,EAAI,IAAIxF,WA3GmB,GA2GqB8T,EAAIrW,QACpDqF,EAAI,IAAI9C,WAAWwF,EAAE/H,QAChBkC,EAAI,EAAGA,EAAImU,EAAIrW,OAAQkC,IAAK6F,EAAE7F,EA7GR,IA6GwCmU,EAAInU,GAE3E,OADAwH,EAAiBrE,EAAG0C,EAAGA,EAAE/H,OAAQsW,EAAOja,GACjCgJ,EAAEoI,SA9GyB,GA+GpC,EAEA9L,EAAKyU,UAAUG,KAAO,SAASC,EAAKF,EAAOja,GACzC0Y,GAAgByB,EAAKF,EAAOja,GAC5ByY,GAAazY,EAAKia,GAGlB,IAFA,IAAIjR,EAAI,IAAI9C,WApHsB,GAoHqBiU,EAAIxW,QACvD+H,EAAI,IAAIxF,WAAW8C,EAAErF,QAChBkC,EAAI,EAAGA,EAAIsU,EAAIxW,OAAQkC,IAAKmD,EAAEnD,EAtHL,IAsHwCsU,EAAItU,GAC9E,OAAImD,EAAErF,OAAS,IAC2C,IAAtD2J,EAAsB5B,EAAG1C,EAAGA,EAAErF,OAAQsW,EAAOja,GADvB,KAEnB0L,EAAE0F,SA1HsB,GA2HjC,EAEA9L,EAAKyU,UAAUK,UA/HiB,GAgIhC9U,EAAKyU,UAAUM,YA/HmB,GAgIlC/U,EAAKyU,UAAUO,eA9HqB,GAgIpChV,EAAKiV,WAAa,SAAS9R,EAAGS,GAE5B,GADAwP,GAAgBjQ,EAAGS,GA/He,KAgI9BT,EAAE9E,OAA0C,MAAM,IAAIlP,MAAM,cAChE,GAlI4B,KAkIxByU,EAAEvF,OAAoC,MAAM,IAAIlP,MAAM,cAC1D,IAAIqZ,EAAI,IAAI5H,WAnIgB,IAqI5B,OADAgL,EAAkBpD,EAAGrF,EAAGS,GACjB4E,CACT,EAEAxI,EAAKiV,WAAWC,KAAO,SAAS/R,GAE9B,GADAiQ,GAAgBjQ,GAxIkB,KAyI9BA,EAAE9E,OAA0C,MAAM,IAAIlP,MAAM,cAChE,IAAIqZ,EAAI,IAAI5H,WA3IgB,IA6I5B,OADAoL,EAAuBxD,EAAGrF,GACnBqF,CACT,EAEAxI,EAAKiV,WAAWE,aA/IoB,GAgJpCnV,EAAKiV,WAAWG,mBAjJc,GAmJ9BpV,EAAK6U,IAAM,SAASH,EAAKC,EAAOU,EAAWC,GACzC,IAAI7R,EAAIzD,EAAK6U,IAAIU,OAAOF,EAAWC,GACnC,OAAOtV,EAAKyU,UAAUC,EAAKC,EAAOlR,EACpC,EAEAzD,EAAK6U,IAAIU,OAAS,SAASF,EAAWC,GACpClC,GAAgBiC,EAAWC,GAzE7B,SAAyBxD,EAAIC,GAC3B,GA/E8B,KA+E1BD,EAAGzT,OAAsC,MAAM,IAAIlP,MAAM,uBAC7D,GA/E8B,KA+E1B4iB,EAAG1T,OAAsC,MAAM,IAAIlP,MAAM,sBAC/D,CAuEEqmB,CAAgBH,EAAWC,GAC3B,IAAI7R,EAAI,IAAI7C,WAvJiB,IAyJ7B,OADAsL,EAAoBzI,EAAG4R,EAAWC,GAC3B7R,CACT,EAEAzD,EAAK6U,IAAIY,MAAQzV,EAAKyU,UAEtBzU,EAAK6U,IAAID,KAAO,SAASF,EAAKC,EAAOU,EAAWC,GAC9C,IAAI7R,EAAIzD,EAAK6U,IAAIU,OAAOF,EAAWC,GACnC,OAAOtV,EAAKyU,UAAUG,KAAKF,EAAKC,EAAOlR,EACzC,EAEAzD,EAAK6U,IAAID,KAAKa,MAAQzV,EAAKyU,UAAUG,KAErC5U,EAAK6U,IAAIa,QAAU,WACjB,IAAI5D,EAAK,IAAIlR,WAxKiB,IAyK1BmR,EAAK,IAAInR,WAxKiB,IA0K9B,OADAqL,EAAmB6F,EAAIC,GAChB,CAACsD,UAAWvD,EAAIwD,UAAWvD,EACpC,EAEA/R,EAAK6U,IAAIa,QAAQC,cAAgB,SAASL,GAExC,GADAlC,GAAgBkC,GA9Kc,KA+K1BA,EAAUjX,OACZ,MAAM,IAAIlP,MAAM,uBAClB,IAAI2iB,EAAK,IAAIlR,WAlLiB,IAoL9B,OADAoL,EAAuB8F,EAAIwD,GACpB,CAACD,UAAWvD,EAAIwD,UAAW,IAAI1U,WAAW0U,GACnD,EAEAtV,EAAK6U,IAAIe,gBAvLuB,GAwLhC5V,EAAK6U,IAAIgB,gBAvLuB,GAwLhC7V,EAAK6U,IAAIiB,gBAvLsB,GAwL/B9V,EAAK6U,IAAIE,YA/LyB,GAgMlC/U,EAAK6U,IAAIG,eAAiBhV,EAAKyU,UAAUO,eAEzChV,EAAK+V,KAAO,SAASrB,EAAKY,GAExB,GADAlC,GAAgBsB,EAAKY,GACjBA,EAAUjX,SAAW6U,GACvB,MAAM,IAAI/jB,MAAM,uBAClB,IAAI6mB,EAAY,IAAIpV,WAAWoS,GAAkB0B,EAAIrW,QAErD,OADAgU,GAAY2D,EAAWtB,EAAKA,EAAIrW,OAAQiX,GACjCU,CACT,EAEAhW,EAAK+V,KAAKnB,KAAO,SAASoB,EAAWX,GAEnC,GADAjC,GAAgB4C,EAAWX,GACvBA,EAAUhX,SAAW4U,GACvB,MAAM,IAAI9jB,MAAM,uBAClB,IAAI8mB,EAAM,IAAIrV,WAAWoV,EAAU3X,QAC/B6X,EAAO1D,GAAiByD,EAAKD,EAAWA,EAAU3X,OAAQgX,GAC9D,GAAIa,EAAO,EAAG,OAAO,KAErB,IADA,IAAI9P,EAAI,IAAIxF,WAAWsV,GACd3V,EAAI,EAAGA,EAAI6F,EAAE/H,OAAQkC,IAAK6F,EAAE7F,GAAK0V,EAAI1V,GAC9C,OAAO6F,CACT,EAEApG,EAAK+V,KAAKI,SAAW,SAASzB,EAAKY,GAGjC,IAFA,IAAIU,EAAYhW,EAAK+V,KAAKrB,EAAKY,GAC3Bc,EAAM,IAAIxV,WAAWoS,IAChBzS,EAAI,EAAGA,EAAI6V,EAAI/X,OAAQkC,IAAK6V,EAAI7V,GAAKyV,EAAUzV,GACxD,OAAO6V,CACT,EAEApW,EAAK+V,KAAKI,SAASE,OAAS,SAAS3B,EAAK0B,EAAKf,GAE7C,GADAjC,GAAgBsB,EAAK0B,EAAKf,GACtBe,EAAI/X,SAAW2U,GACjB,MAAM,IAAI7jB,MAAM,sBAClB,GAAIkmB,EAAUhX,SAAW4U,GACvB,MAAM,IAAI9jB,MAAM,uBAClB,IAEIoR,EAFA+R,EAAK,IAAI1R,WAAWoS,GAAoB0B,EAAIrW,QAC5C+H,EAAI,IAAIxF,WAAWoS,GAAoB0B,EAAIrW,QAE/C,IAAKkC,EAAI,EAAGA,EAAIyS,GAAmBzS,IAAK+R,EAAG/R,GAAK6V,EAAI7V,GACpD,IAAKA,EAAI,EAAGA,EAAImU,EAAIrW,OAAQkC,IAAK+R,EAAG/R,EAAEyS,IAAqB0B,EAAInU,GAC/D,OAAQiS,GAAiBpM,EAAGkM,EAAIA,EAAGjU,OAAQgX,IAAc,CAC3D,EAEArV,EAAK+V,KAAKL,QAAU,WAClB,IAAI5D,EAAK,IAAIlR,WAAWqS,IACpBlB,EAAK,IAAInR,WAAWsS,IAExB,OADArB,GAAoBC,EAAIC,GACjB,CAACsD,UAAWvD,EAAIwD,UAAWvD,EACpC,EAEA/R,EAAK+V,KAAKL,QAAQC,cAAgB,SAASL,GAEzC,GADAlC,GAAgBkC,GACZA,EAAUjX,SAAW6U,GACvB,MAAM,IAAI/jB,MAAM,uBAElB,IADA,IAAI2iB,EAAK,IAAIlR,WAAWqS,IACf1S,EAAI,EAAGA,EAAIuR,EAAGzT,OAAQkC,IAAKuR,EAAGvR,GAAK+U,EAAU,GAAG/U,GACzD,MAAO,CAAC8U,UAAWvD,EAAIwD,UAAW,IAAI1U,WAAW0U,GACnD,EAEAtV,EAAK+V,KAAKL,QAAQY,SAAW,SAASC,GAEpC,GADAnD,GAAgBmD,GA/OU,KAgPtBA,EAAKlY,OACP,MAAM,IAAIlP,MAAM,iBAGlB,IAFA,IAAI2iB,EAAK,IAAIlR,WAAWqS,IACpBlB,EAAK,IAAInR,WAAWsS,IACf3S,EAAI,EAAGA,EAAI,GAAIA,IAAKwR,EAAGxR,GAAKgW,EAAKhW,GAE1C,OADAsR,GAAoBC,EAAIC,GAAI,GACrB,CAACsD,UAAWvD,EAAIwD,UAAWvD,EACpC,EAEA/R,EAAK+V,KAAKH,gBAAkB3C,GAC5BjT,EAAK+V,KAAKF,gBAAkB3C,GAC5BlT,EAAK+V,KAAKS,WA3PkB,GA4P5BxW,EAAK+V,KAAKU,gBAAkBzD,GAE5BhT,EAAK0W,KAAO,SAAShC,GACnBtB,GAAgBsB,GAChB,IAAI7R,EAAI,IAAIjC,WA/PU,IAiQtB,OADAyQ,EAAYxO,EAAG6R,EAAKA,EAAIrW,QACjBwE,CACT,EAEA7C,EAAK0W,KAAKC,WApQc,GAsQxB3W,EAAKqW,OAAS,SAASzT,EAAGK,GAGxB,OAFAmQ,GAAgBxQ,EAAGK,GAEF,IAAbL,EAAEvE,QAA6B,IAAb4E,EAAE5E,QACpBuE,EAAEvE,SAAW4E,EAAE5E,QACkB,IAA7B0E,EAAGH,EAAG,EAAGK,EAAG,EAAGL,EAAEvE,OAC3B,EAEA2B,EAAK4W,QAAU,SAASC,GACtB7U,EAAc6U,CAChB,EAEA,WAGE,IAAIC,EAAyB,oBAATC,KAAwBA,KAAKD,QAAUC,KAAKC,SAAY,KACxEF,GAAUA,EAAOG,gBAGnBjX,EAAK4W,SAAQ,SAAShU,EAAGO,GACvB,IAAI5C,EAAG6H,EAAI,IAAIxH,WAAWuC,GAC1B,IAAK5C,EAAI,EAAGA,EAAI4C,EAAG5C,GAHT,MAIRuW,EAAOG,gBAAgB7O,EAAE0D,SAASvL,EAAGA,EAAI8H,KAAK6O,IAAI/T,EAAI5C,EAJ9C,SAMV,IAAKA,EAAI,EAAGA,EAAI4C,EAAG5C,IAAKqC,EAAErC,GAAK6H,EAAE7H,GACjC+S,GAAQlL,EACV,KAGA0O,EAAS,EAAQ,QACHA,EAAOtC,aACnBxU,EAAK4W,SAAQ,SAAShU,EAAGO,GACvB,IAAI5C,EAAG6H,EAAI0O,EAAOtC,YAAYrR,GAC9B,IAAK5C,EAAI,EAAGA,EAAI4C,EAAG5C,IAAKqC,EAAErC,GAAK6H,EAAE7H,GACjC+S,GAAQlL,EACV,GAGL,CA1BD,EA4BC,CAt1ED,CAs1EoCtI,EAAOC,QAAUD,EAAOC,QAAWgX,KAAK/W,KAAO+W,KAAK/W,MAAQ,CAAC,E,8BCr1EjG1R,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQ/J,mBAAgB,EACxB,IAAIohB,EAAmB,EAAQ,MAC/B9oB,OAAO6oB,eAAepX,EAAS,gBAAiB,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAOwf,EAAiBphB,aAAe,G,kFCH9H,IAAIshB,gBAAmB9oB,MAAQA,KAAK8oB,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,EACxD,EACAjpB,OAAO6oB,eAAepX,QAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,QAAQ/J,mBAAgB,EACxB,MAAMyhB,QAAU,oBAAQ,MAClBC,YAAcJ,gBAAgB,oBAAQ,MAC5C,IAAI,EAAIG,QAAQ3lB,UACZ,IACIC,KAAK,8CAEK,CAAd,MAAOC,GAAO,CAElB,MAAMgE,cACF7H,YAAYunB,GACRlnB,KAAKumB,YAAc,GACnBvmB,KAAKknB,QAAUA,EAAUlnB,KAAKmpB,wBAAwBjC,GAAWlnB,KAAKopB,gBACtEppB,KAAK6D,WAAY,EAAIolB,QAAQI,aAAarpB,KAAKknB,QAAQL,UAC3D,CACAuC,gBACI,OAAOF,YAAYI,QAAQjD,IAAIa,SACnC,CACAiC,wBAAwBjC,GACpB,MAAO,CACHL,WAAW,EAAIoC,QAAQ7gB,gBAAgB8e,EAAQL,WAC/CC,WAAW,EAAImC,QAAQ7gB,gBAAgB8e,EAAQJ,WAEvD,CACAyC,cACI,MAAM3Q,EAAS,IAAIxG,WAAWpS,KAAKumB,aACnC,OAAO+B,OAAOG,gBAAgB7P,EAClC,CACAzQ,QAAQ9H,EAASmpB,GACb,MAAMC,GAAiB,IAAIC,aAAc1jB,OAAO3F,GAC1C8lB,EAAQnmB,KAAKupB,cACbI,EAAYT,YAAYI,QAAQjD,IAAIoD,EAAgBtD,EAAOqD,EAAmBxpB,KAAKknB,QAAQJ,WACjG,OAAO,EAAImC,QAAQW,mBAAmBzD,EAAOwD,EACjD,CACA3gB,QAAQ3I,EAASwpB,GACb,MAAO1D,EAAO2D,IAAmB,EAAIb,QAAQc,oBAAoB1pB,EAASL,KAAKumB,aACzEyD,EAAYd,YAAYI,QAAQjD,IAAID,KAAK0D,EAAiB3D,EAAO0D,EAAiB7pB,KAAKknB,QAAQJ,WACrG,IAAKkD,EACD,MAAM,IAAIrpB,MAAM,oBAEpB,OAAO,IAAIspB,aAAchhB,OAAO+gB,EACpC,CACAte,mBACI,MAAO,CACHmb,WAAW,EAAIoC,QAAQI,aAAarpB,KAAKknB,QAAQL,WACjDC,WAAW,EAAImC,QAAQI,aAAarpB,KAAKknB,QAAQJ,WAEzD,EAEJvV,QAAQ/J,cAAgBA,a,oCCrDxB,IAAI0iB,EAAmBlqB,MAAQA,KAAKkqB,kBAAqBpqB,OAAOqqB,OAAS,SAAUhV,EAAGyC,EAAG3C,EAAGmV,QAC7EC,IAAPD,IAAkBA,EAAKnV,GAC3B,IAAIqV,EAAOxqB,OAAOyqB,yBAAyB3S,EAAG3C,GACzCqV,KAAS,QAASA,GAAQ1S,EAAEoR,WAAasB,EAAKE,UAAYF,EAAKG,gBAClEH,EAAO,CAAEzB,YAAY,EAAMzf,IAAK,WAAa,OAAOwO,EAAE3C,EAAI,IAE5DnV,OAAO6oB,eAAexT,EAAGiV,EAAIE,EAChC,EAAI,SAAUnV,EAAGyC,EAAG3C,EAAGmV,QACTC,IAAPD,IAAkBA,EAAKnV,GAC3BE,EAAEiV,GAAMxS,EAAE3C,EACb,GACGyV,EAAgB1qB,MAAQA,KAAK0qB,cAAiB,SAAS9S,EAAGrG,GAC1D,IAAK,IAAI6D,KAAKwC,EAAa,YAANxC,GAAoBtV,OAAOG,UAAU0qB,eAAe1X,KAAK1B,EAAS6D,IAAI8U,EAAgB3Y,EAASqG,EAAGxC,EAC3H,EACAtV,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDopB,EAAa,EAAQ,MAAanZ,GAClCmZ,EAAa,EAAQ,MAAanZ,GAClCmZ,EAAa,EAAQ,MAAYnZ,E,4BCdjC,IAAWnQ,EAHXtB,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQnQ,WAAQ,GAELA,EAGAmQ,EAAQnQ,QAAUmQ,EAAQnQ,MAAQ,CAAC,IAF3B,QAAI,OACnBA,EAAe,QAAI,I,4BCLvBtB,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,G,oCCAtD,IAAI4oB,EAAmBlqB,MAAQA,KAAKkqB,kBAAqBpqB,OAAOqqB,OAAS,SAAUhV,EAAGyC,EAAG3C,EAAGmV,QAC7EC,IAAPD,IAAkBA,EAAKnV,GAC3B,IAAIqV,EAAOxqB,OAAOyqB,yBAAyB3S,EAAG3C,GACzCqV,KAAS,QAASA,GAAQ1S,EAAEoR,WAAasB,EAAKE,UAAYF,EAAKG,gBAClEH,EAAO,CAAEzB,YAAY,EAAMzf,IAAK,WAAa,OAAOwO,EAAE3C,EAAI,IAE5DnV,OAAO6oB,eAAexT,EAAGiV,EAAIE,EAChC,EAAI,SAAUnV,EAAGyC,EAAG3C,EAAGmV,QACTC,IAAPD,IAAkBA,EAAKnV,GAC3BE,EAAEiV,GAAMxS,EAAE3C,EACb,GACGyV,EAAgB1qB,MAAQA,KAAK0qB,cAAiB,SAAS9S,EAAGrG,GAC1D,IAAK,IAAI6D,KAAKwC,EAAa,YAANxC,GAAoBtV,OAAOG,UAAU0qB,eAAe1X,KAAK1B,EAAS6D,IAAI8U,EAAgB3Y,EAASqG,EAAGxC,EAC3H,EACAtV,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDopB,EAAa,EAAQ,MAAcnZ,GACnCmZ,EAAa,EAAQ,MAAsBnZ,E,4BChB3CzR,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,G,oCCAtD,IAAI4oB,EAAmBlqB,MAAQA,KAAKkqB,kBAAqBpqB,OAAOqqB,OAAS,SAAUhV,EAAGyC,EAAG3C,EAAGmV,QAC7EC,IAAPD,IAAkBA,EAAKnV,GAC3B,IAAIqV,EAAOxqB,OAAOyqB,yBAAyB3S,EAAG3C,GACzCqV,KAAS,QAASA,GAAQ1S,EAAEoR,WAAasB,EAAKE,UAAYF,EAAKG,gBAClEH,EAAO,CAAEzB,YAAY,EAAMzf,IAAK,WAAa,OAAOwO,EAAE3C,EAAI,IAE5DnV,OAAO6oB,eAAexT,EAAGiV,EAAIE,EAChC,EAAI,SAAUnV,EAAGyC,EAAG3C,EAAGmV,QACTC,IAAPD,IAAkBA,EAAKnV,GAC3BE,EAAEiV,GAAMxS,EAAE3C,EACb,GACGyV,EAAgB1qB,MAAQA,KAAK0qB,cAAiB,SAAS9S,EAAGrG,GAC1D,IAAK,IAAI6D,KAAKwC,EAAa,YAANxC,GAAoBtV,OAAOG,UAAU0qB,eAAe1X,KAAK1B,EAAS6D,IAAI8U,EAAgB3Y,EAASqG,EAAGxC,EAC3H,EACAtV,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQnQ,WAAQ,EAChBspB,EAAa,EAAQ,MAAkBnZ,GACvCmZ,EAAa,EAAQ,MAAqBnZ,GAC1C,IAAIqZ,EAAU,EAAQ,MACtB9qB,OAAO6oB,eAAepX,EAAS,QAAS,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAOwhB,EAAQxpB,KAAO,G,oCCnBrG,IAAI8oB,EAAmBlqB,MAAQA,KAAKkqB,kBAAqBpqB,OAAOqqB,OAAS,SAAUhV,EAAGyC,EAAG3C,EAAGmV,QAC7EC,IAAPD,IAAkBA,EAAKnV,GAC3B,IAAIqV,EAAOxqB,OAAOyqB,yBAAyB3S,EAAG3C,GACzCqV,KAAS,QAASA,GAAQ1S,EAAEoR,WAAasB,EAAKE,UAAYF,EAAKG,gBAClEH,EAAO,CAAEzB,YAAY,EAAMzf,IAAK,WAAa,OAAOwO,EAAE3C,EAAI,IAE5DnV,OAAO6oB,eAAexT,EAAGiV,EAAIE,EAChC,EAAI,SAAUnV,EAAGyC,EAAG3C,EAAGmV,QACTC,IAAPD,IAAkBA,EAAKnV,GAC3BE,EAAEiV,GAAMxS,EAAE3C,EACb,GACGyV,EAAgB1qB,MAAQA,KAAK0qB,cAAiB,SAAS9S,EAAGrG,GAC1D,IAAK,IAAI6D,KAAKwC,EAAa,YAANxC,GAAoBtV,OAAOG,UAAU0qB,eAAe1X,KAAK1B,EAAS6D,IAAI8U,EAAgB3Y,EAASqG,EAAGxC,EAC3H,EACAtV,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDopB,EAAa,EAAQ,MAAmBnZ,GACxCmZ,EAAa,EAAQ,MAAsBnZ,E,4BCH3C,IAAWsZ,EAVArpB,EAHX1B,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQsZ,yBAA2BtZ,EAAQ/P,+BAA4B,GAE5DA,EAQoB+P,EAAQ/P,4BAA8B+P,EAAQ/P,0BAA4B,CAAC,IAP5EA,EAAyC,cAAI,GAAK,gBAC5EA,EAA0BA,EAA6C,kBAAI,GAAK,oBAChFA,EAA0BA,EAAoD,yBAAI,GAAK,2BACvFA,EAA0BA,EAAkD,uBAAI,GAAK,yBACrFA,EAA0BA,EAA6C,kBAAI,KAAO,oBAClFA,EAA0BA,EAA8C,mBAAI,KAAO,qBACnFA,EAA0BA,EAAgD,qBAAI,KAAO,wBAG9EqpB,EAGmBtZ,EAAQsZ,2BAA6BtZ,EAAQsZ,yBAA2B,CAAC,IAF1EA,EAAwC,cAAI,GAAK,gBAC1EA,EAAyBA,EAA+C,qBAAI,KAAO,sB,8BCfvF/qB,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQ/P,+BAA4B,EACpC,IAAIspB,EAAkB,EAAQ,MAC9BhrB,OAAO6oB,eAAepX,EAAS,4BAA6B,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAO0hB,EAAgBtpB,yBAA2B,G,8BCHrJ1B,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQhP,kCAA+B,EACvC,IAAIwoB,EAAkC,EAAQ,MAC9CjrB,OAAO6oB,eAAepX,EAAS,+BAAgC,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAO2hB,EAAgCxoB,4BAA8B,G,4BCA3K,IAAWA,EAHXzC,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQhP,kCAA+B,GAE5BA,EAMuBgP,EAAQhP,+BAAiCgP,EAAQhP,6BAA+B,CAAC,IALlFA,EAA4C,cAAI,GAAK,gBAClFA,EAA6BA,EAAgD,kBAAI,GAAK,oBACtFA,EAA6BA,EAAgD,kBAAI,KAAO,oBACxFA,EAA6BA,EAAiD,mBAAI,KAAO,qBACzFA,EAA6BA,EAAmD,qBAAI,KAAO,sB,oCCR/F,IAAIumB,EAAmB9oB,MAAQA,KAAK8oB,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,EACxD,EACAjpB,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQxL,YAAS,EACjB,MAAMilB,EAAmBlC,EAAgB,EAAQ,MA8CjDvX,EAAQxL,OAAS,CACbC,OAjCJ,SAAgB1E,EAAO2pB,GAAU,GAC7B,IAAIC,EAUJ,OATI5pB,aAAiB8Q,WACjB8Y,EAAa5pB,GAGQ,iBAAVA,IACPA,EAAQwB,KAAKC,UAAUzB,IAE3B4pB,EAAaF,EAAiB1B,QAAQxX,WAAWxQ,IAtBzD,SAA0BA,EAAO2pB,GAC7B,MAAME,EAAUH,EAAiB1B,QAAQvW,aAAazR,GACtD,OAAK2pB,EAGE/Y,mBAAmBiZ,GAFfA,CAGf,CAkBWC,CAAiBF,EAAYD,EACxC,EAsBIhiB,OArBJ,SAAgB3H,EAAO2pB,GAAU,GAC7B,MAAMI,EApBV,SAA4B/pB,EAAO2pB,GAI/B,OAHIA,IACA3pB,EAAQoR,mBAAmBpR,IAExB0pB,EAAiB1B,QAAQtW,aAAa1R,EACjD,CAe8BgqB,CAAmBhqB,EAAO2pB,GACpD,MAAO,CACHjmB,SAAQ,IACGgmB,EAAiB1B,QAAQhX,WAAW+Y,GAE/CE,WACI,IACI,OAAOzoB,KAAKuD,MAAM2kB,EAAiB1B,QAAQhX,WAAW+Y,GAI1D,CAFA,MAAOnlB,GACH,OAAO,IACX,CACJ,EACAgD,aAAY,IACDmiB,EAGnB,E,4BClDAvrB,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQnJ,eAAiBmJ,EAAQ8X,YAAc9X,EAAQwY,mBAAqBxY,EAAQqY,uBAAoB,EAOxGrY,EAAQqY,kBANR,SAA2B4B,EAASC,GAChC,MAAMC,EAAc,IAAItZ,WAAWoZ,EAAQ3b,OAAS4b,EAAQ5b,QAG5D,OAFA6b,EAAYnjB,IAAIijB,GAChBE,EAAYnjB,IAAIkjB,EAASD,EAAQ3b,QAC1B6b,CACX,EAUAna,EAAQwY,mBARR,SAA4B4B,EAAOC,GAC/B,GAAIA,GAASD,EAAM9b,OACf,MAAM,IAAIlP,MAAM,0BAIpB,MAAO,CAFWgrB,EAAMvc,MAAM,EAAGwc,GACfD,EAAMvc,MAAMwc,GAElC,EASAra,EAAQ8X,YAPR,SAAqBwC,GACjB,IAAIC,EAAY,GAIhB,OAHAD,EAAU/jB,SAAQikB,IACdD,IAAc,KAAc,IAAPC,GAAa/mB,SAAS,KAAKoK,OAAO,EAAE,IAEtD0c,CACX,EAYAva,EAAQnJ,eAVR,SAAwB0jB,GACpB,GAAIA,EAAUjc,OAAS,GAAM,EACzB,MAAM,IAAIlP,MAAM,kBAAkBmrB,mBAEtC,MAAM1oB,EAAS,IAAIgP,WAAW0Z,EAAUjc,OAAS,GACjD,IAAK,IAAIkC,EAAI,EAAGA,EAAI+Z,EAAUjc,OAAQkC,GAAK,EACvC3O,EAAO2O,EAAI,GAAKia,SAASF,EAAU1c,MAAM2C,EAAGA,EAAI,GAAI,IAExD,OAAO3O,CACX,C,8BCnCAtD,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQjO,OAASiO,EAAQnJ,eAAiBmJ,EAAQ8X,YAAc9X,EAAQwY,mBAAqBxY,EAAQqY,kBAAoBrY,EAAQxL,YAAS,EAC1I,IAAIkmB,EAAW,EAAQ,MACvBnsB,OAAO6oB,eAAepX,EAAS,SAAU,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAO6iB,EAASlmB,MAAQ,IACxG,IAAImmB,EAAW,EAAQ,MACvBpsB,OAAO6oB,eAAepX,EAAS,oBAAqB,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAO8iB,EAAStC,iBAAmB,IAC9H9pB,OAAO6oB,eAAepX,EAAS,qBAAsB,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAO8iB,EAASnC,kBAAoB,IAChIjqB,OAAO6oB,eAAepX,EAAS,cAAe,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAO8iB,EAAS7C,WAAa,IAClHvpB,OAAO6oB,eAAepX,EAAS,iBAAkB,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAO8iB,EAAS9jB,cAAgB,IACxH,IAAI+jB,EAAY,EAAQ,MACxBrsB,OAAO6oB,eAAepX,EAAS,SAAU,CAAEsX,YAAY,EAAMzf,IAAK,WAAc,OAAO+iB,EAAU7oB,MAAQ,G,4BCVzGxD,OAAO6oB,eAAepX,EAAS,aAAc,CAAEjQ,OAAO,IACtDiQ,EAAQjO,YAAS,EAIjBiO,EAAQjO,OAHR,WACI,MAA2B,oBAAZ8oB,SAA+C,MAApBA,QAAQC,UAA6C,MAAzBD,QAAQC,SAASC,IAC3F,C,4DCJIC,yBAA2B,CAAC,EAGhC,SAASC,oBAAoBC,GAE5B,IAAIC,EAAeH,yBAAyBE,GAC5C,QAAqBpC,IAAjBqC,EACH,OAAOA,EAAanb,QAGrB,IAAID,EAASib,yBAAyBE,GAAY,CAGjDlb,QAAS,CAAC,GAOX,OAHAob,oBAAoBF,GAAUxZ,KAAK3B,EAAOC,QAASD,EAAQA,EAAOC,QAASib,qBAGpElb,EAAOC,OACf,CCnBA,IAAIqb,oBAAsBJ,oBAAoB,M","sources":["webpack://TonConnectSDK/./src/errors/dapp/dapp-metadata.error.ts","webpack://TonConnectSDK/./src/errors/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/index.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-content-error.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/manifest-not-found.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/connect/user-rejects.error.ts","webpack://TonConnectSDK/./src/errors/protocol/events/index.ts","webpack://TonConnectSDK/./src/errors/protocol/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/bad-request.error.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/index.ts","webpack://TonConnectSDK/./src/errors/protocol/responses/unknown-app.error.ts","webpack://TonConnectSDK/./src/errors/storage/index.ts","webpack://TonConnectSDK/./src/errors/storage/localstorage-not-found.error.ts","webpack://TonConnectSDK/./src/errors/ton-connect.error.ts","webpack://TonConnectSDK/./src/errors/unknown.error.ts","webpack://TonConnectSDK/./src/errors/wallet/index.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-already-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-connected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-injected.error.ts","webpack://TonConnectSDK/./src/errors/wallet/wallet-not-support-feature.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/fetch-wallets.error.ts","webpack://TonConnectSDK/./src/errors/wallets-manager/index.ts","webpack://TonConnectSDK/./src/index.ts","webpack://TonConnectSDK/./src/models/index.ts","webpack://TonConnectSDK/./src/models/methods/index.ts","webpack://TonConnectSDK/./src/models/wallet/index.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-connection-source.ts","webpack://TonConnectSDK/./src/models/wallet/wallet-info.ts","webpack://TonConnectSDK/./src/parsers/connect-errors-parser.ts","webpack://TonConnectSDK/./src/parsers/rpc-parser.ts","webpack://TonConnectSDK/./src/parsers/send-transaction-parser.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-gateway.ts","webpack://TonConnectSDK/./src/provider/bridge/bridge-provider.ts","webpack://TonConnectSDK/./src/provider/injected/injected-provider.ts","webpack://TonConnectSDK/./src/storage/bridge-connection-storage.ts","webpack://TonConnectSDK/./src/storage/default-storage.ts","webpack://TonConnectSDK/./src/storage/http-bridge-gateway-storage.ts","webpack://TonConnectSDK/./src/ton-connect.ts","webpack://TonConnectSDK/./src/utils/url.ts","webpack://TonConnectSDK/./src/utils/web-api.ts","webpack://TonConnectSDK/./src/wallets-list-manager.ts","webpack://TonConnectSDK/../../node_modules/tweetnacl-util/nacl-util.js","webpack://TonConnectSDK/../../node_modules/tweetnacl/nacl-fast.js","webpack://TonConnectSDK/../protocol/lib/crypto/index.js","webpack://TonConnectSDK/../protocol/lib/crypto/session-crypto.js","webpack://TonConnectSDK/../protocol/lib/index.js","webpack://TonConnectSDK/../protocol/lib/models/CHAIN.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/connect-request/index.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/index.js","webpack://TonConnectSDK/../protocol/lib/models/app-message/request/index.js","webpack://TonConnectSDK/../protocol/lib/models/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-event/connect-event.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-event/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-response/index.js","webpack://TonConnectSDK/../protocol/lib/models/wallet-message/wallet-response/send-transaction-rpc-response.js","webpack://TonConnectSDK/../protocol/lib/utils/base64.js","webpack://TonConnectSDK/../protocol/lib/utils/binary.js","webpack://TonConnectSDK/../protocol/lib/utils/index.js","webpack://TonConnectSDK/../protocol/lib/utils/web-api.js","webpack://TonConnectSDK/webpack/bootstrap","webpack://TonConnectSDK/webpack/startup"],"sourcesContent":["import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nexport class DappMetadataError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n","export * from './protocol';\nexport * from './wallet';\nexport * from './storage';\nexport * from './wallets-manager';\nexport { TonConnectError } from './ton-connect.error';\nexport { UnknownError } from './unknown.error';\n","export { UserRejectsError } from 'src/errors/protocol/events/connect/user-rejects.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when passed manifest contains errors.\n */\nexport class ManifestContentErrorError extends TonConnectError {\n private static additionalMessage =\n '\\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\n constructor(message?: string) {\n super(message || '' + ManifestContentErrorError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nexport class ManifestNotFoundError extends TonConnectError {\n private static additionalMessage =\n '\\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\n constructor(message?: string) {\n super(message || '' + ManifestNotFoundError.additionalMessage);\n\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when user rejects the action in the wallet.\n */\nexport class UserRejectsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n","export * from './connect';\n","export * from './events';\nexport * from './responses';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when request to the wallet contains errors.\n */\nexport class BadRequestError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n","export { BadRequestError } from './bad-request.error';\nexport { UnknownAppError } from './unknown-app.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\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: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n","export { LocalstorageNotFoundError } from './localstorage-not-found.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\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: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\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 */\nexport class TonConnectError extends Error {\n private static prefix = '[TON_CONNECT_SDK_ERROR]';\n\n constructor(message?: string, options?: ErrorOptions) {\n if (message) {\n message = TonConnectError.prefix + ' ' + message;\n }\n super(message, options);\n\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Unhanded unknown error.\n */\nexport class UnknownError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n","export { WalletAlreadyConnectedError } from './wallet-already-connected.error';\nexport { WalletNotConnectedError } from './wallet-not-connected.error';\nexport { WalletNotInjectedError } from './wallet-not-injected.error';\n","import { TonConnectError } from 'src/errors/ton-connect.error';\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 */\nexport class WalletAlreadyConnectedError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\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: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\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: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nexport class WalletNotSupportFeatureError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n","import { TonConnectError } from 'src/errors/ton-connect.error';\n\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nexport class FetchWalletsError extends TonConnectError {\n constructor(...args: ConstructorParameters<typeof TonConnectError>) {\n super(...args);\n\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n","export { FetchWalletsError } from './fetch-wallets.error';\n","export * from './ton-connect';\nexport * from './models';\nexport * from './errors';\nexport { IStorage } from './storage/models/storage.interface';\nexport { TonConnect as default } from './ton-connect';\nexport { ITonConnect } from './ton-connect.interface';\nexport { CHAIN, DeviceInfo } from '@tonconnect/protocol';\n","export * from './wallet';\nexport * from './methods';\nexport { DappMetadata } from './dapp/dapp-metadata';\nexport { TonConnectOptions } from './ton-connect-options';\n","export * from './connect';\nexport * from './send-transaction';\n","export type { Account } from './account';\nexport type { Wallet } from './wallet';\nexport type {\n WalletConnectionSource,\n WalletConnectionSourceHTTP,\n WalletConnectionSourceJS\n} from './wallet-connection-source';\nexport {\n WalletInfo,\n WalletInfoInjected,\n WalletInfoRemote,\n isWalletInfoInjected\n} from './wallet-info';\n","export type WalletConnectionSource = WalletConnectionSourceHTTP | WalletConnectionSourceJS;\n\nexport interface WalletConnectionSourceHTTP {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletConnectionSourceJS {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n}\n\nexport function isWalletConnectionSourceJS(\n value: WalletConnectionSource\n): value is WalletConnectionSourceJS {\n return 'jsBridgeKey' in value;\n}\n","export interface WalletInfoBase {\n /**\n * Name of the wallet.\n */\n name: string;\n\n /**\n * Url to the icon of the wallet. Resolution 288×288px. On non-transparent background, without rounded corners. PNG format.\n */\n imageUrl: string;\n\n /**\n * Will be used in the protocol later.\n */\n tondns?: string;\n\n /**\n * Info or landing page of your wallet. May be useful for TON newcomers.\n */\n aboutUrl: string;\n}\n\nexport interface WalletInfoRemote extends WalletInfoBase {\n /**\n * Base part of the wallet universal url. The link should support [Ton Connect parameters]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#universal-link}.\n */\n universalLink: string;\n\n /**\n * Url of the wallet's implementation of the [HTTP bridge]{@link https://github.com/ton-connect/docs/blob/main/bridge.md#http-bridge}.\n */\n bridgeUrl: string;\n}\n\nexport interface WalletInfoInjected extends WalletInfoBase {\n /**\n * If the wallet handles JS Bridge connection, specifies the binding for the bridge object accessible through window. Example: the key \"tonkeeper\" means the bridge can be accessed as window.tonkeeper.\n */\n jsBridgeKey: string;\n\n /**\n * Indicates if the wallet currently is injected to the webpage.\n */\n injected: boolean;\n\n /**\n * Indicates if the dapp is opened inside this wallet's browser.\n */\n embedded: boolean;\n}\n\nexport type WalletInfo =\n | WalletInfoRemote\n | WalletInfoInjected\n | (WalletInfoRemote & WalletInfoInjected);\n\nexport interface WalletInfoDTOBase {\n name: string;\n image: string;\n tondns?: string;\n about_url: string;\n}\n\nexport interface WalletInfoRemoteDTO extends WalletInfoDTOBase {\n universal_url: string;\n bridge_url: string;\n}\n\nexport interface WalletInfoInjectedDTO extends WalletInfoDTOBase {\n js_bridge_key: string;\n}\n\nexport type WalletInfoDTO =\n | WalletInfoRemoteDTO\n | WalletInfoInjectedDTO\n | (WalletInfoRemoteDTO & WalletInfoInjectedDTO);\n\nexport function isWalletInfoInjected(value: WalletInfo): value is WalletInfoInjected {\n return 'jsBridgeKey' in value;\n}\n","import { BadRequestError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { CONNECT_EVENT_ERROR_CODES, ConnectEventError } from '@tonconnect/protocol';\n\nconst connectEventErrorsCodes: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> =\n {\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 };\n\nclass ConnectErrorsParser {\n parseError(error: ConnectEventError['payload']): TonConnectError {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n\n return new ErrorConstructor(error.message);\n }\n}\n\nexport const connectErrorsParser = new ConnectErrorsParser();\n","import {\n AppRequest,\n RpcMethod,\n WalletResponse,\n WalletResponseError,\n WalletResponseSuccess\n} from '@tonconnect/protocol';\nimport { WithoutId } from 'src/utils/types';\n\nexport abstract class RpcParser<T extends RpcMethod> {\n abstract convertToRpcRequest(...args: unknown[]): WithoutId<AppRequest<T>>;\n\n abstract convertFromRpcResponse(rpcResponse: WithoutId<WalletResponseSuccess<T>>): unknown;\n\n abstract parseAndThrowError(response: WithoutId<WalletResponseError<T>>): never;\n\n public isError(\n response: WithoutId<WalletResponse<T>>\n ): response is WithoutId<WalletResponseError<T>> {\n return 'error' in response;\n }\n}\n","import {\n CONNECT_EVENT_ERROR_CODES,\n SEND_TRANSACTION_ERROR_CODES,\n SendTransactionRpcRequest,\n SendTransactionRpcResponseError,\n SendTransactionRpcResponseSuccess\n} from '@tonconnect/protocol';\nimport { BadRequestError, TonConnectError, UnknownAppError, UserRejectsError } from 'src/errors';\nimport { UnknownError } from 'src/errors/unknown.error';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { RpcParser } from 'src/parsers/rpc-parser';\nimport { WithoutId } from 'src/utils/types';\n\nconst sendTransactionErrors: Partial<Record<CONNECT_EVENT_ERROR_CODES, typeof TonConnectError>> = {\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};\n\nclass SendTransactionParser extends RpcParser<'sendTransaction'> {\n convertToRpcRequest(\n request: Omit<SendTransactionRequest, 'validUntil'> & { valid_until: number }\n ): WithoutId<SendTransactionRpcRequest> {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n\n parseAndThrowError(response: WithoutId<SendTransactionRpcResponseError>): never {\n let ErrorConstructor: typeof TonConnectError = UnknownError;\n\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n\n throw new ErrorConstructor(response.error.message);\n }\n\n convertFromRpcResponse(\n rpcResponse: WithoutId<SendTransactionRpcResponseSuccess>\n ): SendTransactionResponse {\n return {\n boc: rpcResponse.result\n };\n }\n}\n\nexport const sendTransactionParser = new SendTransactionParser();\n","import { Base64, isNode } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { HttpBridgeGatewayStorage } from 'src/storage/http-bridge-gateway-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { addPathToUrl } from 'src/utils/url';\n\nif (isNode()) {\n try {\n eval(\"global.EventSource = require('eventsource')\");\n eval(\"global.fetch = require('node-fetch')\");\n } catch (err) {\n console.error(err);\n }\n}\n\nexport class BridgeGateway {\n private readonly ssePath = 'events';\n\n private readonly postPath = 'message';\n\n private readonly defaultTtl = 300;\n\n private eventSource: EventSource | undefined;\n\n private isClosed = false;\n\n private readonly bridgeGatewayStorage: HttpBridgeGatewayStorage;\n\n constructor(\n storage: IStorage,\n private readonly bridgeUrl: string,\n public readonly sessionId: string,\n private readonly listener: (msg: BridgeIncomingMessage) => void,\n private readonly errorsListener: (err: Event) => void\n ) {\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage);\n }\n\n public async registerSession(): Promise<void> {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n\n const lastEventId = await this.bridgeGatewayStorage.getLastEventId();\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n\n this.eventSource = new EventSource(url.toString());\n\n return new Promise((resolve, reject) => {\n this.eventSource!.onerror = reject;\n this.eventSource!.onopen! = (): void => {\n this.eventSource!.onerror = this.errorsHandler.bind(this);\n this.eventSource!.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n }\n\n public async send(message: Uint8Array, receiver: string, ttl?: number): Promise<void> {\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 await fetch(url, {\n method: 'post',\n body: Base64.encode(message)\n });\n }\n\n public close(): void {\n this.isClosed = true;\n this.eventSource?.close();\n }\n\n private errorsHandler(e: Event): void {\n if (!this.isClosed) {\n this.errorsListener(e);\n }\n }\n\n private async messagesHandler(e: MessageEvent<string>): Promise<void> {\n await this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n\n if (!this.isClosed) {\n let bridgeIncomingMessage: BridgeIncomingMessage;\n\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n } catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n\n this.listener(bridgeIncomingMessage);\n }\n }\n}\n","import {\n Base64,\n SessionCrypto,\n AppRequest,\n ConnectRequest,\n RpcMethod,\n WalletEvent,\n WalletResponse,\n WalletMessage,\n hexToByteArray,\n ConnectEventSuccess,\n TonAddressItemReply\n} from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletConnectionSourceHTTP } from 'src/models/wallet/wallet-connection-source';\nimport { BridgeGateway } from 'src/provider/bridge/bridge-gateway';\nimport { BridgeConnectionHttp } from 'src/provider/bridge/models/bridge-connection';\nimport { BridgeIncomingMessage } from 'src/provider/bridge/models/bridge-incomming-message';\nimport { BridgePartialSession, BridgeSession } from 'src/provider/bridge/models/bridge-session';\nimport { HTTPProvider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport * as protocol from 'src/resources/protocol.json';\n\nexport class BridgeProvider implements HTTPProvider {\n public static async fromStorage(storage: IStorage): Promise<BridgeProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getHttpConnection();\n return new BridgeProvider(storage, connection.session.walletConnectionSource);\n }\n\n public readonly type = 'http';\n\n private readonly connectionStorage: BridgeConnectionStorage;\n\n private readonly pendingRequests = new Map<\n string,\n (response: WithoutId<WalletResponse<RpcMethod>>) => void\n >();\n\n private nextRequestId = 0;\n\n private session: BridgeSession | BridgePartialSession | null = null;\n\n private bridge: BridgeGateway | null = null;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(\n private readonly storage: IStorage,\n private readonly walletConnectionSource: WalletConnectionSourceHTTP\n ) {\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n\n public connect(message: ConnectRequest): string {\n this.bridge?.close();\n const sessionCrypto = new SessionCrypto();\n\n this.session = {\n sessionCrypto,\n walletConnectionSource: this.walletConnectionSource\n };\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n this.bridge.registerSession();\n\n return this.generateUniversalLink(message);\n }\n\n public async restoreConnection(): Promise<void> {\n this.bridge?.close();\n const storedConnection = await this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n\n this.session = storedConnection.session;\n\n this.bridge = new BridgeGateway(\n this.storage,\n this.walletConnectionSource.bridgeUrl,\n storedConnection.session.sessionCrypto.sessionId,\n this.gatewayListener.bind(this),\n this.gatewayErrorsListener.bind(this)\n );\n\n await this.bridge.registerSession();\n\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n }\n\n public sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\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\n const encodedRequest = this.session!.sessionCrypto.encrypt(\n JSON.stringify({ ...request, id }),\n hexToByteArray(this.session.walletPublicKey)\n );\n\n this.bridge.send(encodedRequest, this.session.walletPublicKey).catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n });\n }\n\n public closeConnection(): void {\n this.bridge?.close();\n this.listeners = [];\n }\n\n public disconnect(): Promise<void> {\n this.bridge?.close();\n this.listeners = [];\n return this.removeBridgeAndSession();\n }\n\n public listen(callback: (e: WalletEvent) => void): () => void {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n\n private async gatewayListener(bridgeIncomingMessage: BridgeIncomingMessage): Promise<void> {\n const walletMessage: WalletMessage = JSON.parse(\n this.session!.sessionCrypto.decrypt(\n Base64.decode(bridgeIncomingMessage.message).toUint8Array(),\n hexToByteArray(bridgeIncomingMessage.from)\n )\n );\n\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\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n\n if (walletMessage.event === 'connect') {\n await this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n\n if (walletMessage.event === 'disconnect') {\n await this.removeBridgeAndSession();\n }\n\n this.listeners.forEach(listener => listener(walletMessage));\n }\n\n private async gatewayErrorsListener(e: Event): Promise<void> {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n }\n\n private async updateSession(\n connectEvent: ConnectEventSuccess,\n walletPublicKey: string\n ): Promise<void> {\n this.session = {\n ...this.session!,\n walletPublicKey\n };\n\n const tonAddrItem: TonAddressItemReply = connectEvent.payload.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply;\n\n const connectEventToSave: BridgeConnectionHttp['connectEvent'] = {\n ...connectEvent,\n payload: {\n ...connectEvent.payload,\n items: [tonAddrItem]\n }\n };\n\n await this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n connectEvent: connectEventToSave\n });\n }\n\n private async removeBridgeAndSession(): Promise<void> {\n this.session = null;\n this.bridge = null;\n await this.connectionStorage.removeConnection();\n }\n\n private generateUniversalLink(message: ConnectRequest): string {\n const url = new URL(this.walletConnectionSource.universalLink);\n url.searchParams.append('v', protocol.version.toString());\n url.searchParams.append('r', JSON.stringify(message));\n url.searchParams.append('r', Base64.encode(JSON.stringify(message), true));\n return url.toString();\n }\n}\n","import { WalletNotInjectedError } from 'src/errors/wallet/wallet-not-injected.error';\nimport {\n AppRequest,\n RpcMethod,\n WalletResponse,\n ConnectRequest,\n WalletEvent,\n ConnectEvent\n} from '@tonconnect/protocol';\nimport { InjectedWalletApi } from 'src/provider/injected/models/injected-wallet-api';\nimport { InternalProvider } from 'src/provider/provider';\nimport * as protocol from 'src/resources/protocol.json';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { WithoutId } from 'src/utils/types';\nimport { getWindow } from 'src/utils/web-api';\n\ntype WindowWithTon<T extends string> = {\n [key in T]: {\n tonconnect: InjectedWalletApi;\n };\n} & Window;\n\nexport class InjectedProvider<T extends string = string> implements InternalProvider {\n private static window = getWindow();\n\n public static async fromStorage(storage: IStorage): Promise<InjectedProvider> {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = await bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(connection.jsBridgeKey);\n }\n\n public static isWalletInjected(injectedWalletKey: string): boolean {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n\n public static isInsideWalletBrowser(injectedWalletKey: string): boolean {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey]!.tonconnect.isWalletBrowser;\n }\n\n return false;\n }\n\n private static isWindowContainsWallet<T extends string>(\n window: Window | undefined,\n injectedWalletKey: string\n ): window is WindowWithTon<T> {\n return (\n !!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey as keyof Window] === 'object' &&\n 'tonconnect' in window[injectedWalletKey as keyof Window]\n );\n }\n\n public readonly type = 'injected';\n\n private unsubscribeCallback: (() => void) | null = null;\n\n private injectedWallet: InjectedWalletApi;\n\n private listenSubscriptions = false;\n\n private listeners: Array<(e: WalletEvent) => void> = [];\n\n constructor(injectedWalletKey: T) {\n const window: Window | undefined | WindowWithTon<T> = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n\n this.injectedWallet = window[injectedWalletKey]!.tonconnect!;\n }\n\n public connect(message: ConnectRequest, auto = false): void {\n this.injectedWallet\n .connect(protocol.version, message, auto)\n .then(connectEvent => {\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n }\n this.listeners.forEach(listener => listener(connectEvent));\n })\n .catch(e => {\n const connectEventError: ConnectEvent = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e?.toString()\n }\n };\n\n this.listeners.forEach(listener => listener(connectEventError));\n });\n }\n\n public async restoreConnection(): Promise<void> {\n try {\n const connectEvent = await this.injectedWallet.restoreConnection();\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listenSubscriptions = true;\n this.listeners.forEach(listener => listener(connectEvent));\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n public closeConnection(): void {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n\n public disconnect(): Promise<void> {\n this.closeAllListeners();\n this.injectedWallet.disconnect();\n return Promise.resolve();\n }\n\n private closeAllListeners(): void {\n this.listenSubscriptions = false;\n this.listeners = [];\n this.unsubscribeCallback?.();\n }\n\n public listen(eventsCallback: (e: WalletEvent) => void): () => void {\n this.listeners.push(eventsCallback);\n return () =>\n (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n\n public async sendRequest<T extends RpcMethod>(\n request: WithoutId<AppRequest<T>>\n ): Promise<WithoutId<WalletResponse<T>>> {\n return this.injectedWallet.send<T>({ ...request, id: '0' });\n }\n\n private makeSubscriptions(): void {\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n}\n","import { SessionCrypto } from '@tonconnect/protocol';\nimport { TonConnectError } from 'src/errors';\nimport { BridgeSessionRaw } from 'src/provider/bridge/models/bridge-session-raw';\nimport {\n BridgeConnection,\n BridgeConnectionHttp,\n BridgeConnectionHttpRaw,\n BridgeConnectionInjected,\n BridgeConnectionRaw\n} from 'src/provider/bridge/models/bridge-connection';\nimport { IStorage } from 'src/storage/models/storage.interface';\n\nexport class BridgeConnectionStorage {\n private readonly storeKey = 'ton-connect-storage_bridge-connection';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeConnection(connection: BridgeConnection): Promise<void> {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n\n const rawSession: BridgeSessionRaw = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n walletConnectionSource: connection.session.walletConnectionSource\n };\n\n const rawConnection: BridgeConnectionHttpRaw = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n }\n\n public async removeConnection(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getConnection(): Promise<BridgeConnection | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n const connection: BridgeConnectionRaw = JSON.parse(stored);\n\n if (connection.type === 'injected') {\n return connection;\n }\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 public async getHttpConnection(): Promise<BridgeConnectionHttp> {\n const connection = await this.getConnection();\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while nothing is stored'\n );\n }\n\n if (connection.type === 'injected') {\n throw new TonConnectError(\n 'Trying to read HTTP connection source while injected connection is stored'\n );\n }\n\n return connection;\n }\n\n public async getInjectedConnection(): Promise<BridgeConnectionInjected> {\n const connection = await this.getConnection();\n\n if (!connection) {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while nothing is stored'\n );\n }\n\n if (connection?.type === 'http') {\n throw new TonConnectError(\n 'Trying to read Injected bridge connection source while HTTP connection is stored'\n );\n }\n\n return connection;\n }\n\n public async storedConnectionType(): Promise<BridgeConnection['type'] | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection: BridgeConnection = JSON.parse(stored);\n return connection.type;\n }\n}\n","import { LocalstorageNotFoundError } from 'src/errors/storage/localstorage-not-found.error';\nimport { IStorage } from 'src/storage/models/storage.interface';\nimport { getWindow } from 'src/utils/web-api';\n\nexport class DefaultStorage implements IStorage {\n private readonly window: Window;\n\n constructor() {\n const window = getWindow();\n\n if (!window?.localStorage) {\n throw new LocalstorageNotFoundError();\n }\n\n this.window = window;\n }\n\n public async getItem(key: string): Promise<string | null> {\n return Promise.resolve(this.window.localStorage.getItem(key));\n }\n\n public async removeItem(key: string): Promise<void> {\n this.window.localStorage.removeItem(key);\n return Promise.resolve();\n }\n\n setItem(key: string, value: string): Promise<void> {\n this.window.localStorage.setItem(key, value);\n return Promise.resolve();\n }\n}\n","import { IStorage } from 'src/storage/models/storage.interface';\n\nexport class HttpBridgeGatewayStorage {\n private readonly storeKey = 'ton-connect-storage_http-bridge-gateway';\n\n constructor(private readonly storage: IStorage) {}\n\n public async storeLastEventId(lastEventId: string): Promise<void> {\n return this.storage.setItem(this.storeKey, lastEventId);\n }\n\n public async removeLastEventId(): Promise<void> {\n return this.storage.removeItem(this.storeKey);\n }\n\n public async getLastEventId(): Promise<string | null> {\n const stored = await this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n\n return stored;\n }\n}\n","import {\n ConnectEventError,\n ConnectEventSuccess,\n ConnectRequest,\n SendTransactionRpcResponseSuccess,\n TonAddressItemReply,\n WalletEvent,\n TonProofItemReply,\n ConnectItem,\n Feature\n} from '@tonconnect/protocol';\nimport { DappMetadataError } from 'src/errors/dapp/dapp-metadata.error';\nimport { ManifestContentErrorError } from 'src/errors/protocol/events/connect/manifest-content-error.error';\nimport { ManifestNotFoundError } from 'src/errors/protocol/events/connect/manifest-not-found.error';\nimport { TonConnectError } from 'src/errors/ton-connect.error';\nimport { WalletAlreadyConnectedError } from 'src/errors/wallet/wallet-already-connected.error';\nimport { WalletNotConnectedError } from 'src/errors/wallet/wallet-not-connected.error';\nimport { WalletNotSupportFeatureError } from 'src/errors/wallet/wallet-not-support-feature.error';\nimport { Account, Wallet, WalletConnectionSource, WalletInfo } from 'src/models';\nimport { SendTransactionRequest, SendTransactionResponse } from 'src/models/methods';\nimport { ConnectAdditionalRequest } from 'src/models/methods/connect/connect-additional-request';\nimport { TonConnectOptions } from 'src/models/ton-connect-options';\nimport {\n isWalletConnectionSourceJS,\n WalletConnectionSourceJS\n} from 'src/models/wallet/wallet-connection-source';\nimport { connectErrorsParser } from 'src/parsers/connect-errors-parser';\nimport { sendTransactionParser } from 'src/parsers/send-transaction-parser';\nimport { BridgeProvider } from 'src/provider/bridge/bridge-provider';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\nimport { Provider } from 'src/provider/provider';\nimport { BridgeConnectionStorage } from 'src/storage/bridge-connection-storage';\nimport { DefaultStorage } from 'src/storage/default-storage';\nimport { ITonConnect } from 'src/ton-connect.interface';\nimport { getWebPageManifest } from 'src/utils/web-api';\nimport { WalletsListManager } from 'src/wallets-list-manager';\n\nexport class TonConnect implements ITonConnect {\n private readonly walletsList = new WalletsListManager();\n\n private readonly dappSettings: Required<TonConnectOptions>;\n\n private readonly bridgeConnectionStorage: BridgeConnectionStorage;\n\n private _wallet: Wallet | null = null;\n\n private provider: Provider | null = null;\n\n private statusChangeSubscriptions: ((walletInfo: Wallet | null) => void)[] = [];\n\n private statusChangeErrorSubscriptions: ((err: TonConnectError) => void)[] = [];\n\n /**\n * Shows if the wallet is connected right now.\n */\n public get connected(): boolean {\n return this._wallet !== null;\n }\n\n /**\n * Current connected account or null if no account is connected.\n */\n public get account(): Account | null {\n return this._wallet?.account || null;\n }\n\n /**\n * Current connected wallet or null if no account is connected.\n */\n public get wallet(): Wallet | null {\n return this._wallet;\n }\n\n private set wallet(value: Wallet | null) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n\n constructor(options?: TonConnectOptions) {\n this.dappSettings = {\n manifestUrl: options?.manifestUrl || getWebPageManifest(),\n storage: options?.storage || new DefaultStorage()\n };\n\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError(\n '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 }\n\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n }\n\n /**\n * Returns available wallets list.\n */\n public getWallets(): Promise<WalletInfo[]> {\n return this.walletsList.getWallets();\n }\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 public onStatusChange(\n callback: (wallet: Wallet | null) => void,\n errorsHandler?: (err: TonConnectError) => void\n ): () => void {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(\n item => item !== callback\n );\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(\n item => item !== errorsHandler\n );\n }\n };\n }\n\n /**\n * Generates universal link for an external wallet and subscribes to the wallet's bridge, or sends connect request to the injected wallet.\n * @param wallet wallet's bridge url and universal link for an external wallet or jsBridge key for the injected wallet.\n * @param request (optional) additional request to pass to the wallet while connect (currently only ton_proof is available).\n * @returns universal link if external wallet was passed or void for the injected wallet.\n */\n public connect<T extends WalletConnectionSource>(\n wallet: T,\n request?: ConnectAdditionalRequest\n ): T extends WalletConnectionSourceJS ? void : string;\n public connect(\n wallet: WalletConnectionSource,\n request?: ConnectAdditionalRequest\n ): void | string {\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n\n this.provider?.closeConnection();\n this.provider = this.createProvider(wallet);\n\n return this.provider.connect(this.createConnectRequest(request));\n }\n\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n public async restoreConnection(): Promise<void> {\n const [bridgeConnectionType, embeddedWallet] = await Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = await BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = await InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = await this.createProvider(embeddedWallet);\n } else {\n return;\n }\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 public async sendTransaction(\n transaction: SendTransactionRequest\n ): Promise<SendTransactionResponse> {\n this.checkConnection();\n this.checkFeatureSupport('SendTransaction');\n\n const { validUntil, ...tx } = transaction;\n const response = await this.provider!.sendRequest(\n sendTransactionParser.convertToRpcRequest({ ...tx, valid_until: validUntil })\n );\n\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n\n return sendTransactionParser.convertFromRpcResponse(\n response as SendTransactionRpcResponseSuccess\n );\n }\n\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n public async disconnect(): Promise<void> {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n await this.provider!.disconnect();\n this.onWalletDisconnected();\n }\n\n private createProvider(wallet: WalletConnectionSource): Provider {\n let provider: Provider;\n\n if (isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(wallet.jsBridgeKey);\n } else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n\n private walletEventsListener(e: WalletEvent): void {\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\n private onWalletConnected(connectEvent: ConnectEventSuccess['payload']): void {\n const tonAccountItem: TonAddressItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_addr'\n ) as TonAddressItemReply | undefined;\n\n const tonProofItem: TonProofItemReply | undefined = connectEvent.items.find(\n item => item.name === 'ton_proof'\n ) as TonProofItemReply | undefined;\n\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n\n const wallet: 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\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n\n this.wallet = wallet;\n }\n\n private onWalletConnectError(connectEventError: ConnectEventError['payload']): void {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n\n console.debug(error);\n\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n\n private onWalletDisconnected(): void {\n this.wallet = null;\n }\n\n private checkConnection(): void | never {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n\n private checkFeatureSupport(feature: Feature): void | never {\n if (!this.wallet?.device.features.includes(feature)) {\n throw new WalletNotSupportFeatureError();\n }\n }\n\n private createConnectRequest(request?: ConnectAdditionalRequest): ConnectRequest {\n const items: ConnectItem[] = [\n {\n name: 'ton_addr'\n }\n ];\n\n if (request) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\n","export function removeUrlLastSlash(url: string): string {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n\n return url;\n}\n\nexport function addPathToUrl(url: string, path: string): string {\n return removeUrlLastSlash(url) + '/' + path;\n}\n","export function getWindow(): Window | undefined {\n if (typeof window === 'undefined') {\n return undefined;\n }\n\n return window;\n}\n\nexport function getDocument(): Document | undefined {\n if (typeof document === 'undefined') {\n return undefined;\n }\n\n return document;\n}\n\nexport function getWebPageManifest(): string {\n const origin = getWindow()?.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n\n return '';\n}\n","import { FetchWalletsError } from 'src/errors/wallets-manager/fetch-wallets.error';\nimport {\n WalletInfoRemote,\n WalletInfoInjected,\n WalletInfo,\n WalletInfoDTO,\n isWalletInfoInjected\n} from 'src/models/wallet/wallet-info';\nimport { InjectedProvider } from 'src/provider/injected/injected-provider';\n\nexport class WalletsListManager {\n private walletsListCache: Promise<WalletInfo[]> | null = null;\n\n private readonly walletsListSource =\n 'https://raw.githubusercontent.com/ton-connect/wallets-list/main/wallets.json';\n\n public async getWallets(): Promise<WalletInfo[]> {\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache.catch(() => (this.walletsListCache = null));\n }\n\n return this.walletsListCache;\n }\n\n public async getEmbeddedWallet(): Promise<WalletInfoInjected | null> {\n const walletsList = await this.getWallets();\n const injectedWallets = walletsList.filter(isWalletInfoInjected);\n\n if (injectedWallets.length !== 1) {\n return null;\n }\n\n return injectedWallets[0]!.embedded ? injectedWallets[0]! : null;\n }\n\n private async fetchWalletsList(): Promise<WalletInfo[]> {\n try {\n const walletsResponse = await fetch(this.walletsListSource);\n const walletsList: WalletInfoDTO[] = await walletsResponse.json();\n\n if (\n !Array.isArray(walletsList) ||\n !walletsList.every(wallet => this.isCorrectWalletConfigDTO(wallet))\n ) {\n throw new FetchWalletsError('Wrong wallets list format');\n }\n\n return this.walletConfigDTOListToWalletConfigList(walletsList);\n } catch (e) {\n throw new FetchWalletsError(e);\n }\n }\n\n private walletConfigDTOListToWalletConfigList(walletConfigDTO: WalletInfoDTO[]): WalletInfo[] {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfig: WalletInfo = {\n name: walletConfigDTO.name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns\n } as WalletInfo;\n\n if ('bridge_url' in walletConfigDTO) {\n (walletConfig as WalletInfoRemote).bridgeUrl = walletConfigDTO.bridge_url;\n (walletConfig as WalletInfoRemote).universalLink = walletConfigDTO.universal_url;\n }\n\n if ('js_bridge_key' in walletConfigDTO) {\n const jsBridgeKey = walletConfigDTO.js_bridge_key;\n (walletConfig as WalletInfoInjected).jsBridgeKey = jsBridgeKey;\n (walletConfig as WalletInfoInjected).injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n (walletConfig as WalletInfoInjected).embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n\n return walletConfig;\n });\n }\n\n private isCorrectWalletConfigDTO(value: unknown): value is WalletInfoDTO {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n\n const containsName = 'name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n\n if (!containsName || !containsImage || !containsAbout) {\n return false;\n }\n\n const containsUniversalUrl = 'universal_url' in value;\n const containsHttpBridge = 'bridge_url' in value;\n const containsJsBridge = 'js_bridge_key' in value;\n\n return (containsHttpBridge && containsUniversalUrl) || containsJsBridge;\n }\n}\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","(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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nvar session_crypto_1 = require(\"./session-crypto\");\nObject.defineProperty(exports, \"SessionCrypto\", { enumerable: true, get: function () { return session_crypto_1.SessionCrypto; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SessionCrypto = void 0;\nconst utils_1 = require(\"../utils\");\nconst tweetnacl_1 = __importDefault(require(\"tweetnacl\"));\nif ((0, utils_1.isNode)()) {\n try {\n eval(\"global.crypto = require('crypto').webcrypto\");\n }\n catch (err) { }\n}\nclass SessionCrypto {\n constructor(keyPair) {\n this.nonceLength = 24;\n this.keyPair = keyPair ? this.createKeypairFromString(keyPair) : this.createKeypair();\n this.sessionId = (0, utils_1.toHexString)(this.keyPair.publicKey);\n }\n createKeypair() {\n return tweetnacl_1.default.box.keyPair();\n }\n createKeypairFromString(keyPair) {\n return {\n publicKey: (0, utils_1.hexToByteArray)(keyPair.publicKey),\n secretKey: (0, utils_1.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 = tweetnacl_1.default.box(encodedMessage, nonce, receiverPublicKey, this.keyPair.secretKey);\n return (0, utils_1.concatUint8Arrays)(nonce, encrypted);\n }\n decrypt(message, senderPublicKey) {\n const [nonce, internalMessage] = (0, utils_1.splitToUint8Arrays)(message, this.nonceLength);\n const decrypted = tweetnacl_1.default.box.open(internalMessage, nonce, senderPublicKey, this.keyPair.secretKey);\n if (!decrypted) {\n throw new Error('Decryption error');\n }\n return new TextDecoder().decode(decrypted);\n }\n stringifyKeypair() {\n return {\n publicKey: (0, utils_1.toHexString)(this.keyPair.publicKey),\n secretKey: (0, utils_1.toHexString)(this.keyPair.secretKey)\n };\n }\n}\nexports.SessionCrypto = SessionCrypto;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./models\"), exports);\n__exportStar(require(\"./crypto\"), exports);\n__exportStar(require(\"./utils\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\nvar CHAIN;\n(function (CHAIN) {\n CHAIN[\"MAINNET\"] = \"-239\";\n CHAIN[\"TESTNET\"] = \"-3\";\n})(CHAIN = exports.CHAIN || (exports.CHAIN = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./request\"), exports);\n__exportStar(require(\"./connect-request\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CHAIN = void 0;\n__exportStar(require(\"./app-message\"), exports);\n__exportStar(require(\"./wallet-message\"), exports);\nvar CHAIN_1 = require(\"./CHAIN\");\nObject.defineProperty(exports, \"CHAIN\", { enumerable: true, get: function () { return CHAIN_1.CHAIN; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./wallet-event\"), exports);\n__exportStar(require(\"./wallet-response\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_ITEM_ERROR_CODES = exports.CONNECT_EVENT_ERROR_CODES = void 0;\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 = exports.CONNECT_EVENT_ERROR_CODES || (exports.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 = exports.CONNECT_ITEM_ERROR_CODES || (exports.CONNECT_ITEM_ERROR_CODES = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CONNECT_EVENT_ERROR_CODES = void 0;\nvar connect_event_1 = require(\"./connect-event\");\nObject.defineProperty(exports, \"CONNECT_EVENT_ERROR_CODES\", { enumerable: true, get: function () { return connect_event_1.CONNECT_EVENT_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\nvar send_transaction_rpc_response_1 = require(\"./send-transaction-rpc-response\");\nObject.defineProperty(exports, \"SEND_TRANSACTION_ERROR_CODES\", { enumerable: true, get: function () { return send_transaction_rpc_response_1.SEND_TRANSACTION_ERROR_CODES; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEND_TRANSACTION_ERROR_CODES = void 0;\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 = exports.SEND_TRANSACTION_ERROR_CODES || (exports.SEND_TRANSACTION_ERROR_CODES = {}));\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Base64 = void 0;\nconst tweetnacl_util_1 = __importDefault(require(\"tweetnacl-util\"));\nfunction encodeUint8Array(value, urlSafe) {\n const encoded = tweetnacl_util_1.default.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 tweetnacl_util_1.default.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 = tweetnacl_util_1.default.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 tweetnacl_util_1.default.encodeUTF8(decodedUint8Array);\n },\n toObject() {\n try {\n return JSON.parse(tweetnacl_util_1.default.encodeUTF8(decodedUint8Array));\n }\n catch (e) {\n return null;\n }\n },\n toUint8Array() {\n return decodedUint8Array;\n }\n };\n}\nexports.Base64 = {\n encode,\n decode\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = void 0;\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}\nexports.concatUint8Arrays = concatUint8Arrays;\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}\nexports.splitToUint8Arrays = splitToUint8Arrays;\nfunction toHexString(byteArray) {\n let hexString = '';\n byteArray.forEach(byte => {\n hexString += ('0' + (byte & 0xff).toString(16)).slice(-2);\n });\n return hexString;\n}\nexports.toHexString = toHexString;\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}\nexports.hexToByteArray = hexToByteArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = exports.hexToByteArray = exports.toHexString = exports.splitToUint8Arrays = exports.concatUint8Arrays = exports.Base64 = void 0;\nvar base64_1 = require(\"./base64\");\nObject.defineProperty(exports, \"Base64\", { enumerable: true, get: function () { return base64_1.Base64; } });\nvar binary_1 = require(\"./binary\");\nObject.defineProperty(exports, \"concatUint8Arrays\", { enumerable: true, get: function () { return binary_1.concatUint8Arrays; } });\nObject.defineProperty(exports, \"splitToUint8Arrays\", { enumerable: true, get: function () { return binary_1.splitToUint8Arrays; } });\nObject.defineProperty(exports, \"toHexString\", { enumerable: true, get: function () { return binary_1.toHexString; } });\nObject.defineProperty(exports, \"hexToByteArray\", { enumerable: true, get: function () { return binary_1.hexToByteArray; } });\nvar web_api_1 = require(\"./web-api\");\nObject.defineProperty(exports, \"isNode\", { enumerable: true, get: function () { return web_api_1.isNode; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNode = void 0;\nfunction isNode() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\nexports.isNode = isNode;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4027);\n"],"names":["DappMetadataError","TonConnectError","constructor","args","super","Object","setPrototypeOf","this","prototype","UnknownError","UserRejectsError","ManifestContentErrorError","message","additionalMessage","ManifestNotFoundError","BadRequestError","UnknownAppError","LocalstorageNotFoundError","Error","options","prefix","WalletAlreadyConnectedError","WalletNotConnectedError","WalletNotInjectedError","WalletNotSupportFeatureError","FetchWalletsError","TonConnect","CHAIN","isWalletInfoInjected","value","connectEventErrorsCodes","CONNECT_EVENT_ERROR_CODES","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","MANIFEST_NOT_FOUND_ERROR","MANIFEST_CONTENT_ERROR","connectErrorsParser","parseError","error","ErrorConstructor","code","isError","response","sendTransactionErrors","SEND_TRANSACTION_ERROR_CODES","SendTransactionParser","RpcParser","convertToRpcRequest","request","method","params","JSON","stringify","parseAndThrowError","convertFromRpcResponse","rpcResponse","boc","result","sendTransactionParser","isNode","eval","err","console","BridgeGateway","storage","bridgeUrl","sessionId","listener","errorsListener","ssePath","postPath","defaultTtl","isClosed","bridgeGatewayStorage","HttpBridgeGatewayStorage","registerSession","url","URL","addPathToUrl","searchParams","append","lastEventId","getLastEventId","eventSource","EventSource","toString","Promise","resolve","reject","onerror","onopen","errorsHandler","bind","onmessage","messagesHandler","send","receiver","ttl","fetch","body","Base64","encode","close","e","storeLastEventId","bridgeIncomingMessage","parse","data","BridgeProvider","walletConnectionSource","type","pendingRequests","Map","nextRequestId","session","bridge","listeners","connectionStorage","BridgeConnectionStorage","static","bridgeConnectionStorage","connection","getHttpConnection","connect","sessionCrypto","SessionCrypto","gatewayListener","gatewayErrorsListener","generateUniversalLink","restoreConnection","storedConnection","forEach","connectEvent","sendRequest","id","encodedRequest","encrypt","hexToByteArray","walletPublicKey","catch","set","closeConnection","disconnect","removeBridgeAndSession","listen","callback","push","filter","walletMessage","decrypt","decode","toUint8Array","from","get","delete","event","updateSession","tonAddrItem","payload","items","find","item","name","connectEventToSave","storeConnection","removeConnection","universalLink","protocol","version","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","window","isWindowContainsWallet","injectedWallet","tonconnect","getInjectedConnection","jsBridgeKey","isWalletBrowser","auto","then","makeSubscriptions","connectEventError","closeAllListeners","eventsCallback","getWindow","storeKey","setItem","rawSession","sessionKeyPair","stringifyKeypair","rawConnection","removeItem","getConnection","stored","getItem","storedConnectionType","localStorage","key","removeLastEventId","walletsList","WalletsListManager","_wallet","provider","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","manifestUrl","getWebPageManifest","DefaultStorage","connected","account","wallet","getWallets","onStatusChange","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","all","getEmbeddedWallet","fromStorage","walletEventsListener","sendTransaction","transaction","checkConnection","checkFeatureSupport","validUntil","tx","valid_until","onWalletDisconnected","isWalletConnectionSourceJS","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","device","address","chain","network","walletStateInit","connectItems","tonProof","debug","feature","features","includes","removeUrlLastSlash","slice","path","document","origin","location","walletsListCache","walletsListSource","fetchWalletsList","injectedWallets","length","embedded","walletsResponse","json","Array","isArray","every","isCorrectWalletConfigDTO","walletConfigDTOListToWalletConfigList","walletConfigDTO","map","walletConfig","imageUrl","image","aboutUrl","about_url","tondns","bridge_url","universal_url","js_bridge_key","injected","isWalletInjected","isInsideWalletBrowser","root","f","module","exports","nacl","util","validateBase64","s","test","TypeError","decodeUTF8","i","d","unescape","encodeURIComponent","b","Uint8Array","charCodeAt","encodeUTF8","arr","String","fromCharCode","decodeURIComponent","escape","join","atob","Buffer","encodeBase64","decodeBase64","call","len","btoa","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","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","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_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_secretbox_BOXZEROBYTES","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","defineProperty","session_crypto_1","enumerable","__importDefault","mod","__esModule","utils_1","tweetnacl_1","createKeypairFromString","createKeypair","toHexString","default","createNonce","receiverPublicKey","encodedMessage","TextEncoder","encrypted","concatUint8Arrays","senderPublicKey","internalMessage","splitToUint8Arrays","decrypted","TextDecoder","__createBinding","create","k2","undefined","desc","getOwnPropertyDescriptor","writable","configurable","__exportStar","hasOwnProperty","CHAIN_1","CONNECT_ITEM_ERROR_CODES","connect_event_1","send_transaction_rpc_response_1","tweetnacl_util_1","urlSafe","uint8Array","encoded","encodeUint8Array","decodedUint8Array","decodeToUint8Array","toObject","buffer1","buffer2","mergedArray","array","index","byteArray","hexString","byte","parseInt","base64_1","binary_1","web_api_1","process","versions","node","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""}
|